Arcade MCP
raw JSON → 1.14.1 verified Sat May 09 auth: no python
The official Arcade.dev library for tool calling and MCP (Model Context Protocol) server hosting. Provides a client to list tools and execute calls, and a MCP server to expose Arcade tools to any MCP-compatible agent. Current version 1.14.1. Active development, frequent releases.
pip install arcade-mcp Common errors
error KeyError: 'ARCADE_API_KEY' ↓
cause Environment variable not set.
fix
Export ARCADE_API_KEY and ARCADE_USER_ID before running Python: export ARCADE_API_KEY='your_key'
error ImportError: cannot import name 'ToolCallClient' from 'arcade' ↓
cause The old import path arcade was renamed to arcade_mcp.
fix
Change import to: from arcade_mcp import ToolCallClient
error ToolCallError: Tool 'GetCurrent' not found ↓
cause Tool name without namespace.
fix
Use full tool name like 'Weather.GetCurrent' (include namespace).
Warnings
gotcha ToolCallClient reads API keys from environment variables ARCADE_API_KEY and ARCADE_USER_ID. If not set, client may fail silently or raise unclear auth errors. ↓
fix Always set ARCADE_API_KEY and ARCADE_USER_ID before creating the client.
gotcha Import paths changed in early 1.x. Some older examples use from arcade.client import ToolCallClient, which no longer works. ↓
fix Use from arcade_mcp import ToolCallClient (note: arcade_mcp, not arcade).
deprecated The library deprecated the old arcade package name. Future releases may remove arcade top-level imports entirely. ↓
fix Use arcade_mcp as the package name. Update any imports from arcade to arcade_mcp.
gotcha The ToolCallClient.call_tool method requires tool names with namespace (e.g., 'Weather.GetCurrent'). Omitting the namespace returns a 404 error. ↓
fix Always use the full tool name as returned by list_tools().
Imports
- ToolCallClient
from arcade_mcp import ToolCallClient - ToolDefinition
from arcade_mcp.models import ToolDefinition - start_server
from arcade_mcp.server import start_server
Quickstart
import os
from arcade_mcp import ToolCallClient
# Set environment variables (use placeholder for safety)
os.environ['ARCADE_API_KEY'] = os.environ.get('ARCADE_API_KEY', '')
os.environ['ARCADE_USER_ID'] = os.environ.get('ARCADE_USER_ID', '')
client = ToolCallClient()
# List available tools
tools = client.list_tools()
print(tools)
# Example: call a tool (weather tool if available)
result = client.call_tool("Weather.GetCurrent", {"location": "San Francisco"})
print(result)