Skip to main content
Glama
tesla0225

MCP Create Server

by tesla0225

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.

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

Related MCP server: MCPMan

Installation

Note: Docker is the recommended way to run this service

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

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

Manual Installation (TypeScript Only)

# 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):

{
  "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: stringtoolName: stringargs: 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

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

Executing a Tool

{
  "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

Available Tools

5 tools
create-server-from-templateC

Create a new MCP server from a template.

以下のテンプレートコードをベースに、ユーザーの要求に合わせたサーバーを実装してください。 言語に応じて適切なテンプレートを選択し、必要に応じて機能を追加・変更してください。

TypeScriptテンプレート:

import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { 
  CallToolRequestSchema, 
  ListToolsRequestSchema 
} from "@modelcontextprotocol/sdk/types.js";

const server = new Server({
  name: "dynamic-test-server",
  version: "1.0.0"
}, {
  capabilities: {
    tools: {}
  }
});

// ここでツールを実装してください
server.setRequestHandler(ListToolsRequestSchema, async () => {
  return {
    tools: [{
      name: "echo",
      description: "Echo back a message",
      inputSchema: {
        type: "object",
        properties: {
          message: { type: "string" }
        },
        required: ["message"]
      }
    }]
  };
});

server.setRequestHandler(CallToolRequestSchema, async (request) => {
  if (request.params.name === "echo") {
    // TypeScriptの型を適切に扱うため、型アサーションを使用
    const message = request.params.arguments.message as string;
    // または any を使う: const message: any = request.params.arguments.message;
    
    return {
      content: [
        {
          type: "text",
          text: `Echo: ${message}`
        }
      ]
    };
  }
  throw new Error("Tool not found");
});

// Server startup
const transport = new StdioServerTransport();
server.connect(transport);

Pythonテンプレート:

import asyncio
from mcp.server import Server
from mcp.server.stdio import stdio_server

app = Server("dynamic-test-server")

@app.list_tools()
async def list_tools():
    return [
        {
            "name": "echo",
            "description": "Echo back a message",
            "inputSchema": {
                "type": "object",
                "properties": {
                    "message": {"type": "string"}
                },
                "required": ["message"]
            }
        }
    ]

@app.call_tool()
async def call_tool(name, arguments):
    if name == "echo":
        return [{"type": "text", "text": f"Echo: {arguments.get('message')}"}]
    raise ValueError(f"Tool not found: {name}")

async def main():
    async with stdio_server() as streams:
        await app.run(
            streams[0],
            streams[1],
            app.create_initialization_options()
        )

if __name__ == "__main__":
    asyncio.run(main())

注意事項:

  • TypeScript実装時は、引数の型を適切に扱うために型アサーション(as string)を使用するか、 明示的に型を宣言してください(例:const value: string = request.params.arguments.someValue)。

  • 複雑な型を扱う場合は、interface や type を定義して型安全性を確保することをお勧めします。

ユーザーの要求に応じて上記のテンプレートを参考にカスタマイズしてください。その際、基本的な構造を維持しつつ、ツール名や機能を変更できます。

ParametersJSON Schema
NameRequiredDescriptionDefault
codeNoカスタマイズしたサーバーコード。テンプレートを元に変更したコードを入力してください。省略した場合はデフォルトのテンプレートが使用されます。
dependenciesNo使用するライブラリとそのバージョン(例: { "axios": "^1.0.0" })
languageYesThe programming language for the template

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It mentions implementation details (e.g., type handling in TypeScript) and customization guidance, but fails to disclose critical traits: whether this is a read/write operation (implied creation but not stated), permission requirements, side effects (e.g., server deployment), error handling, or output format. For a creation tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is excessively long (over 500 words) and poorly structured, with extensive code blocks and implementation notes that don't efficiently convey tool usage. It's front-loaded with a clear purpose but buried in verbose templates and language-specific details. Sentences like '注意事項:...' and template code could be condensed or moved to external documentation, reducing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (creation operation, 3 parameters, no output schema, no annotations), the description is incomplete. It lacks output expectations (what happens after creation—e.g., server ID, status), error conditions, and integration context with siblings. While it provides template code, it doesn't address how the created server integrates with other tools (e.g., 'execute-tool' on the new server), leaving gaps for an agent to use it effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all three parameters thoroughly (code, dependencies, language). The description adds minimal parameter semantics beyond the schema—it references 'language' through template examples and implies 'code' customization, but doesn't explain parameter interactions or provide additional syntax/format details. Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the purpose: 'Create a new MCP server from a template' with specific verbs ('create', 'implement') and resources ('MCP server', 'template code'). It distinguishes from siblings like 'delete-server' (destructive) and 'list-servers' (read-only) by focusing on creation from templates. However, it doesn't explicitly contrast with 'execute-tool' or 'get-server-tools', which slightly reduces differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context through template examples and customization guidance ('ユーザーの要求に応じて上記のテンプレートを参考にカスタマイズしてください'), but lacks explicit when-to-use rules or alternatives. It doesn't specify prerequisites (e.g., when to use this vs. manually coding a server) or compare with sibling tools like 'execute-tool' for tool execution vs. server creation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete-serverC

Delete a server

ParametersJSON Schema
NameRequiredDescriptionDefault
serverIdYesThe ID of the server

TDQS

C2.7/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden but only states the action ('delete') without disclosing critical behavioral traits. It doesn't mention if deletion is permanent, requires specific permissions, has side effects (e.g., data loss), rate limits, or what happens on success/failure. This is inadequate for a destructive operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence ('Delete a server') that is front-loaded and wastes no words. It directly conveys the core action without unnecessary elaboration, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's destructive nature, lack of annotations, and no output schema, the description is incomplete. It doesn't address behavioral risks, return values, or error handling, leaving significant gaps for an AI agent to understand the tool's full context and implications.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with 'serverId' clearly documented as 'The ID of the server'. The description adds no parameter-specific information beyond what the schema provides, so it meets the baseline of 3 where schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Delete a server' clearly states the action (delete) and resource (server), making the purpose immediately understandable. It distinguishes from siblings like 'create-server-from-template' (creation) and 'list-servers' (listing), but doesn't specify what type of server or deletion scope, keeping it from a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., server must exist), exclusions (e.g., cannot delete if active), or sibling tools like 'execute-tool' that might offer alternative deletion methods. The description alone offers no usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

execute-toolC

Execute a tool on a server

ParametersJSON Schema
NameRequiredDescriptionDefault
argsNoThe arguments to pass to the tool
serverIdYesThe ID of the server
toolNameYesThe name of the tool to execute

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action ('execute') but doesn't disclose traits like whether this is a read-only or destructive operation, authentication needs, rate limits, error handling, or what happens during execution (e.g., side effects, output format). For a tool with no annotations and potential mutation implications, this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with zero waste, making it appropriately sized and front-loaded. However, it's overly concise to the point of under-specification, lacking details that could help an agent use it effectively, which slightly reduces its utility.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of executing a tool (likely a mutation with side effects), no annotations, no output schema, and 3 parameters, the description is incomplete. It doesn't explain return values, error conditions, or behavioral context, leaving critical gaps for an agent to understand how to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, so the schema already documents all three parameters (args, serverId, toolName) with their types and descriptions. The description adds no meaning beyond this, such as explaining the structure of 'args' or how 'toolName' relates to available tools. Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the action ('execute') and target ('a tool on a server'), which provides a basic purpose. However, it's vague about what 'execute' entails (e.g., running a script, command, or function) and doesn't distinguish from siblings like 'get-server-tools' (which likely lists tools) or 'delete-server' (which destroys resources). It avoids tautology by not merely restating the name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a valid server ID or tool name), exclusions, or how it relates to siblings like 'get-server-tools' (which might be needed first to identify tools). The description implies usage but offers no explicit context or comparisons.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-server-toolsC

Get the tools available on a server

ParametersJSON Schema
NameRequiredDescriptionDefault
serverIdYesThe ID of the server

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states 'Get' but does not clarify if this is a read-only operation, what permissions are required, how results are returned (e.g., list format, pagination), or potential errors. This is inadequate for a tool with no annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with no wasted words, making it easy to parse. It is appropriately sized for a simple tool, though it could benefit from more detail to improve other dimensions without sacrificing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description is incomplete. It does not explain what 'tools available' means (e.g., types, formats), how results are structured, or any behavioral aspects like error handling. For a tool with one parameter but lacking structured context, this is insufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, documenting the 'serverId' parameter fully. The description does not add any meaning beyond the schema, such as explaining what constitutes a valid server ID or how to obtain it. Baseline 3 is appropriate as the schema handles parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get') and resource ('tools available on a server'), making the purpose understandable. However, it does not differentiate from sibling tools like 'list-servers' or 'execute-tool', which also involve server-related operations, so it lacks specific distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, such as needing a valid server ID, or compare it to siblings like 'list-servers' for server enumeration or 'execute-tool' for tool execution, leaving usage context unclear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list-serversB

List all running servers

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'List all running servers' implies a read-only operation that returns server information, it lacks details on permissions, rate limits, pagination, or response format. For a tool with zero annotation coverage, this is a significant gap in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description 'List all running servers' is a single, efficient sentence that front-loads the core purpose with zero waste. It's appropriately sized for a simple tool with no parameters, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (0 parameters, no output schema, no annotations), the description is minimally adequate. It states what the tool does but lacks behavioral context like response format or usage guidelines. Without annotations or output schema, the description should ideally provide more completeness, but it meets the basic requirement for a low-complexity tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description doesn't add parameter details, which is appropriate since there are none. A baseline score of 4 is given as the description doesn't need to compensate for any parameter gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'List all running servers' clearly states the verb ('List') and resource ('running servers'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'get-server-tools', which might also retrieve server-related information but focuses on tools rather than servers themselves.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, context for usage, or compare it to siblings like 'get-server-tools' (which might list tools on servers) or 'create-server-from-template' (for creating servers). This leaves the agent without explicit usage instructions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

B3.2/5.0
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
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    A lightweight framework for building and running Model Context Protocol (MCP) servers using FastMCP, providing tools for development, debugging, and server management.
    4
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server manager that acts as a proxy/multiplexer, enabling connections to multiple MCP servers simultaneously and providing JavaScript code execution with access to all connected MCP tools. Supports both stdio and HTTP transports with OAuth authentication, batch tool invocation, and dynamic server management.
    28
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    Dynamic MCP server for Node.js enabling runtime tool creation, management, and execution in isolated sandboxes (Docker or Node).
    8
    12
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    An enhanced dynamic MCP server management service that creates, runs, and manages Model Context Protocol servers with multi-language support and strict parameter validation.
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/tesla0225/mcp-create'

If you have feedback or need assistance with the MCP directory API, please join our Discord server