Skip to main content
Glama
tesla0225

MCP Create Server

by tesla0225
README.md
# MCP Create Server

A dynamic MCP server management service that creates, runs, and manages Model Context Protocol (MCP) servers dynamically. This service itself functions as an MCP server and launches/manages other MCP servers as child processes, enabling a flexible MCP ecosystem.

<a href="https://glama.ai/mcp/servers/lnl6xjkkeq">
  <img width="380" height="200" src="https://glama.ai/mcp/servers/lnl6xjkkeq/badge" alt="Create Server MCP server" />
</a>

## Key Features

- Dynamic creation and execution of MCP server code
- Support for TypeScript only (JavaScript and Python support planned for future releases)
- Tool execution on child MCP servers
- Server code updates and restarts
- Removal of unnecessary servers

## Installation

**Note: Docker is the recommended way to run this service**

### Docker Installation (Recommended)

```bash
# Build Docker image
docker build -t mcp-create .

# Run Docker container
docker run -it --rm mcp-create
```

### Manual Installation (TypeScript Only)

```bash
# Clone repository
git clone https://github.com/tesla0225/mcp-create.git
cd mcp-create

# Install dependencies
npm install

# Build
npm run build

# Run
npm start
```

## Integration with Claude Desktop

Add the following to your Claude Desktop configuration file (`claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "mcp-create": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "mcp-create"]
    }
  }
}
```

## Available Tools

| Tool Name | Description | Input Parameters | Output |
|-----------|-------------|-----------------|--------|
| create-server-from-template | Create MCP server from template | language: string | { serverId: string, message: string } |
| execute-tool | Execute tool on server | serverId: string<br>toolName: string<br>args: object | Tool execution result |
| get-server-tools | Get list of server tools | serverId: string | { tools: ToolDefinition[] } |
| delete-server | Delete server | serverId: string | { success: boolean, message: string } |
| list-servers | Get list of running servers | none | { servers: string[] } |

## Usage Examples

### Creating a New Server

```json
{
  "name": "create-server-from-template",
  "arguments": {
    "language": "typescript"
  }
}
```

### Executing a Tool

```json
{
  "name": "execute-tool",
  "arguments": {
    "serverId": "ba7c9a4f-6ba8-4cad-8ec8-a41a08c19fac",
    "toolName": "echo",
    "args": {
      "message": "Hello, dynamic MCP server!"
    }
  }
}
```

## Technical Specifications

- Node.js 18 or higher
- TypeScript (required)
- Dependencies:
  - @modelcontextprotocol/sdk: MCP client/server implementation
  - child_process (Node.js built-in): Child process management
  - fs/promises (Node.js built-in): File operations
  - uuid: Unique server ID generation

## Security Considerations

- **Code Execution Restrictions:** Consider sandboxing as the service executes arbitrary code
- **Resource Limitations:** Set limits on memory, CPU usage, number of files, etc.
- **Process Monitoring:** Monitor and forcibly terminate zombie or runaway processes
- **Path Validation:** Properly validate file paths to prevent directory traversal attacks

## License

MIT

TDQS

B3.2/5.0

Scored across 5 tools

Disambiguation4/5

Most tools have distinct purposes: create, delete, list, get tools, and execute. However, 'execute-tool' could potentially overlap with server-specific tools, but its description clarifies it's for executing tools on servers, making it reasonably distinct. The set covers different aspects of server management without significant ambiguity.

Naming Consistency5/5

All tools follow a consistent verb-noun pattern with hyphens: create-server-from-template, delete-server, execute-tool, get-server-tools, list-servers. The naming is predictable and uniform throughout the set, making it easy for agents to understand the action and target.

Tool Count4/5

With 5 tools, the count is appropriate for a server management domain, covering core operations like creation, deletion, listing, and tool interaction. It's slightly lean but reasonable; adding a tool for server status or configuration might enhance completeness, but the current scope is well-defined.

Completeness3/5

The tool set covers basic server lifecycle (create, delete, list) and tool interaction (get tools, execute), but has notable gaps. Missing operations include updating server configurations, stopping/starting servers, or monitoring server status, which are common in server management. Agents might encounter dead ends when needing to modify existing servers beyond deletion.

Maintenance

ActivityInactive
ResponsivenessNo issues