
Easily convert tool, agents and orchestrators from existing agent frameworks to MCP servers
Easily convert tool, agents and orchestrators from existing agent frameworks to MCP servers
automcp allows you to easily convert tools, agents and orchestrators from existing agent frameworks into MCP servers, that can then be accessed by standardized interfaces via clients like Cursor and Claude Desktop.
We currently support deployment of agents, tools, and orchestrators as MCP servers for the following agent frameworks:
Install from PyPI:
# Basic installation
pip install naptha-automcp
# UV
uv add naptha-automcpOr install from source:
git clone https://github.com/napthaai/automcp.git
cd automcp
uv venv
source .venv/bin/activate
pip install -e .Create a new MCP server for your project:
Navigate to your project directory with your agent implementation:
cd your-project-directoryGenerate the MCP server files via CLI with one of the following flags (crewai, langgraph, llamaindex, openai, pydantic, mcp_agent):
automcp init -f crewaiEdit the generated run_mcp.py file to configure your agent:
# Replace these imports with your actual agent classes
from your_module import YourCrewClass
# Define the input schema
class InputSchema(BaseModel):
parameter1: str
parameter2: str
# Set your agent details
name = "<YOUR_AGENT_NAME>"
description = "<YOUR_AGENT_DESCRIPTION>"
# For CrewAI projects
mcp_crewai = create_crewai_adapter(
orchestrator_instance=YourCrewClass().crew(),
name=name,
description=description,
input_schema=InputSchema,
)Install dependencies and run your MCP server:
automcp serve -t sseWhen you run automcp init -f <FRAMEWORK>, the following file is generated:
This is the main file that sets up and runs your MCP server. It contains:
You'll need to edit this file to:
The repository includes examples for each supported framework:
# Clone the repository
git clone https://github.com/NapthaAI/automcp.git
cd automcp
# Install automcp in development mode
pip install -e .
# Navigate to an example directory
cd examples/crewai/marketing_agents
# Generate the MCP server files (use the appropriate framework)
automcp init -f crewai
# Edit the generated run_mcp.py file to import and configure the example agent
# (See the specific example's README for details)
# Add a .env file with necessary environmental variables
# Install dependencies and run
automcp serve -t sseEach example follows the same workflow as a regular project:
automcp init -f <FRAMEWORK> to generate the server filesrun_mcp.py to import and configure the example agentautomcp serve -t sseHere's what a typical configured run_mcp.py looks like for a CrewAI example:
import warnings
from typing import Any
from automcp.adapters.crewai import create_crewai_adapter
from pydantic import BaseModel
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("MCP Server")
warnings.filterwarnings("ignore")
from crew import MarketingPostsCrew
class InputSchema(BaseModel):
project_description: str
customer_domain: str
name = "marketing_posts_crew"
description = "A crew that posts marketing posts to a social media platform"
# Create an adapter for crewai
mcp_crewai = create_crewai_adapter(
orchestrator_instance=MarketingPostsCrew().crew(),
name=name,
description=description,
input_schema=InputSchema,
)
mcp.add_tool(
mcp_crewai,
name=name,
description=description
)
# Server entrypoints
def serve_sse():
mcp.run(transport="sse")
def serve_stdio():
# Redirect stderr to suppress warnings that bypass the filters
import os
import sys
class NullWriter:
def write(self, *args, **kwargs):
pass
def flush(self, *args, **kwargs):
pass
# Save the original stderr
original_stderr = sys.stderr
# Replace stderr with our null writer to prevent warnings from corrupting STDIO
sys.stderr = NullWriter()
# Set environment variable to ignore Python warnings
os.environ["PYTHONWARNINGS"] = "ignore"
try:
mcp.run(transport="stdio")
finally:
# Restore stderr for normal operation
sys.stderr = original_stderr
if __name__ == "__main__":
import sys
if len(sys.argv) > 1 and sys.argv[1] == "sse":
serve_sse()
else:
serve_stdio()After setting up your files, you can run your server using one of these methods:
# Using the automcp CLI
automcp serve -t stdio # STDIO transport
automcp serve -t sse # SSE transport
# Or run the Python file directly
python run_mcp.py # STDIO transport
python run_mcp.py sse # SSE transport
# Or with uv run (if configured in pyproject.toml)
uv run serve_stdio
uv run serve_sseNote about transport modes:
python run_mcp.py sse or automcp serve -t sseIf you want to use the uv run commands, add the following to your pyproject.toml:
[tool.uv.scripts]
serve_stdio = "python run_mcp.py"
serve_sse = "python run_mcp.py sse"Naptha supports deploying your newly-created MCP server to our MCP servers-as-a-service platform! It's easy to get started.
Naptha's MCPaaS platform requires your repository be set up with uv.
This means you need a couple configurations in your pyproject.toml.
First, make sure the run_mcp.py file generated by naptha-automcp is the root of your repository.
Second, make sure your pyproject.toml has the following configurations:
[build-system]
requires = [ "hatchling",]
build-backend = "hatchling.build"
[project.scripts]
serve_stdio = "run_mcp:serve_stdio"
serve_sse = "run_mcp:serve_sse"
[tool.hatch.metadata]
allow-direct-references = true
[tool.hatch.build.targets.wheel]
include = [ "run_mcp.py",]
exclude = [ "__pycache__", "*.pyc",]
sources = [ ".",]
packages = ["."]If your agent is in a subdirectory / package of your repository:
pyproject.toml
run_mcp.py
my_agent/
|---| __init__.py
| agent.pyMake sure that it's imported like this in run_mcp.py:
from my_agent.agentNot like below, since this will cause the build to fail:
from .my_agent.agentOnce you have configured everything, commit and push your code (but not your environment variables!) to github. Then, you can test it to make sure you set up everything correctly:
uvx --from https://github.com/your-username/your-repo serve_sseIf this results in your MCP server being launched on port 8000 successfully, you're good to go!
OPENAI_API_KEY, etc.To integrate with Cursor IDE, create a .cursor folder in your project root and add an mcp.json file with the following configuration:
{
"mcpServers": {
"crew-name-stdio": {
"type": "stdio",
"command": "/absolute/path/to/your/.venv/bin/uv",
"args": [
"--directory",
"/absolute/path/to/your/project_dir",
"run",
"serve_stdio"
],
"env": {
"OPENAI_API_KEY": "sk-",
"SERPER_API_KEY": ""
}
},
"crew-name-python": {
"type": "stdio",
"command": "/absolute/path/to/your/.venv/bin/python",
"args": [
"/absolute/path/to/your/project_dir/run_mcp.py"
],
"env": {
"OPENAI_API_KEY": "sk-",
"SERPER_API_KEY": ""
}
},
"crew-name-automcp": {
"type": "stdio",
"command": "/absolute/path/to/your/.venv/bin/automcp",
"args": [
"serve",
"-t",
"stdio"
],
"cwd": "/absolute/path/to/your/project_dir",
"env": {
"OPENAI_API_KEY": "sk-",
"SERPER_API_KEY": ""
}
},
"crew-name-sse": {
"type": "sse",
"url": "http://localhost:8000/sse"
}
}
}Note: Be sure to replace all placeholder paths with absolute paths to your actual files and directories.
Push your project to GitHub and use:
{
"mcpServers": {
"My Agent": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/your-username/your-repo",
"serve_stdio"
],
"env": {
"OPENAI_API_KEY": "your-key-here"
}
}
}
}Want to add support for a new agent framework? Here's how:
# automcp/adapters/framework.py
import json
import contextlib
import io
from typing import Any, Callable, Type
from pydantic import BaseModel
def create_framework_adapter(
agent_instance: Any,
name: str,
description: str,
input_schema: Type[BaseModel],
) -> Callable:
"""Doc string for your function"""
# Get the field names and types from the input schema
schema_fields = input_schema.model_fields
# Create the parameter string for the function signature
params_str = ", ".join(
f"{field_name}: {field_info.annotation.__name__}"
for field_name, field_info in schema_fields.items()
)
# Create the function body that constructs the input schema
# Note: You may need to adjust the method calls (kickoff, model_dump_json)
# to match your framework's specific API
body_str = f"""def run_agent({params_str}):
inputs = input_schema({', '.join(f'{name}={name}' for name in schema_fields)})
with contextlib.redirect_stdout(io.StringIO()):
result = agent_instance.framework_specific_run(inputs=inputs.model_dump())
return result.framework_specific_result()
"""
# Create a namespace for the function
namespace = {
"input_schema": input_schema,
"agent_instance": agent_instance,
"json": json,
"contextlib": contextlib,
"io": io,
}
# Execute the function definition in the namespace
exec(body_str, namespace)
# Get the created function
run_agent = namespace["run_agent"]
# Add proper function metadata
run_agent.__name__ = name
run_agent.__doc__ = description
return run_agentnpx @modelcontextprotocol/inspectorPick your client and paste the snippet. Each one is the same server, written the way that client expects it.
claude mcp add crew-name-sse --transport sse http://localhost:8000/sse{
"mcpServers": {
"crew-name-sse": {
"url": "http://localhost:8000/sse",
"type": "sse"
}
}
}code --add-mcp '{"name":"crew-name-sse","url":"http://localhost:8000/sse","type":"sse"}'Can run locally or connect to a hosted endpoint. Pick the variant that fits your setup.
Paste this prompt into your agent. It reads this page and does the setup for you.
Read https://aiagentslisting.com/mcp/automcp to learn what the "automcp" MCP server does and how to install it. Add it to my coding agent's MCP configuration as documented on that page, then confirm the server connects and list the tools it exposes.Agents can also browse this directory over MCP at https://aiagentslisting.com/api/mcp
This server doesn't publish a machine-readable tool manifest, and it doesn't expose a public endpoint we could ask. Connect the server locally to see what it exposes.
Maintain this server? Claiming proves you own the listing and earns the last 4 points.
Claim this listingPaste this line near the top of your repository's README. The badge always renders the current score.
[](https://aiagentslisting.com/mcp/automcp)Nothing comparable is listed yet.
v0.1.1Release notesv0.1.0Release notesConnect to the AI Agents Listing MCP server at https://aiagentslisting.com/api/mcp using the HTTP transport and complete the sign-in when it asks. Then call the submit_review tool for the listing "automcp" with a rating from 1 to 5 and a short note on what worked and what did not.No reviews yet
Be the first to share your experience with this tool.
One email a week. New agents, MCP servers and skills, and what is actually getting traction.