MCP Server Framework and Tool Development library for building custom capabilities into agents.
Find a file
Eric Gustin b780e5b807
Fix stdio bugs (#608)
1. Updates `arcade configure claude --from-local` to create a valid json
config for claude desktop. NOTE: The `arcade configure` command needs
some re-work. It's fragile.
2. Fixes bug where stdio servers were sending logs to the wrong sink.
3. Disabled colorized logs for stdio.
4. Added missing dependency `httpx` for servers created with `arcade
new`

## Claude Desktop json configuration for stdio
Personally I like option 1 because the configuration looks the simplest
### Option 1:
Equivalent to `python server.py stdio`
```
{
  "globalShortcut": "Alt+Ctrl+Space",
  "mcpServers": {
    "my_server": {
      "command": "/path/to/my/mcp/server/directory/.venv/bin/python",
      "args": [
        "/path/to/my/mcp/server/directory/server.py",
        "stdio"
      ]
    }
  }
}
```
### Option 2:
Equivalent to `uv run server.py stdio`
```
{
  "mcpServers": {
    "my_server": {
      "command": "uv",
      "args": [
        "run",
        "--directory",
        "/path/to/my/mcp/server/directory",
        "python",
        "server.py",
        "stdio"
      ]
    }
  }
}
```
### Option 3:
Equivalent to `python -m arcade_mcp_server stdio --cwd ./`
```
{
  "mcpServers": {
    "my_server": {
      "command": "/path/to/my/mcp/server/directory/.venv/bin/python",
      "args": [
        "-m",
        "arcade_mcp_server",
        "stdio",
        "--cwd",
        "/path/to/my/mcp/server/directory"
      ]
    }
  }
}
```
2025-10-07 18:53:53 -07:00
.github Fix slack status message on PyPI publish failure (#604) 2025-10-06 13:10:25 -07:00
.vscode CLI Usage (#593) 2025-10-03 10:15:08 -07:00
contrib MCP Local (#563) 2025-09-25 15:28:15 -07:00
docker Fix reference to arcade-box-api in toolkits.txt (#594) 2025-10-01 23:30:12 -03:00
examples Update examples (#601) 2025-10-03 17:37:22 -07:00
libs Fix stdio bugs (#608) 2025-10-07 18:53:53 -07:00
schemas/preview Tool Metadata (#357) 2025-04-16 19:17:36 -08:00
toolkits [MOAR][TRELLO] Adding trello tools (#591) 2025-10-06 13:09:49 -03:00
.editorconfig Fix ruff (#64) 2024-09-25 09:47:30 -07:00
.gitignore docs build commands for arcade-mcp (#587) 2025-09-26 15:30:52 -07:00
.pre-commit-config.yaml MCP Local (#563) 2025-09-25 15:28:15 -07:00
.prettierignore Fix ruff (#64) 2024-09-25 09:47:30 -07:00
.prettierrc.toml Fix ruff (#64) 2024-09-25 09:47:30 -07:00
.ruff.toml MCP Local (#563) 2025-09-25 15:28:15 -07:00
CONTRIBUTING.md MCP Local (#563) 2025-09-25 15:28:15 -07:00
cspell.config.yaml Replace arcade.client with arcadepy (#119) 2024-10-23 15:29:02 -07:00
LICENSE Update README and LICENSE (#220) 2025-01-23 19:43:48 -08:00
Makefile MCP Local (#563) 2025-09-25 15:28:15 -07:00
pyproject.toml Fix stdio bugs (#608) 2025-10-07 18:53:53 -07:00
README.md Fix bug and update readme (#599) 2025-10-03 12:47:32 -07:00
uv_setup.sh MCP Local (#563) 2025-09-25 15:28:15 -07:00
worker.toml Worker Deploy (#278) 2025-03-13 09:02:36 -07:00

DocumentationToolsQuickstartContact Us

Arcade MCP Server Framework

To learn more about Arcade.dev, check out our documentation.

To learn more about the Arcade MCP Server Framework, check out our Arcade MCP documentation

Pst. hey, you, give us a star if you like it!

GitHub stars

Quick Start: Create a New Server

The fastest way to get started is with the arcade new command, which creates a complete MCP server project:

# Install the CLI
uv pip install arcade-mcp

# Create a new server project
arcade new my_server

# Navigate to the project
cd my_server

This generates a complete project with:

  • server.py - Main server file with MCPApp and example tools

  • pyproject.toml - Dependencies and project configuration

  • .env.example - Example .env file containing a secret required by one of the generated tools in server.py

The generated server.py includes proper command-line argument handling:

#!/usr/bin/env python3
import sys
from typing import Annotated
from arcade_mcp_server import MCPApp

app = MCPApp(name="my_server", version="1.0.0")

@app.tool
def greet(name: Annotated[str, "Name to greet"]) -> str:
    """Greet someone by name."""
    return f"Hello, {name}!"

if __name__ == "__main__":
    transport = sys.argv[1] if len(sys.argv) > 1 else "http"
    app.run(transport=transport, host="127.0.0.1", port=8000)

This approach gives you:

  • Complete Project Setup - Everything you need in one command

  • Best Practices - Proper dependency management with pyproject.toml

  • Example Code - Learn from working examples of common patterns

  • Production Ready - Structured for growth and deployment

Running Your Server

Run your server directly with Python:

# Run with HTTP transport (default)
uv run server.py

# Run with stdio transport (for Claude Desktop)
uv run server.py stdio

# Or use python directly
python server.py http
python server.py stdio

Your server will start and listen for connections. With HTTP transport, you can access the API docs at http://127.0.0.1:8000/docs.

Configure MCP Clients

Once your server is running, connect it to your favorite AI assistant:

# Configure Claude Desktop (configures for stdio)
arcade configure claude --from-local

# Configure Cursor (configures for http streamable)
arcade configure cursor --from-local

# Configure VS Code (configures for http streamable)
arcade configure vscode --from-local

Client Libraries

Support and Community