mirror of
https://github.com/PrefectHQ/fastmcp.git
synced 2026-08-20 20:44:17 +02:00
transform NotFoundError to standard MCP error (#2133)
This commit is contained in:
parent
6f627b58fd
commit
5ce67f756b
2 changed files with 15 additions and 1 deletions
|
|
@ -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)}")
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue