Skip to content

Commit d9dcc85

Browse files
committed
Record ERROR status on server spans for error responses
1 parent 1ee1dfd commit d9dcc85

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

src/mcp/server/lowlevel/server.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -459,7 +459,7 @@ async def _handle_request(
459459
kind="SERVER",
460460
attributes={"mcp.method.name": req.method, "jsonrpc.request.id": message.request_id},
461461
context=parent_context,
462-
):
462+
) as span:
463463
if handler := self._request_handlers.get(req.method):
464464
logger.debug("Dispatching request of type %s", type(req).__name__)
465465

@@ -515,6 +515,11 @@ async def _handle_request(
515515
else: # pragma: no cover
516516
response = types.ErrorData(code=types.METHOD_NOT_FOUND, message="Method not found")
517517

518+
if isinstance(response, types.ErrorData) and span is not None:
519+
from opentelemetry.trace import StatusCode
520+
521+
span.set_status(StatusCode.ERROR, response.message)
522+
518523
try:
519524
await message.respond(response)
520525
except (anyio.BrokenResourceError, anyio.ClosedResourceError):

0 commit comments

Comments
 (0)