arcade-mcp/libs/arcade-mcp-server/docs/examples
Eric Gustin a11f79b32d
Update arcade-mcp-server docs (#597)
1. Updates docs to prefer `uv run server.py` instead of `arcade mcp` or
`python -m arcade_mcp_server`
2. Found a bug with running stdio servers while updating the docs, so i
snuck that in this PR
2025-10-02 17:16:38 -07:00
..
00_hello_world.md Update arcade-mcp-server docs (#597) 2025-10-02 17:16:38 -07:00
00_hello_world.py Update arcade-mcp-server docs (#597) 2025-10-02 17:16:38 -07:00
01_tools.md Update arcade-mcp-server docs (#597) 2025-10-02 17:16:38 -07:00
01_tools.py Update arcade-mcp-server docs (#597) 2025-10-02 17:16:38 -07:00
02_building_apps.md Update arcade-mcp-server docs (#597) 2025-10-02 17:16:38 -07:00
02_building_apps.py Update arcade-mcp-server docs (#597) 2025-10-02 17:16:38 -07:00
03_context.md Update arcade-mcp-server docs (#597) 2025-10-02 17:16:38 -07:00
03_context.py Update arcade-mcp-server docs (#597) 2025-10-02 17:16:38 -07:00
04_secrets.md Update arcade-mcp-server docs (#597) 2025-10-02 17:16:38 -07:00
04_secrets.py Update arcade-mcp-server docs (#597) 2025-10-02 17:16:38 -07:00
05_logging.md MCP Local (#563) 2025-09-25 15:28:15 -07:00
05_logging.py Update arcade-mcp-server docs (#597) 2025-10-02 17:16:38 -07:00
06_tool_organization.md Update arcade-mcp-server docs (#597) 2025-10-02 17:16:38 -07:00
06_tool_organization.py Update arcade-mcp-server docs (#597) 2025-10-02 17:16:38 -07:00
07_auth.md Update arcade-mcp-server docs (#597) 2025-10-02 17:16:38 -07:00
07_auth.py Update arcade-mcp-server docs (#597) 2025-10-02 17:16:38 -07:00
README.md Update arcade-mcp-server docs (#597) 2025-10-02 17:16:38 -07:00
tools_math.py Update arcade-mcp-server docs (#597) 2025-10-02 17:16:38 -07:00
tools_text.py Update arcade-mcp-server docs (#597) 2025-10-02 17:16:38 -07:00

Arcade MCP Examples

This directory contains examples demonstrating how to build MCP servers with your Arcade tools.

Getting Started

The easiest way to get started is with arcade new:

# Install the CLI
uv pip install arcade-mcp

# Create a new server project with example tools
arcade new my_server
cd my_server

# Run your server
uv run server.py

This creates a complete project with server.py, pyproject.toml, and example tools showing best practices.

Examples Overview

Basic Examples

  1. 00_hello_world.py Minimal tool example

    • Single @tool function showing the basics
    • Run: uv run 00_hello_world.py (or uv run 00_hello_world.py stdio)
  2. 01_tools.py Creating tools and discovery

    • Simple parameters, lists, and TypedDict
    • How the server discovers tools automatically
    • Run: uv run 01_tools.py
  3. 02_building_apps.py Building apps with MCPApp

    • Create an MCPApp, register tools with @app.tool
    • Run HTTP: uv run 02_building_apps.py
    • Run stdio: uv run 02_building_apps.py stdio
  4. 03_context.py Using Context

    • Access secrets, logging, and user context
    • Run: uv run 03_context.py
  5. 04_tool_secrets.py Working with secrets

    • Use requires_secrets and access masked values
    • Run: uv run 04_secrets.py
  6. 05_logging.py Logging with MCP

    • Demonstrates debug/info/warning/error levels and structured logs
    • Run: uv run 05_logging.py
  7. 06_tool_organization.py Tool organization and imports

    • Demonstrate modular tool organization, importing from files and packages
    • Run: uv run 06_tool_organization.py
  8. 07_auth.py Tools that require auth

    • Create tools that require OAuth scopes
    • Use Reddit OAuth to fetch posts
    • Prerequisites: Run arcade login to authenticate with Arcade
    • Run: uv run 07_auth.py

Running Examples

Most examples can be run directly with Python using uv:

# Run any example file directly
uv run 00_hello_world.py
uv run 02_building_apps.py
uv run 06_tool_organization.py

# With specific transport
uv run server.py stdio  # For Claude Desktop
uv run server.py http   # HTTP by default

# You can also run with python directly
python 00_hello_world.py
python 02_building_apps.py stdio

All example files include proper command-line argument handling with if __name__ == "__main__": blocks.