Improve user-facing error messages to provide actionable fix instructions, enhancing developer experience and reducing support queries. --- Linear Issue: [TOO-199](https://linear.app/arcadedev/issue/TOO-199/audit-error-messages-for-actionable-fix-instructions) <a href="https://cursor.com/background-agent?bcId=bc-e764f9a0-3581-4ced-b34a-2c48f3df1021"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/open-in-cursor-dark.svg"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/open-in-cursor-light.svg"><img alt="Open in Cursor" src="https://cursor.com/open-in-cursor.svg"></picture></a> <a href="https://cursor.com/agents?id=bc-e764f9a0-3581-4ced-b34a-2c48f3df1021"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/open-in-web-dark.svg"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/open-in-web-light.svg"><img alt="Open in Web" src="https://cursor.com/open-in-web.svg"></picture></a> <!-- CURSOR_SUMMARY --> --- > [!NOTE] > Enhances MCP server/session error responses with clear, actionable guidance across JSON-RPC, tools, and resources; updates tests to assert new messages. > > - **Server (`arcade_mcp_server/server.py`)** > - **Actionable JSON-RPC errors**: Rich messages for `Invalid request`, `Not initialized`, `Method not found`, and internal errors with troubleshooting steps. > - **Tools**: > - `tools/list`/`tools/call`: Improved internal error messages; user-facing guidance on failures. > - Unknown tool: returns detailed fix instructions. > - Transport restrictions: explicit "Unsupported transport" guidance for HTTP vs `stdio` with docs link. > - Auth flow: messages for missing API key, pending authorization (with `authorization_url`), and authorization errors; includes next steps. > - Secrets: clear "Missing secret(s)" with `.env`/env-var setup instructions. > - **Resources/Prompts**: > - `resources/list`, `resources/templates/list`, `resources/read`, `prompts/list`, `prompts/get`: Detailed failure and not-found messages with guidance. > - **Session (`arcade_mcp_server/session.py`)** > - Enhanced internal error response formatting with troubleshooting steps. > - **Tests (`libs/tests/arcade_mcp_server/test_server.py`)** > - Updated assertions to match new, descriptive messages (e.g., "Authorization required", "Missing Arcade API key", "Unsupported transport"). > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 97a6db4ec80a1ea9597f3364b6325d47948c94e0. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY --> --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: Eric Gustin <34000337+EricGustin@users.noreply.github.com> |
||
|---|---|---|
| .. | ||
| arcade_mcp_server | ||
| Makefile | ||
| pyproject.toml | ||
| README.md | ||
Arcade MCP Server
Arcade MCP (Model Context Protocol) Server enables AI assistants and development tools to interact with your Arcade tools through a standardized protocol. Build, deploy, and integrate MCP servers seamlessly across different AI platforms.
Quick Links
- Quickstart Guide - Get up and running in minutes
- Walkthrough - Learn by example
- API Reference - MCPApp API documentation
Features
- 🚀 FastAPI-like Interface - Simple, intuitive API with
MCPApp - 🔧 Tool Discovery - Automatic discovery of tools in your project
- 🔌 Multiple Transports - Support for stdio and HTTP/SSE
- 🤖 Multi-Client Support - Works with Claude, Cursor, and more
- 📦 Package Integration - Load installed Arcade packages
- 🔐 Built-in Security - Environment-based configuration and secrets
- 🔄 Hot Reload - Development mode with automatic reloading
- 📊 Production Ready - Deploy with Docker, systemd, PM2, or cloud platforms
Getting Started
Installation
pip install arcade-mcp-server
Create Your First Server
from arcade_mcp_server import MCPApp
from typing import Annotated
app = MCPApp(name="my-tools", 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__":
app.run()
Run Your Server
# For development
python my_tools.py
# For Claude Desktop
python -m arcade_mcp_server stdio
# For HTTP clients
python -m arcade_mcp_server --host 0.0.0.0 --port 8080
Community
Analytics & Privacy
Arcade MCP Server collects anonymous usage data to help us improve the service and debug issues. We track "MCP server start" events to understand server usage patterns and reliability.
What We Track
When the server starts, we collect the following information:
- Server configuration: transport type (
httporstdio), host, port - Server metadata: tool count, server version
- Runtime environment: Python version, OS type and release
- Timing: device timestamp
- Errors: error messages (if startup fails)
Privacy
- For anonymous users: Events are tracked with an anonymous ID and no user profile is created
- For authenticated users: Events are linked to your account to help us provide better support
- No sensitive data (credentials, tool inputs/outputs, or personal information) is ever collected
Opt Out
To disable usage tracking, set the environment variable ARCADE_USAGE_TRACKING to 0.
License
Arcade MCP Server is open source software licensed under the MIT license.