arcade-mcp/libs/tests/arcade_mcp_server
Francisco Or Something dc4607daa4
feat(telemetry): add developer messages to tool error spans (#831)
## Summary
- Add shared span attributes for tool error diagnostics, including
developer-facing messages when present.
- Wire those attributes through MCP server, worker RunTool, and HTTP
CallTool spans while keeping default MCP response content public-only.
- Cover no-leak response behavior, non-recording spans, outputless
worker responses, and the shared attribute contract.

## Verification
- `uv run ruff format ...`
- `uv run ruff check ...`
- `uv run pytest -W ignore
libs/tests/arcade_mcp_server/test_debug_exposure_integration.py
libs/tests/core/test_log_extras.py
libs/tests/worker/test_worker_base.py`

Made with [Cursor](https://cursor.com)

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Medium Risk**
> Adds new telemetry attributes that propagate tool error messages
(including optional developer_message) into active spans across MCP
server and worker execution paths; risk is mainly around potential
leakage of sensitive developer messages into tracing backends and
changes to observability contracts.
> 
> **Overview**
> Adds a shared
`arcade_core.log_extras.build_tool_error_span_attributes()` helper and
wires it into tool error paths so the current OpenTelemetry span is
annotated with stable `tool_error_*` attributes (including
`developer_message` when present).
> 
> MCP tool calls now record these span attributes on failure while
keeping default MCP response content sanitized, and `arcade-serve`
records the same attributes on both `RunTool` and HTTP `CallTool` spans
(handling `output=None`). Versions and dependency constraints are bumped
to consume the new core helper, with tests added/updated to lock the
span-attribute contract and verify behavior for non-recording spans and
no-leak responses.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
33a53991d72140a662152f508dc53e9b769b9f07. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
2026-04-29 20:41:07 -03:00
..
integration Don't return structuredContent when error (#817) 2026-04-10 15:27:07 -07: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 fix: TypedDict total=False output breaks validation (#816) 2026-04-09 17:47:57 -07:00
test_debug_exposure.py feat(arcade-core): opt-in debug leak flags for toolkit authors (#826) 2026-04-25 11:40:26 -03:00
test_debug_exposure_integration.py feat(telemetry): add developer messages to tool error spans (#831) 2026-04-29 20:41:07 -03: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_error_schema_validation.py Don't return structuredContent when error (#817) 2026-04-10 15:27:07 -07:00
test_logging_middleware.py MCP Local (#563) 2025-09-25 15:28:15 -07:00
test_logging_utils.py TOO-627: Improve error messages for agents and Datadog (#814) 2026-04-13 20:10:51 -03: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 TOO-627: Improve error messages for agents and Datadog (#814) 2026-04-13 20:10:51 -03: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