Skip to content

Mcp app

MCPApp

A FastAPI-like interface for building MCP servers with lazy initialization.

MCPApp provides a clean, minimal API for building MCP servers programmatically. It handles tool collection, server configuration, and transport setup with a developer-friendly interface.

Basic Usage

from arcade_mcp_server import MCPApp

app = MCPApp(name="my_server", version="1.0.0")

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

app.run(host="127.0.0.1", port=8000)

Class Reference

arcade_mcp_server.mcp_app.MCPApp

A FastAPI-like interface for building MCP servers.

The app collects tools and configuration, then lazily creates the server and transport when run() is called.

Example
from arcade_mcp_server import MCPApp

app = MCPApp(name="my_server", version="1.0.0")

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

# Runtime CRUD once you have a server bound to the app:
# app.server = mcp_server
# await app.tools.add(materialized_tool)
# await app.prompts.add(prompt, handler)
# await app.resources.add(resource)

app.run(host="127.0.0.1", port=8000)

prompts property

Runtime prompts API: add/remove/list.

resources property

Runtime resources API: add/remove/list.

tools property

Runtime and build-time tools API: add/update/remove/list.

__init__(name='ArcadeMCP', version='1.0.0dev', title=None, instructions=None, log_level='INFO', transport='http', host='127.0.0.1', port=8000, reload=False, **kwargs)

Initialize the MCP app.

Parameters:

Name Type Description Default
name str

Server name

'ArcadeMCP'
version str

Server version

'1.0.0dev'
title str | None

Server title for display

None
instructions str | None

Server instructions

None
log_level str

Logging level (DEBUG, INFO, WARNING, ERROR)

'INFO'
transport TransportType

Transport type ("http")

'http'
host str

Host for transport

'127.0.0.1'
port int

Port for transport

8000
reload bool

Enable auto-reload for development

False
**kwargs Any

Additional server configuration

{}

add_tool(func, desc=None, name=None, requires_auth=None, requires_secrets=None, requires_metadata=None, adapters=None)

Add a tool for build-time materialization (pre-server).

tool(func=None, desc=None, name=None, requires_auth=None, requires_secrets=None, requires_metadata=None, adapters=None)

Decorator for adding tools with optional parameters.

Examples

# --- server.py ---
# Programmatic server creation with a simple tool and HTTP transport

from arcade_mcp_server import MCPApp

app = MCPApp(name="example_server", version="1.0.0")

@app.tool
def echo(text: str) -> str:
    return f"Echo: {text}"

if __name__ == "__main__":
    # Start an HTTP server (good for local development/testing)
    app.run(host="0.0.0.0", port=8000, reload=False, debug=True)
# then run the server
python server.py