Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ typing = [
"httpx2",
"botocore-stubs",
"werkzeug",
"mcp>=2.0.0b1",
"starlette>=1.3.1",
"python-multipart>=0.0.32",
"pydantic>=2.13.4",
Expand Down
30 changes: 15 additions & 15 deletions sentry_sdk/integrations/mcp.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,13 @@
MCP_PACKAGE_VERSION = package_version("mcp")

try:
from mcp.server.lowlevel import Server # type: ignore[import-not-found]
from mcp.server.streamable_http import ( # type: ignore[import-not-found]
from mcp.server.lowlevel import Server
from mcp.server.streamable_http import (
StreamableHTTPServerTransport,
)

if MCP_PACKAGE_VERSION and MCP_PACKAGE_VERSION < (2, 0, 0):
from mcp.server.lowlevel.server import ( # type: ignore[import-not-found]
from mcp.server.lowlevel.server import ( # type: ignore[attr-defined]
request_ctx,
)
except ImportError:
Expand All @@ -43,13 +43,13 @@

if MCP_PACKAGE_VERSION and MCP_PACKAGE_VERSION >= (2, 0, 0):
try:
from mcp.server.context import ( # type: ignore[import-not-found]
from mcp.server.context import (
ServerRequestContext,
)
except ImportError:
ServerRequestContext = None
ServerRequestContext = None # type: ignore[assignment,misc]
else:
ServerRequestContext = None
ServerRequestContext = None # type: ignore[assignment,misc]


if TYPE_CHECKING:
Expand Down Expand Up @@ -711,7 +711,7 @@ def _patch_lowlevel_server() -> None:
def _patch_lowlevel_server_v1() -> None:
"""Patches v1 Server decorator methods (call_tool, get_prompt, read_resource)."""
# Patch call_tool decorator
original_call_tool = Server.call_tool
original_call_tool = Server.call_tool # type: ignore[attr-defined]

def patched_call_tool(
self: "Server", **kwargs: "Any"
Expand All @@ -721,10 +721,10 @@ def patched_call_tool(
original_call_tool, "tool", self, **kwargs
)(func)

Server.call_tool = patched_call_tool
Server.call_tool = patched_call_tool # type: ignore[attr-defined]

# Patch get_prompt decorator
original_get_prompt = Server.get_prompt
original_get_prompt = Server.get_prompt # type: ignore[attr-defined]

def patched_get_prompt(
self: "Server",
Expand All @@ -734,10 +734,10 @@ def patched_get_prompt(
original_get_prompt, "prompt", self
)(func)

Server.get_prompt = patched_get_prompt
Server.get_prompt = patched_get_prompt # type: ignore[attr-defined]

# Patch read_resource decorator
original_read_resource = Server.read_resource
original_read_resource = Server.read_resource # type: ignore[attr-defined]

def patched_read_resource(
self: "Server",
Expand All @@ -747,7 +747,7 @@ def patched_read_resource(
original_read_resource, "resource", self
)(func)

Server.read_resource = patched_read_resource
Server.read_resource = patched_read_resource # type: ignore[attr-defined]


def _wrap_v2_handler(
Expand Down Expand Up @@ -790,7 +790,7 @@ def patched_init(self: "Server", *args: "Any", **kwargs: "Any") -> None:
kwargs[kwarg] = _wrap_v2_handler(handler_type, handler)
original_init(self, *args, **kwargs)

Server.__init__ = patched_init
Server.__init__ = patched_init # type: ignore[method-assign]

original_add_request_handler = Server.add_request_handler

Expand All @@ -810,7 +810,7 @@ def patched_add_request_handler(
self, method, params_type, handler, *args, **kwargs
)

Server.add_request_handler = patched_add_request_handler
Server.add_request_handler = patched_add_request_handler # type: ignore[method-assign]


def _patch_handle_request() -> None:
Expand All @@ -829,7 +829,7 @@ async def patched_handle_request(
scope["state"]["sentry_sdk.current_scope"] = sentry_sdk.get_current_scope()
await original_handle_request(self, scope, receive, send)

StreamableHTTPServerTransport.handle_request = patched_handle_request
StreamableHTTPServerTransport.handle_request = patched_handle_request # type: ignore[method-assign]


def _patch_fastmcp() -> None:
Expand Down
Loading
Loading