1. Conduid
  2. Developer Tools
  3. Dms
MCP server · Developer Tools

Dms

Dynamic MCP Server

Unclaimed last commit 11 months ago devtools
43Fair

Scored 4 months ago · breakdown

About Dms

Dms is an MCP server published by syamsulhudauul in the Developer Tools category: dynamic MCP Server. It has been installed 0 times through Conduid.

Six months or more without a commit doesn't mean the server is broken, but check the open issues (0) before depending on it in production.

Install

Install
npx dms

This server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.

Ask AI

Ask AI about Dms

Powered by Claude · Grounded in docs

I know everything about Dms. Ask me about installation, configuration, usage, or troubleshooting.

Security checks

  • ·README presentNot checked yet.
  • ·License declaredNot checked yet.
  • ·Tests presentNot checked yet.
  • ·Dependencies pinnedNot checked yet.
  • ·No dynamic code executionNot checked yet.
  • !Scoped permissionsDoesn't declare a permission scope. Assume it can do anything its process can.

README

Dynamic MCP Server

A dynamic Model Context Protocol (MCP) server implementation in Go that reads tool configurations from JSON files and provides both WebSocket and HTTP interfaces for tool execution.

Features

  • Dynamic Tool Loading: Load tool configurations from JSON files at runtime
  • Session Management: Automatic session creation, refresh, and cleanup
  • Authentication: Support for session tokens and API keys
  • WebSocket Support: Full MCP protocol implementation over WebSocket
  • HTTP API: RESTful endpoints for tool listing and execution
  • Redis Integration: Session storage and management
  • Graceful Shutdown: Proper cleanup of resources and connections

Project Structure

.
├── cmd/
│   └── mcp-server/
│       └── main.go              # Main entry point
├── internal/
│   ├── auth/
│   │   ├── client.go            # Authentication client
│   │   ├── errors.go            # Authentication errors
│   │   └── manager.go           # Session manager
│   ├── config/
│   │   ├── loader.go            # Configuration loader
│   │   └── types.go             # Configuration types
│   └── server/
│       ├── executor.go          # API execution logic
│       ├── server.go            # Core MCP server
│       └── types.go             # Server types
├── go.mod                       # Go module file
├── go.sum                       # Go dependencies
├── config.json                    # Clean configuration file
├── mcp_tool.json                  # Original file with examples (can be removed)
└── README.md                   # This file

Configuration

The server reads tool configurations from JSON files. The main configuration file is config.json which contains:

  • Session Management: Authentication service configuration
  • Tool Definitions: API endpoints, parameters, and authentication requirements
  • Server Settings: Port, timeouts, and other server options

Configuration Structure

{
  "session_management": {
    "auth_service_url": "https://api.yourstore.com/v1/auth",
    "session_endpoint": "/session",
    "refresh_endpoint": "/refresh",
    "validate_endpoint": "/validate",
    "logout_endpoint": "/logout"
  },
  "mcp_server_session_config": {
    "settings": {
      "session_cache_type": "memory",
      "session_cache_ttl": 3600,
      "refresh_before_expiry_seconds": 300,
      "cleanup_interval_seconds": 60,
      "max_sessions_per_apikey": 5
    }
  },
  "tools": {}
}

Adding Tools

To add tools, update the tools section in your configuration file:

{
  "tools": {
    "product_search": {
      "config": {
        "name": "product_search",
        "description": "Search for products in the catalog",
        "method": "GET",
        "url": "https://api.example.com/products/search",
        "auth_required": true,
        "auth_type": "session_token",
        "timeout": 30
      },
      "params_schema": {
        "query": {
          "type": "string",
          "description": "Search query",
          "required": true
        },
        "category": {
          "type": "string",
          "description": "Product category filter"
        }
      }
    }
  }
}

Installation

  1. Clone the repository:
git clone <repository-url>
cd dms
  1. Install dependencies:
go mod tidy
  1. Set up Redis (required for session management):
# Using Docker
docker run -d -p 6379:6379 redis:alpine

# Or install locally
brew install redis  # macOS
sudo apt-get install redis-server  # Ubuntu

Usage

Running the Server

# Run with default configuration (config.json)
go run cmd/mcp-server/main.go

# Run with custom configuration file
go run cmd/mcp-server/main.go -config /path/to/config.json

Environment Variables

  • MCP_CONFIG_FILE: Path to configuration file (default: ./config.json)
  • MCP_PORT: Server port (default: 8080)
  • REDIS_URL: Redis connection URL (default: redis://localhost:6379)

WebSocket Connection

Connect to the MCP server via WebSocket:

ws://localhost:8080/mcp

The server implements the full MCP protocol for tool discovery and execution.

HTTP API

List Available Tools

curl http://localhost:8080/tools

Execute a Tool

curl -X POST http://localhost:8080/tools/product_search \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <session_token>" \
  -d '{"query": "laptop", "category": "electronics"}'

Development

Building

# Build for current platform
go build -o bin/mcp-server cmd/mcp-server/main.go

# Build for Linux
GOOS=linux GOARCH=amd64 go build -o bin/mcp-server-linux cmd/mcp-server/main.go

Testing

# Run tests
go test ./...

# Run tests with coverage
go test -cover ./...

Adding New Tools

  1. Add tool configuration to your JSON file:
{
  "tools": {
    "new_tool": {
      "config": {
        "name": "new_tool",
        "description": "Description of the new tool",
        "method": "POST",
        "url": "https://api.example.com/new-endpoint",
        "auth_required": true,
        "timeout": 30
      },
      "params_schema": {
        "param1": {
          "type": "string",
          "description": "Parameter description",
          "required": true
        }
      }
    }
  }
}
  1. Restart the server to load the new configuration

Authentication

The server supports multiple authentication methods:

  • Session Token: Bearer token authentication
  • API Key: X-API-Key header authentication

Sessions are automatically managed with refresh and cleanup capabilities.

Logging

The server uses structured logging with different levels:

  • INFO: General information
  • WARN: Warning messages
  • ERROR: Error conditions
  • DEBUG: Debug information (when enabled)

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests if applicable
  5. Submit a pull request

License

This project is licensed under the MIT License - see the LICENSE file for details.

README mirrored from the source repository 4 months ago. The original is authoritative.

Questions

About Dms

How do I install Dms?

Run npx dms, then add the server to your MCP client's configuration. Conduid has recorded 0 installs, so the command is known to work with current clients.

Is Dms safe to use with an AI agent?

Its trust score is 43 out of 100 (fair). It passes 0 of 1 static security checks; the failures are listed above. It has no ConduID identity yet, so agent calls to it are not receipted.

Is Dms still maintained?

The last commit was 11 months ago, with 0 open issues. That's long enough that you should check whether the maintainer is responding to issues before depending on it.