One command to turn any software into an MCP server
Project description
MCP-Anything
Describe what you want. Get a production-ready MCP server.
MCP-Anything turns any data source into a fully implemented MCP server — from a plain-language brief describing what agents should be able to do. It also works directly from codebases, OpenAPI specs, gRPC protos, and GraphQL schemas. Two modes, one tool.
Quick start
1. Install
pip install mcp-anything
export ANTHROPIC_API_KEY=sk-...
2. Write a brief — describe your domain and point at your data source
# my-api.yaml
server_name: payments-mcp
domain_description: >
A payment API for managing customers, invoices, and subscriptions.
use_cases:
- "Create a customer with email and name"
- "Issue an invoice and send it to the customer"
- "Create and cancel subscriptions"
- "Issue refunds"
data_source_path: ./openapi.json # local file or URL
data_source_kind: openapi # openapi | graphql | grpc
auth_method: bearer_token
backend_target: fastmcp
3. Build
mcp-anything build --brief my-api.yaml -o ./my-mcp-server
4. Run
cd my-mcp-server
pip install -e .
python -m mcp_payments_mcp.server
That's it. You now have a running MCP server. Add it to your agent:
{
"mcpServers": {
"payments": { "command": "python", "args": ["-m", "mcp_payments_mcp.server"] }
}
}
Two modes
build — brief-driven (recommended)
The LLM reads your brief, groups related operations into ergonomic tools, writes agent-optimised descriptions, and generates the full server package including a SKILL.md agent guide and an eval harness.
generate — codebase scanner (no brief required)
Point at source code or a spec URL. Static detection, no LLM needed.
# From a local codebase
mcp-anything generate /path/to/your/app
# From a URL (OpenAPI, GraphQL, gRPC)
mcp-anything generate https://api.example.com/openapi.json
What you get
Both modes produce a complete, pip-installable package:
my-mcp-server/
├── mcp_<name>/
│ ├── server.py # FastMCP server (stdio or HTTP)
│ ├── tools/ # One file per tool, HTTP calls via httpx
│ ├── discovery.py # GET /.well-known/mcp
│ └── telemetry.py # Anonymised per-call logging
├── SKILL.md # Agent-readable usage guide (recipes, gotchas, anti-patterns)
├── quick_queries.json # Eval set derived from your use cases
├── eval_cases.json # LLM-generated evaluation cases
├── conformance_report.json
├── Dockerfile
└── pyproject.toml
SKILL.md is the key output. It's a structured document written for AI agents — not humans — that lists every tool with its parameters, operation modes, usage recipes, gotchas, and anti-patterns. Agents read it before making any calls, which dramatically reduces hallucinations and misuse.
How tools get designed
The LLM follows 2026 MCP design rules automatically:
Group CRUD. Three or more operations on the same resource become a single manage_X(operation=...) tool. Fewer tools, broader coverage, easier for agents to use.
Full lifecycle. The tool design phase reads your use cases and maps them to full API coverage — not just the happy path. Create, read, update, delete, list, and any lifecycle transitions (confirm, capture, cancel, finalize, void) are all included.
Compact + verbose. Every tool has a verbose flag. By default it returns only the essential fields. Pass verbose=true to get the full API response with metadata.
Discovery endpoint. Every server exposes GET /.well-known/mcp listing all tools and their disclosure levels.
Concrete example: Stripe
The official Stripe agent toolkit ships 15 flat tools covering create and list operations only. No updates, no deletes, no payment intent lifecycle, no checkout sessions, no coupons.
Running mcp-anything against the Stripe OpenAPI spec with a 41-item brief:
mcp-anything build --brief stripe.yaml -o ./stripe-mcp --target fastmcp
| Official Stripe toolkit | mcp-anything | |
|---|---|---|
| Tools | 15 flat tools | 13 grouped tools |
| Customers | create, list | create, read, update, delete, list |
| Payment intents | list only | create, read, list, confirm, capture, cancel |
| Invoices | create, finalize | create, read, list, send, pay, void |
| Subscriptions | create, cancel | create, read, update, cancel, resume, list |
| Checkout sessions | ✗ | create, retrieve, expire |
| Coupons & promo codes | ✗ | full support |
13 tools, 100% brief coverage, 10+ capabilities absent from the official toolkit.
Concrete example: GitHub
The official GitHub MCP server is a hand-built Go project. Building it took months.
mcp-anything build --brief github.yaml -o ./github-mcp
| Official (hand-built) | mcp-anything | |
|---|---|---|
| Build time | Months | ~30 seconds |
| Tools | 51 flat tools | 22 grouped tools |
| Coverage | Curated subset | 100% of in-scope operations |
| Language | Go | Python |
22 tools cover the same 51 operations — a 57% reduction in surface area with no loss of capability. The grouping (manage_repository, manage_issue, manage_pull_request, etc.) is what agents actually prefer.
See examples/github-server/ for the full generated output.
Output targets
fastmcp (default) |
mcp-use |
|
|---|---|---|
| Language | Python | TypeScript |
| SDK | FastMCP | mcp-use |
| Transport | stdio / HTTP | HTTP (port 3000) |
| Install | pip install -e . |
npm install && npm run dev |
mcp-anything build --brief my-api.yaml --target mcp-use
mcp-anything generate /path/to/app --target mcp-use
Transport
stdio (default): server runs as a local subprocess.
{
"mcpServers": {
"my-app": { "command": "mcp-my-app", "args": [] }
}
}
HTTP (recommended for shared/remote use):
mcp-anything generate /path/to/app --transport http
# server runs at http://localhost:8000/sse
{
"mcpServers": {
"my-app": { "url": "http://localhost:8000/sse" }
}
}
HTTP lets you deploy once and connect from any agent session, CI pipeline, or team member.
Framework support (generate mode)
27 source types across 8 ecosystems. Static detection, no LLM required.
| Ecosystem | Framework / Source |
|---|---|
| Python | argparse, Click, Typer, Flask, FastAPI, Django REST Framework |
| Java / Kotlin | Spring Boot, Spring MVC, JAX-RS / Quarkus, Micronaut |
| JavaScript / TypeScript | Express.js |
| Go | Gin, Echo, Chi, gorilla/mux, Fiber, net/http |
| Ruby | Rails |
| Rust | Actix-web, Axum, Rocket, Warp |
| API Specs | OpenAPI 3.x / Swagger 2.x, GraphQL SDL, gRPC / Protobuf |
| Protocol / IPC | WebSocket (JSON-RPC), MQTT, ZeroMQ, XML-RPC, raw socket, D-Bus |
Scoping
Control which capabilities get exposed without editing the generated code.
# Include / exclude by glob
mcp-anything generate ./my-app --include "/api/v2/*" --exclude "/internal/*"
# Review mode: pause after analysis, curate scope.yaml, then resume
mcp-anything generate ./my-app --review
vim mcp-my-app-server/scope.yaml
mcp-anything generate ./my-app --resume
# Reusable scope file
mcp-anything generate ./my-app --scope-file ./mcp-scope.yaml
Roadmap
See ROADMAP.md for the full roadmap. See CONTRIBUTING.md to contribute.
Star History
Stop writing MCP servers by hand.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mcp_anything-0.2.0-py3-none-any.whl.
File metadata
- Download URL: mcp_anything-0.2.0-py3-none-any.whl
- Upload date:
- Size: 220.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5a179e99118817f24d53ee889894e276aaebd8de1d8d1c44d61df176fc8d7e75
|
|
| MD5 |
88d9165bfb92b3644c22a4fa05a2e5c1
|
|
| BLAKE2b-256 |
4ffd4d15769703215419144341856f24d90b5c5b2a6385b5ffbcc2e6d26849e5
|