Skip to main content
Glama

mcp-toolforge

A meta-MCP server that generates new MCP servers from natural-language tool descriptions.

Given a project name, a short description, and a list of natural-language tool descriptions (e.g. "fetches the weather for a string city and returns a string summary"), mcp-toolforge writes a complete, runnable MCP server project — schema, implementation, tests with real assertions, README, LICENSE — ready to install and run.

flowchart TD
    subgraph Client_Layer["AI Client / Claude Desktop"]
        A["Client (Claude, Cursor, etc.)"]
    end
    subgraph Meta_Server["mcp-toolforge (this repo)"]
        M["mcp_toolforge.server"]
        G["mcp_toolforge.generator"]
    end
    subgraph Generated["Generated Server Project"]
        P["src/<pkg>/__init__.py"]
        S["src/<pkg>/server.py"]
        T["tests/test_<pkg>.py"]
        R["README.md"]
        L["LICENSE"]
        PP["pyproject.toml"]
    end

    A -- "MCP stdio JSON-RPC" --> M
    M -- "generate_server tool call" --> G
    G -- "writes files" --> P
    G -- "writes files" --> S
    G -- "writes files" --> T
    G -- "writes files" --> R
    G -- "writes files" --> L
    G -- "writes files" --> PP

Architecture

┌─────────────────────┐     ┌──────────────────────────┐
│   AI Client         │  stdio  │  mcp-toolforge server  │
│ (Claude, Cursor)    │──JSON──│  (this repo)           │
└─────────────────────┘  RPC    └────────┬───────────────┘
                                          │ generate_server
                                          │  (name, description,
                                          │   tool_descriptions, dest)
                                          ▼
                        ┌────────────────────────────────────┐
                        │  generator.generate_project()      │
                        │  parses NL → ToolSpec → ServerSpec │
                        │  renders: pyproject, server.py,    │
                        │  tests, README, LICENSE            │
                        └────────────────────────────────────┘
                                          │
                        ┌─────────────────┴─────────────────┐
                        │  Example generated servers         │
                        │  • examples/weather_server         │
                        │  • examples/todo_server            │
                        │  • examples/math_server            │
                        └────────────────────────────────────┘

Related MCP server: mcp-creator

Quickstart

Install mcp-toolforge

pip install -e ".[dev]"

Run mcp-toolforge itself (meta-server)

As an MCP server (stdio transport):

{
  "mcpServers": {
    "mcp-toolforge": {
      "command": "python",
      "args": ["-m", "mcp_toolforge.server"],
      "cwd": "/path/to/mcp-toolforge"
    }
  }
}

Or as a CLI that generates a standalone server project:

# Interactive wizard
mcp-toolforge -i

# One-shot
mcp-toolforge \
  --name my_server \
  --description "A server that does X" \
  --tool "fetches the weather for a string city and returns a string summary" \
  --dest ./my_server

Using the generate_server tool

When mcp-toolforge is registered as an MCP server, an AI agent can call:

generate_server(
  name="my_server",
  description="A server that does X",
  tool_descriptions=[
    "fetches the weather for a string city and returns a string summary",
    "adds a string task and returns a string confirmation"
  ],
  dest="/path/to/output"  # optional, defaults to /tmp/mcp-toolforge-gen
)

The tool writes a complete project to dest/<package_name>/ and returns a summary string. The generated server can then be installed and registered with your MCP client independently.

How natural-language parsing works

Each tool description should follow the pattern:

<VERB> [a/an] <type> <name> [, <type> <name>] ... and returns <type> <description>

Examples:

Description

Tool name

Params

fetches the weather for a string city and returns a string summary

fetch

city: string

adds a string task and returns a string confirmation

add

task: string

multiplies two numbers given a number a and number b and returns a number product

multiply

a: number, b: number

lists all todos and returns an array of todo items

list

query: string (fallback)

Recognized parameter types: string, integer, number, boolean, array. If no typed parameters are detected, a free-form query: string parameter is inferred.

Examples

Three example servers are generated into examples/:

Server

Package

Tools

Description

WeatherServer

weather_server

fetch, forecast

Fetches weather info

TodoServer

todo_server

add, list, remove

Manages a todo list

MathServer

math_server

add, multiply, compute

Arithmetic tools

Each example is a fully working MCP server with its own tests:

cd examples/math_server
pip install -e .
pytest

Development

# Install with dev dependencies
pip install -e ".[dev]"

# Run all tests
pytest

# Run end-to-end test against the meta-server over stdio
python e2e_test.py

# Regenerate examples
python make_examples.py

Testing

  • tests/test_generator.py — 16 tests for the generator (parsing, schema inference, file rendering, project creation)

  • tests/test_server.py — 5 tests for the meta-MCP server (tool listing, tool calling, error handling)

  • e2e_test.py — end-to-end test that runs the meta-server as a real stdio subprocess and connects with an MCP Client

  • Each example server ships with 4 tests (12 total across 3 examples)

All tests use real assertions and verify actual file output / tool results.

License

MIT — see LICENSE.

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    An intelligent tool that automates the setup of new Model Context Protocol (MCP) server projects through a conversational interface. It generates project structures, technical specifications, and context-rich documentation to streamline AI-assisted development in TypeScript or Python.
    10
    3
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    A tool that enables AI assistants to conversationally scaffold, build, and publish Python MCP servers to PyPI. It automates the entire development lifecycle, including package naming, tool scaffolding, GitHub repository setup, and package publishing.
    10
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    A production-ready Python scaffold for building Model Context Protocol (MCP) servers using FastMCP. It provides a structured framework for developers and AI agents to rapidly develop, test, and manage custom tools and workflows.
    1
  • A
    license
    A
    quality
    C
    maintenance
    Generates production-ready MCP servers with dual-mode (MCP + CLI) architecture, tests, and documentation. Includes progressive disclosure tools for AI agents and best practices guidance.
    7
    Apache 2.0

View all related MCP servers

Related MCP Connectors

  • MCP server for generating rough-draft project plans from natural-language prompts.

  • MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.

  • MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.

View all MCP Connectors

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/prem-the-dev/mcp-toolforge'

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