Resolves https://linear.app/arcadedev/issue/TOO-590/add-resources-support-to-server-framework <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Medium Risk** > Adds new resource registration/reading semantics (including URI templates and duplicate/multiple-match policies) and changes JSON Schema generation for tool I/O, which may affect MCP client compatibility and runtime behavior across servers. > > **Overview** > **Adds first-class MCP Resources support across `arcade-mcp-server`.** `MCPApp` can now register resources at build time via `add_resource`/`@resource` plus convenience `add_text_resource` and `add_file_resource`, and passes these through to `MCPServer` for startup loading (including `ResourceTemplate` URIs with `{param}` and `{param*}` matching). > > **Extends `ResourceManager` behavior.** Resource reads now coerce handler return types (including raw `bytes` to base64 `BlobResourceContents`), support template matching with overlap/multiple-match detection, and introduce configurable duplicate handling policies. > > **Improves tool schema + MCP Apps linking.** Tool input/output JSON Schema generation is refactored to recursively expand nested `json` schemas and ensure `outputSchema` is always an object (wrapping non-object returns in a `result` property); `MCPApp` also supports attaching arbitrary tool `_meta` extensions (e.g., `ui.resourceUri`) applied at server start. > > Adds two new example servers (`resources`, `tools_with_output_schema`) and broad test coverage for resource templates, static/file resources, meta extensions, and schema wrapping/recursion. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit e785bee79d74110727519b00b81dcad6e9b74212. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY --> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
44 lines
1.1 KiB
Python
44 lines
1.1 KiB
Python
"""
|
|
MCP (Model Context Protocol) support for Arcade.
|
|
|
|
This package provides:
|
|
- MCPApp: A FastAPI-like interface for building MCP servers with decorators
|
|
- MCPServer: Lower-level server implementation for serving Arcade tools
|
|
- Multiple transport options (stdio, HTTP/SSE)
|
|
- Tools and resources support
|
|
- Integration with Arcade workers with factory and runner functions
|
|
- Context system for tool execution with MCP methods
|
|
"""
|
|
|
|
from arcade_tdk import tool
|
|
|
|
from arcade_mcp_server.context import Context
|
|
from arcade_mcp_server.mcp_app import MCPApp
|
|
from arcade_mcp_server.server import MCPServer
|
|
from arcade_mcp_server.settings import MCPSettings
|
|
from arcade_mcp_server.types import (
|
|
Annotations,
|
|
BlobResourceContents,
|
|
Resource,
|
|
ResourceTemplate,
|
|
TextResourceContents,
|
|
)
|
|
from arcade_mcp_server.worker import create_arcade_mcp, run_arcade_mcp
|
|
|
|
__all__ = [
|
|
"Annotations",
|
|
"BlobResourceContents",
|
|
"Context",
|
|
"MCPApp",
|
|
"MCPServer",
|
|
"MCPSettings",
|
|
"Resource",
|
|
"ResourceTemplate",
|
|
"TextResourceContents",
|
|
"create_arcade_mcp",
|
|
"run_arcade_mcp",
|
|
"tool",
|
|
]
|
|
|
|
# Package metadata
|
|
__version__ = "0.1.0"
|