Skip to Content
ReferenceArcade MCPPythonServer

Server

Low-level server for hosting Arcade tools over .

MCPServer

arcade_mcp_server.server.MCPServer

Server with middleware and support.

This server provides:

  • Middleware chain for extensible request processing
  • injection for
  • Component managers for , resources, and prompts
  • Bidirectional communication support to clients

Properties

prompts

Access the PromptManager for runtime prompt operations.

resources

Access the ResourceManager for runtime resource operations.

tools

Access the ToolManager for runtime operations.

Methods

__init__

Python
__init__( catalog, *, name='ArcadeMCP', version='0.1.0', title=None, instructions=None, settings=None, middleware=None, lifespan=None, auth_disabled=False, arcade_api_key=None, arcade_api_url=None )

Initialize server.

Parameters:

NameTypeDescriptionDefault
catalogToolCatalogTool catalogrequired
namestrServer name'ArcadeMCP'
versionstrServer version'0.1.0'
titlestr | NoneServer title for displayNone
instructionsstr | NoneServer instructionsNone
settingsMCPSettings | NoneMCP settings (uses env if not provided)None
middlewarelist[Middleware] | NoneList of middleware to applyNone
lifespanCallable[[Any], Any] | NoneLifespan manager functionNone
auth_disabledboolDisable authenticationFalse
arcade_api_keystr | NoneArcade API key (overrides settings)None
arcade_api_urlstr | NoneArcade API URL (overrides settings)None

handle_message

Python
async handle_message(message, session=None)

Handle an incoming message.

Parameters:

NameTypeDescriptionDefault
messageAnyMessage to handlerequired
sessionServerSession | NoneServer sessionNone

Returns:

TypeDescription
MCPMessage | NoneResponse message or None

run_connection

Python
async run_connection(read_stream, write_stream, init_options=None)

Run a single connection.

Parameters:

NameTypeDescriptionDefault
read_streamAnyStream for reading messagesrequired
write_streamAnyStream for writing messagesrequired
init_optionsAnyConnection initialization optionsNone

Examples

Basic server with tool catalog and stdio transport

Python
import asyncio from arcade_mcp_server.server import MCPServer from arcade_core.catalog import ToolCatalog from arcade_mcp_server.transports.stdio import StdioTransport async def main(): catalog = ToolCatalog() server = MCPServer(catalog=catalog, name="example", version="1.0.0") await server._start() try: # Run stdio transport loop transport = StdioTransport() await transport.run(server) finally: await server._stop() if __name__ == "__main__": asyncio.run(main())

Handling a single HTTP streamable connection

Python
import asyncio from arcade_mcp_server.server import MCPServer from arcade_core.catalog import ToolCatalog from arcade_mcp_server.transports.http_streamable import HTTPStreamableTransport async def run_http(): catalog = ToolCatalog() server = MCPServer(catalog=catalog) await server._start() try: transport = HTTPStreamableTransport(host="0.0.0.0", port=8000) await transport.run(server) finally: await server._stop() asyncio.run(run_http())
Last updated on