MCP Create Server
The MCP Create Server is a dynamic management service that allows you to create, run, and interact with MCP servers. Key capabilities include:
Server Creation: Dynamically create MCP servers from templates using TypeScript or Python
Server Management: List running servers, delete existing servers, and update/restart server code
Tool Execution: Execute specific tools on child servers and get lists of available tools
Process Monitoring: Ensures security with sandboxing and resource limits
Flexible Ecosystem: Supports TypeScript (with Python planned) and integrates with Claude Desktop
Provides containerized deployment of MCP servers through Docker, enabling isolated execution environments for dynamically created servers.
Leverages Node.js runtime for executing MCP servers, with specific requirements for Node.js 18 or higher to support the server functionality.
Offers template-based creation of Python MCP servers, enabling development and execution of Python-based Model Context Protocol implementations.
Supports creation of MCP servers using TypeScript, with templates and runtime execution capabilities for TypeScript-based server implementations.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP Create Servercreate a new TypeScript MCP server from template"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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
Docker Installation (Recommended)
# Build Docker image
docker build -t mcp-create .
# Run Docker container
docker run -it --rm mcp-createManual 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 startIntegration 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 toolscreate-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 を定義して型安全性を確保することをお勧めします。
ユーザーの要求に応じて上記のテンプレートを参考にカスタマイズしてください。その際、基本的な構造を維持しつつ、ツール名や機能を変更できます。
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | カスタマイズしたサーバーコード。テンプレートを元に変更したコードを入力してください。省略した場合はデフォルトのテンプレートが使用されます。 | |
| dependencies | No | 使用するライブラリとそのバージョン(例: { "axios": "^1.0.0" }) | |
| language | Yes | The programming language for the template |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| serverId | Yes | The ID of the server |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| args | No | The arguments to pass to the tool | |
| serverId | Yes | The ID of the server | |
| toolName | Yes | The name of the tool to execute |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| serverId | Yes | The ID of the server |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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
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.
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.
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.
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
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
MCP server for building and testing AI agents with multi-model experimentation and insights.
MCP server for progressive tool usage at any scale (see https://klavis.ai)
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Create, deploy, and operate MCP servers directly from your GitHub repositories.
Related MCP Servers
- AlicenseAqualityDmaintenanceA lightweight framework for building and running Model Context Protocol (MCP) servers using FastMCP, providing tools for development, debugging, and server management.4MIT
- AlicenseNot gradedqualityDmaintenanceA 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.28MIT
- AlicenseBqualityCmaintenanceDynamic MCP server for Node.js enabling runtime tool creation, management, and execution in isolated sandboxes (Docker or Node).8121MIT
- AlicenseNot gradedqualityDmaintenanceAn 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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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