transform NotFoundError to standard MCP error (#2133)

This commit is contained in:
Omer Aharonian 2025-10-18 11:46:57 -04:00 committed by GitHub
commit 5ce67f756b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 15 additions and 1 deletions

View file

@ -9,6 +9,8 @@ from typing import Any
from mcp import McpError
from mcp.types import ErrorData
from fastmcp.exceptions import NotFoundError
from .middleware import CallNext, Middleware, MiddlewareContext
@ -90,7 +92,7 @@ class ErrorHandlingMiddleware(Middleware):
return McpError(
ErrorData(code=-32602, message=f"Invalid params: {str(error)}")
)
elif error_type in (FileNotFoundError, KeyError):
elif error_type in (FileNotFoundError, KeyError, NotFoundError):
return McpError(
ErrorData(code=-32001, message=f"Resource not found: {str(error)}")
)

View file

@ -6,6 +6,7 @@ from unittest.mock import AsyncMock, MagicMock
import pytest
from mcp import McpError
from fastmcp.exceptions import NotFoundError
from fastmcp.server.middleware.error_handling import (
ErrorHandlingMiddleware,
RetryMiddleware,
@ -146,6 +147,17 @@ class TestErrorHandlingMiddleware:
assert result.error.code == -32001
assert "Resource not found: test error" in result.error.message
def test_transform_error_not_found_error(self):
"""Test transforming NotFoundError."""
middleware = ErrorHandlingMiddleware()
error = NotFoundError("test error")
result = middleware._transform_error(error)
assert isinstance(result, McpError)
assert result.error.code == -32001
assert "Resource not found: test error" in result.error.message
def test_transform_error_permission_error(self):
"""Test transforming PermissionError."""
middleware = ErrorHandlingMiddleware()