For the past few years I’ve spent most of my time on one deceptively simple question: how do you write a tool that an agent can actually use in production? Not a demo wrapper around an API - a real, packaged, versioned, authorized tool. The answer we landed on at Arcade is arcade-mcp, and it’s open source.

What arcade-mcp Is

arcade-mcp is the Python framework for building Model Context Protocol (MCP) servers and the tools that run inside them. It’s the same framework we use internally - the one behind Arcade’s catalog of 7,500+ prebuilt, agent-optimized tools. If you can write a Python function, you can write a tool.

pip install arcade-mcp-server

Define a tool, and the framework handles the MCP plumbing, schema generation, and serving:

from arcade_mcp_server import tool

@tool
def greet(name: str) -> str:
    """Greet a person by name."""
    return f"Hello, {name}!"

The Part Everyone Forgets: Authorized Tool Calling

The thing that makes arcade-mcp different from “just another MCP server” is that tools can declare their authorization requirements directly. A tool that needs to read your email can say so, and the runtime handles the OAuth flow and scoped, per-user tokens. This is the piece I keep talking about - reasoning is the easy part; acting as a real user, securely is the wall most agents hit.

Federated Tools Through a Gateway

Once you have more than a handful of MCP servers, you hit a new problem: managing them. arcade-mcp plugs into Arcade’s gateway concept, where all of your MCP servers - your custom tools, external servers, or tools hosted on Arcade - sit behind a single gateway. Your agent never sees more tools than you assign it, and you choose them right in the UI. I think the future is federated MCP servers, and this is our bet on it.

Try It

If you’ve ever wrestled a GET /users/{id} endpoint into something an agent can actually reason about, this framework is the distillation of everything we learned doing that 7,500 times.

For more about Arcade check out the website at https://www.arcade.dev/ and the GitHub https://github.com/arcadeai/