Skip to main content
Expose Python functions as MCP tools for Claude Desktop, Cursor, and other MCP clients.

CLI

pip install "praisonaiagents[mcp]"

Python - Custom Tools

from praisonaiagents.mcp import ToolsMCPServer

def search(query: str) -> str:
    """Search the web for information."""
    return f"Results for: {query}"

def calculate(expression: str) -> str:
    """Calculate a math expression."""
    return str(eval(expression))

server = ToolsMCPServer(name="my-tools")
server.register_tool(search)
server.register_tool(calculate)
server.run(transport="sse", host="0.0.0.0", port=8080)
Expected Output:
🚀 Starting MCP server 'my-tools' with SSE transport
📡 SSE endpoint: http://0.0.0.0:8080/sse
🛠️  Available tools: search, calculate
Verify:
curl http://localhost:8080/sse

Python - Built-in Tools

from praisonaiagents.mcp import launch_tools_mcp_server

launch_tools_mcp_server(
    tool_names=["tavily_search", "wikipedia_search"],
    transport="sse",
    port=8080
)
Expected Output:
🚀 Starting MCP server 'praisonai-tools' with SSE transport
📡 SSE endpoint: http://0.0.0.0:8080/sse
🛠️  Available tools: tavily_search, wikipedia_search

Python - Stdio Transport

For Claude Desktop local integration:
from praisonaiagents.mcp import ToolsMCPServer

def my_tool(query: str) -> str:
    """Process a query."""
    return f"Processed: {query}"

server = ToolsMCPServer(name="my-tools", tools=[my_tool])
server.run(transport="stdio")
Expected Output:
🚀 Starting MCP server 'my-tools' with stdio transport
🛠️  Available tools: my_tool

agents.yaml

Tools MCP server is Python-only. Use the Python SDK.

MCP Endpoints (SSE Transport)

EndpointMethodDescription
/sseGETSSE connection for MCP
/messages/POSTSend MCP messages

ToolsMCPServer Parameters

ParameterTypeDefaultDescription
namestrpraisonai-toolsServer name
toolslistNoneInitial tools to register
debugboolFalseEnable debug logging

launch_tools_mcp_server Parameters

ParameterTypeDefaultDescription
toolslistNoneCustom tool functions
tool_nameslistNoneBuilt-in tool names
namestrpraisonai-toolsServer name
transportstrstdiostdio or sse
hoststr0.0.0.0Host for SSE
portint8080Port for SSE

Connect MCP Client

Claude Desktop (claude_desktop_config.json): For SSE transport:
{
  "mcpServers": {
    "my-tools": {
      "url": "http://localhost:8080/sse"
    }
  }
}
For stdio transport:
{
  "mcpServers": {
    "my-tools": {
      "command": "python",
      "args": ["/path/to/mcp_server.py"]
    }
  }
}

Test MCP Tools

# List tools
curl -X POST http://localhost:8080/messages/ \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc": "2.0", "method": "tools/list", "id": 1}'

# Call tool
curl -X POST http://localhost:8080/messages/ \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "method": "tools/call",
    "params": {"name": "search", "arguments": {"query": "AI news"}},
    "id": 2
  }'

Troubleshooting

IssueFix
Port in uselsof -i :8080
Missing depspip install "praisonaiagents[mcp]"
Tool not foundCheck tool is registered before run()
SSE not connectingCheck firewall, use host="0.0.0.0"