arcade-mcp/libs/tests/arcade_mcp_server
Eric Gustin 9eec003c72
Add full support for MCP Resources (#803)
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>
2026-03-27 15:27:57 -07:00
..
integration Removing Flanky tests (#790) 2026-03-06 16:03:49 -03:00
transports Adding MCP Servers supports to Arcade Evals (#689) 2026-01-07 20:26:23 -03:00
__init__.py MCP Local (#563) 2025-09-25 15:28:15 -07:00
conftest.py MCP Local (#563) 2025-09-25 15:28:15 -07:00
test_context.py Adding MCP Servers supports to Arcade Evals (#689) 2026-01-07 20:26:23 -03:00
test_convert.py Add full support for MCP Resources (#803) 2026-03-27 15:27:57 -07:00
test_env_discovery.py Improve .env discovery (#737) 2026-02-25 23:20:28 -08:00
test_error_handling_middleware.py MCP Local (#563) 2025-09-25 15:28:15 -07:00
test_logging_middleware.py MCP Local (#563) 2025-09-25 15:28:15 -07:00
test_mcp_app.py Add full support for MCP Resources (#803) 2026-03-27 15:27:57 -07:00
test_middleware_base.py MCP Local (#563) 2025-09-25 15:28:15 -07:00
test_openapi_docs.py Adding MCP Servers supports to Arcade Evals (#689) 2026-01-07 20:26:23 -03:00
test_prompt.py MCP Local (#563) 2025-09-25 15:28:15 -07:00
test_public_imports.py MCP Local (#563) 2025-09-25 15:28:15 -07:00
test_resource.py Add full support for MCP Resources (#803) 2026-03-27 15:27:57 -07:00
test_resource_server_auth.py Support Ed25519 Algorithm (#742) 2026-01-16 15:55:05 -08:00
test_server.py Add full support for MCP Resources (#803) 2026-03-27 15:27:57 -07:00
test_session.py MCP Local (#563) 2025-09-25 15:28:15 -07:00
test_session_cancellation.py MCP Local (#563) 2025-09-25 15:28:15 -07:00
test_settings.py [TOO-518] Enforce semver for MCPApp Versioning (#793) 2026-03-16 16:06:25 -07:00
test_telemetry_middleware.py feat: Add TelemetryPassbackMiddleware for serverExecutionTelemetry capability (#797) 2026-03-25 15:57:50 -07:00
test_tool.py MCP Local (#563) 2025-09-25 15:28:15 -07:00
test_tool_metadata_serialization.py Add Tool Metadata (#766) 2026-02-17 14:31:45 -08:00
test_worker_factory.py Fix multiple worker log level bug (#758) 2026-01-30 15:37:52 -08:00