Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.praison.ai/llms.txt

Use this file to discover all available pages before exploring further.

Expose Python functions as MCP (Model Context Protocol) tools for Claude Desktop, Cursor, and other MCP clients.

CLI

pip install "praisonaiagents[mcp]"

# Start MCP server
praisonai serve mcp --transport sse --port 8080

# Start with specific server name
praisonai serve mcp --name my-server --transport sse --port 8080
OptionDefaultDescription
--host127.0.0.1Host to bind to
--port8080Server port
--transportstdioTransport: stdio, sse
--name-Server name from config

Python - Custom Tools

from praisonaiagents 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 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 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. No agents.yaml support.

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"]
    }
  }
}
Cursor (.cursor/mcp.json):
{
  "mcpServers": {
    "my-tools": {
      "url": "http://localhost:8080/sse"
    }
  }
}

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}'
Response:
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "tools": [
      {
        "name": "search",
        "description": "Search the web for information.",
        "inputSchema": {
          "type": "object",
          "properties": {"query": {"type": "string"}},
          "required": ["query"]
        }
      }
    ]
  }
}
# 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
  }'
Response:
{
  "jsonrpc": "2.0",
  "id": 2,
  "result": {
    "content": [{"type": "text", "text": "Results for: AI news"}]
  }
}

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"