Skip to content

Commit afaa48f

Browse files
ref(mcp): Add package to the typing group (#6727)
Add `mcp` to the typing dependency group and fix the resulting mypy errors.
1 parent 44fb035 commit afaa48f

3 files changed

Lines changed: 272 additions & 15 deletions

File tree

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ typing = [
6767
"httpx2",
6868
"botocore-stubs",
6969
"werkzeug",
70+
"mcp>=2.0.0b1",
7071
"starlette>=1.3.1",
7172
"python-multipart>=0.0.32",
7273
"pydantic>=2.13.4",

sentry_sdk/integrations/mcp.py

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,13 @@
2424
MCP_PACKAGE_VERSION = package_version("mcp")
2525

2626
try:
27-
from mcp.server.lowlevel import Server # type: ignore[import-not-found]
28-
from mcp.server.streamable_http import ( # type: ignore[import-not-found]
27+
from mcp.server.lowlevel import Server
28+
from mcp.server.streamable_http import (
2929
StreamableHTTPServerTransport,
3030
)
3131

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

4444
if MCP_PACKAGE_VERSION and MCP_PACKAGE_VERSION >= (2, 0, 0):
4545
try:
46-
from mcp.server.context import ( # type: ignore[import-not-found]
46+
from mcp.server.context import (
4747
ServerRequestContext,
4848
)
4949
except ImportError:
50-
ServerRequestContext = None
50+
ServerRequestContext = None # type: ignore[assignment,misc]
5151
else:
52-
ServerRequestContext = None
52+
ServerRequestContext = None # type: ignore[assignment,misc]
5353

5454

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

716716
def patched_call_tool(
717717
self: "Server", **kwargs: "Any"
@@ -721,10 +721,10 @@ def patched_call_tool(
721721
original_call_tool, "tool", self, **kwargs
722722
)(func)
723723

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

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

729729
def patched_get_prompt(
730730
self: "Server",
@@ -734,10 +734,10 @@ def patched_get_prompt(
734734
original_get_prompt, "prompt", self
735735
)(func)
736736

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

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

742742
def patched_read_resource(
743743
self: "Server",
@@ -747,7 +747,7 @@ def patched_read_resource(
747747
original_read_resource, "resource", self
748748
)(func)
749749

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

752752

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

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

795795
original_add_request_handler = Server.add_request_handler
796796

@@ -810,7 +810,7 @@ def patched_add_request_handler(
810810
self, method, params_type, handler, *args, **kwargs
811811
)
812812

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

815815

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

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

834834

835835
def _patch_fastmcp() -> None:

0 commit comments

Comments
 (0)