# Release Candidate 2 ## This PR: - [x] No more confusing 307 redirect logs when using `/mcp` instead of `/mcp/` (requested by @shubcodes) - [x] Fix bug in `arcade configure` for Python < 3.12 (reported by @evantahler - [x] Fix bug where tools with unsatisfied secret requirements could still be executed (reported by @evantahler, @shubcodes) - [x] Auth providers can now be imported via `from arcade_mcp_server.auth import Reddit` (requested by @shubcodes) - [x] Add complete E2E oauth flow for tool calls with informational errors about how to log into arcade and where to go to authorize (requested by @evantahler, @shubcodes) - [x] Add OAuth tool in `arcade new`'s generated server (requested by @shubcodes) - [x] Standardize on defaulting to running servers on port 8000 - [x] Improve credentials.yaml reading logic - [x] CLI user friendliness (requested by @Spartee) - [x] Remove `arcade serve` CLI command - [x] Fix race condition in `arcade logout` - [x] Update docs for desired developer onboarding flow ## Next PRs: - Get `arcade deploy` working for MCP servers. (Command is hidden for now) - Rename all occurrences of `toolkit` to `server`/`tools` and rename all occurrences of `worker` to `server`
3.5 KiB
arcade mcp Command
The arcade mcp command is the recommended way to run MCP servers. It automatically discovers tools in your project, creates a server, and runs it with your chosen transport.
Installation
uv pip install arcade-mcp
The arcade-mcp package includes the CLI and the arcade-mcp-server library.
Command Line Options
usage: arcade mcp [-h] [--host HOST] [--port PORT]
[--tool-package PACKAGE] [--discover-installed]
[--show-packages] [--reload] [--debug]
[--env-file ENV_FILE] [--name NAME] [--version VERSION]
[--cwd CWD]
[transport]
Run Arcade MCP Server
positional arguments:
transport Transport type: stdio, http (default: http)
optional arguments:
-h, --help show this help message and exit
--host HOST Host to bind to (HTTP mode only, default: 127.0.0.1)
--port PORT Port to bind to (HTTP mode only, default: 8000)
--tool-package PACKAGE, --package PACKAGE, -p PACKAGE
Specific tool package to load (e.g., 'github' for arcade-github)
--discover-installed, --all
Discover all installed arcade tool packages
--show-packages Show loaded packages during discovery
--reload Enable auto-reload on code changes (HTTP mode only)
--debug Enable debug mode with verbose logging
--env-file ENV_FILE Path to environment file
--name NAME Server name
--version VERSION Server version
--cwd CWD Working directory to run from
Basic Usage
# Run HTTP server (default)
arcade mcp
# Run stdio server (for Claude Desktop, Cursor, etc.)
arcade mcp stdio
# Run with debug logging
arcade mcp --debug
# Run with hot reload (development mode)
arcade mcp --reload --debug
Tool Discovery
The CLI discovers tools in three ways:
1. Auto-Discovery (Default)
Automatically finds Python files with @tool decorated functions in:
- Current directory (
*.py) tools/subdirectoryarcade_tools/subdirectory
Example file structure:
my_project/
├── hello.py # Contains @tool functions
├── tools/
│ └── math.py # More @tool functions
└── arcade_tools/
└── utils.py # Even more @tool functions
2. Package Loading
Load specific arcade packages installed in your environment:
# Load arcade-github package
arcade mcp --tool-package github
# Load custom package (tries arcade_ prefix first)
arcade mcp -p mycompany_tools
3. Discover All Installed
Find and load all arcade packages in your Python environment:
# Load all arcade packages
arcade mcp --discover-installed
# Show what's being loaded
arcade mcp --discover-installed --show-packages
Example Tool File
Create any Python file with @tool decorated functions:
from arcade_mcp_server import tool
@tool
def hello(name: str) -> str:
"""Say hello to someone."""
return f"Hello, {name}!"
@tool
def add(a: int, b: int) -> int:
"""Add two numbers."""
return a + b
Then run:
arcade mcp # Auto-discovers and loads these tools
Alternative: Direct Python Usage
While we recommend using arcade mcp, you can also run the server module directly:
python -m arcade_mcp_server [options]
This provides the same functionality but without the benefits of the Arcade CLI ecosystem (like arcade configure for client setup).