arcade-mcp/libs/arcade-mcp-server
jottakka fe8ddfd500
[TOO-326] Windows papercuts (#768)
<!-- CURSOR_SUMMARY -->
> [!NOTE]
> **Medium Risk**
> Touches authentication/login flow, credentials-file permissions, and
subprocess lifecycle behavior across platforms; while mostly defensive,
regressions could impact login or process management on Windows/macOS
runners.
> 
> **Overview**
> Improves Windows/cross-platform reliability across the CLI and MCP
server: OAuth login now binds the callback server to `127.0.0.1`, avoids
slow loopback reverse-DNS, adds a configurable callback timeout
(`--timeout` + env default), and opens URLs via a Windows-friendly
`_open_browser` to avoid flashing console windows.
> 
> Centralizes CLI output via a shared `console` that forces UTF-8 on
Windows, standardizes UTF-8 file reads/writes throughout, tightens
credentials-file permissions on Windows using `icacls`, and adds shared
Windows subprocess helpers for **no-window** process creation and
graceful termination (used by `deploy`, MCP reload, and usage-tracking
worker).
> 
> Updates client configuration UX/robustness (Windows AppData resolution
via `platformdirs`, Cursor config path fallbacks + compatibility writes,
overwrite warnings, absolute `uv` path for GUI clients, safer path
display) and improves `deploy` child-process handling to avoid
pipe-buffer deadlocks while giving better debug-aware error messages.
> 
> Expands CI to run tests on Linux/Windows/macOS, adds a no-auth CLI
integration workflow, disables usage tracking in toolkits CI, and adds
extensive regression tests for Windows signals, subprocess cleanup,
UTF-8, and config-path edge cases; bumps `arcade-core` to `4.4.2` and
`arcade-mcp-server` to `1.17.2` (with updated dependency pin).
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
0fabd8ca1cd647039ba6ddbdf3f7809c330bab9e. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
2026-02-25 13:18:16 -03:00
..
arcade_mcp_server [TOO-326] Windows papercuts (#768) 2026-02-25 13:18:16 -03:00
Makefile remove mkdocs for arcade-mcp (#617) 2025-10-13 10:47:41 -07:00
pyproject.toml [TOO-326] Windows papercuts (#768) 2026-02-25 13:18:16 -03:00
README.md Server start events (#635) 2025-10-22 16:14:52 -07:00

Arcade MCP Server

Arcade Logo

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.

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 (http or stdio), 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.