{"id":6518,"library":"arcade-mcp-server","title":"Arcade MCP Server Framework","description":"Arcade MCP (Model Context Protocol) Server is a secure framework for building and running AI-powered tools and agents. It enables AI assistants and development tools to interact with your custom tools through a standardized protocol, supporting seamless integration across different AI platforms. The current version is 1.19.3, and it receives frequent updates and feature releases.","status":"active","version":"1.19.3","language":"en","source_language":"en","source_url":"https://github.com/ArcadeAI/arcade-mcp","tags":["AI","MCP","server","framework","tools","agents"],"install":[{"cmd":"pip install arcade-mcp-server","lang":"bash","label":"Install core library"},{"cmd":"uv tool install arcade-mcp","lang":"bash","label":"Install Arcade CLI for project scaffolding (recommended)"}],"dependencies":[],"imports":[{"symbol":"MCPApp","correct":"from arcade_mcp_server import MCPApp"},{"symbol":"Context","correct":"from arcade_mcp_server import Context"}],"quickstart":{"code":"from typing import Annotated\nfrom arcade_mcp_server import MCPApp, Context\nimport os\n\napp = MCPApp(name=\"my-tools\", version=\"1.0.0\", log_level=\"DEBUG\")\n\n@app.tool\ndef greet(name: Annotated[str, \"The name of the person to greet\"]) -> str:\n    \"\"\"Greet a person by name.\"\"\"\n    return f\"Hello, {name}!\"\n\n# Example tool requiring a secret, typically set in .env or as an environment variable\n@app.tool(requires_secrets=[\"MY_SECRET_KEY\"])\ndef whisper_secret(context: Context) -> Annotated[str, \"The last 4 characters of the secret\"]:\n    \"\"\"Reveal the last 4 characters of a secret\"\"\"\n    secret_value = context.get_secret(\"MY_SECRET_KEY\")\n    if secret_value:\n        return f\"Your secret ends with: {secret_value[-4:]}\"\n    return \"Secret not found or not configured.\"\n\nif __name__ == \"__main__\":\n    # Ensure MY_SECRET_KEY is set in your environment for the whisper_secret tool to work\n    # For local testing, you might use: export MY_SECRET_KEY=\"your_development_secret\"\n    # Or, for more robust handling, use a .env file and a library like python-dotenv\n    # os.environ['MY_SECRET_KEY'] = os.environ.get('MY_SECRET_KEY', 'default_secret_for_dev')\n    app.run()","lang":"python","description":"This quickstart demonstrates how to create a basic MCP server with `MCPApp`, define tools using the `@app.tool` decorator, and handle secrets. The `arcade-mcp` CLI can be used to scaffold a complete project."},"warnings":[{"fix":"Use `stdio` transport locally for tools requiring authorization/secrets, or deploy to a secure environment for public HTTP access. When running, specify `python server.py stdio` or omit the transport argument for default `stdio`.","message":"Local HTTP servers for `arcade-mcp-server` do not currently support tool-level authorization and secrets. For local development requiring these features, use the `stdio` transport. Public HTTP servers should follow deployment guides for secure remote deployment.","severity":"gotcha","affected_versions":"All versions"},{"fix":"Always include `Annotated` types for tool parameters and return values (e.g., `name: Annotated[str, \"Description\"]`) and descriptive docstrings for your tool functions.","message":"For AI agents to effectively understand and utilize your tools, it is crucial to use `typing.Annotated` for parameter and return type descriptions, and provide clear docstrings for each tool.","severity":"gotcha","affected_versions":"All versions"},{"fix":"Users concerned about data collection should review the privacy policy and consider their deployment environment.","message":"The `arcade_mcp_server` package collects anonymous usage data upon server start, including server configuration, metadata, runtime environment details, and error messages.","severity":"gotcha","affected_versions":"All versions"}],"env_vars":null,"last_verified":"2026-04-15T00:00:00.000Z","next_check":"2026-07-14T00:00:00.000Z","problems":[{"fix":"Install the package using pip: 'pip install arcade-mcp-server'.","cause":"The 'arcade_mcp_server' package is not installed in the Python environment.","error":"ModuleNotFoundError: No module named 'arcade_mcp_server'"},{"fix":"Ensure you have the latest version installed: 'pip install --upgrade arcade-mcp-server'.","cause":"The 'MCPApp' class is not available in the 'arcade_mcp_server' module, possibly due to an outdated version.","error":"ImportError: cannot import name 'MCPApp' from 'arcade_mcp_server'"},{"fix":"Add the '@app.tool' decorator and ensure all parameters and return types are properly annotated.","cause":"The tool function in 'math_tools.py' lacks proper annotations or the '@app.tool' decorator.","error":"ValueError: Invalid tool definition in 'tools/math_tools.py'"},{"fix":"Set the 'ARCADE_WORKER_SECRET' environment variable with a secure value before starting the server.","cause":"The 'ARCADE_WORKER_SECRET' environment variable is not set, leading to authentication issues.","error":"RuntimeError: Server failed to start due to missing 'ARCADE_WORKER_SECRET' environment variable."},{"fix":"Ensure all functions return the expected iterable types and handle cases where 'None' might be returned.","cause":"A function in 'text_tools.py' is returning 'None' instead of an iterable, possibly due to missing return statements.","error":"TypeError: 'NoneType' object is not iterable in 'tools/text_tools.py'"}]}