Skip to content

Commit c5b1fda

Browse files
committed
fix all tests and include redaction support
1 parent 4489ee3 commit c5b1fda

File tree

4 files changed

+32
-20
lines changed

4 files changed

+32
-20
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ classifiers = [
1818
"Programming Language :: Python :: 3.12",
1919
]
2020
dependencies = [
21-
"mcp>=1.0.0",
21+
"mcp==1.2.1",
2222
"mcpcat-api==0.1.3",
2323
"pydantic>=2.0.0",
2424
]

src/mcpcat/__init__.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,13 @@
1212
from .modules.compatibility import is_compatible_server, is_fastmcp_server
1313
from .modules.internal import set_server_tracking_data
1414
from .modules.logging import write_to_log
15-
from .types import MCPCatData, MCPCatOptions
15+
from .types import (
16+
MCPCatData,
17+
MCPCatOptions,
18+
UserIdentity,
19+
IdentifyFunction,
20+
RedactionFunction,
21+
)
1622

1723

1824
def track(server: Any, project_id: str, options: MCPCatOptions | None = None) -> Any:
@@ -51,6 +57,13 @@ def track(server: Any, project_id: str, options: MCPCatOptions | None = None) ->
5157
return server
5258

5359
__all__ = [
60+
# Main API
5461
"track",
62+
# Configuration
5563
"MCPCatOptions",
64+
# Types for identify functionality
65+
"UserIdentity",
66+
"IdentifyFunction",
67+
# Type for redaction functionality
68+
"RedactionFunction",
5669
]

tests/test_event_capture_completeness.py

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -95,9 +95,8 @@ def capture_event(publish_event_request):
9595
options = MCPCatOptions(enable_tracing=True)
9696
track(server, "test_project", options)
9797

98-
# Create client with specific info
99-
client_info = Implementation(name="test-client", version="1.0.0")
100-
async with create_test_client(server, client_info) as client:
98+
# Create client with default info
99+
async with create_test_client(server) as client:
101100
# The test client sets client info during initialization
102101
await client.call_tool("add_todo", {"text": "Test"})
103102
time.sleep(1.0)
@@ -108,8 +107,8 @@ def capture_event(publish_event_request):
108107
event = tool_events[0]
109108

110109
# Client info should be captured from the test client
111-
assert event.client_name == "test-client"
112-
assert event.client_version == "1.0.0"
110+
assert event.client_name == "mcp"
111+
assert event.client_version == "0.1.0"
113112

114113
@pytest.mark.asyncio
115114
async def test_event_contains_server_info(self):
@@ -287,7 +286,7 @@ def capture_event(publish_event_request):
287286
options = MCPCatOptions(enable_tracing=True)
288287
track(server, "test_project", options)
289288

290-
async with create_test_client(server, client_info={"name": "test-client", "version": "1.0.0"}) as client:
289+
async with create_test_client(server) as client:
291290
# Generate various event types
292291
await client.list_tools() # mcp:tools/list
293292
await client.call_tool("add_todo", {"text": "Test"}) # mcp:tools/call
@@ -311,8 +310,8 @@ def capture_event(publish_event_request):
311310
assert event.mcpcat_version is not None
312311
assert event.server_name == "todo-server"
313312
assert event.server_version == None
314-
assert event.client_name == "test-client"
315-
assert event.client_version == "1.0.0"
313+
assert event.client_name == "mcp"
314+
assert event.client_version == "0.1.0"
316315

317316
@pytest.mark.asyncio
318317
async def test_event_ids_are_unique(self):

tests/test_utils/client.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from contextlib import asynccontextmanager
44
from typing import Any, AsyncGenerator
55

6-
from mcp import ClientSession, Implementation
6+
from mcp import ClientSession
77
from mcp.shared.memory import create_connected_server_and_client_session
88

99
try:
@@ -16,11 +16,14 @@
1616

1717

1818
@asynccontextmanager
19-
async def create_test_client(server: Any, client_info: Implementation = None) -> AsyncGenerator[ClientSession, None]:
19+
async def create_test_client(server: Any) -> AsyncGenerator[ClientSession, None]:
2020
"""Create a test client for the given server.
2121
2222
This creates a properly connected MCP client/server pair with full
2323
request context support, similar to how a real MCP connection works.
24+
25+
Note: MCP v1.2.0 doesn't support passing client_info to create_connected_server_and_client_session.
26+
The client_info parameter is kept for compatibility but ignored.
2427
2528
Usage:
2629
server = create_todo_server()
@@ -29,22 +32,19 @@ async def create_test_client(server: Any, client_info: Implementation = None) ->
2932
async with create_test_client(server) as client:
3033
result = await client.call_tool("add_todo", {"text": "Test"})
3134
"""
32-
if not client_info:
33-
client_info = Implementation(
34-
name="TestClient",
35-
version="1.0.0",
36-
)
37-
35+
# MCP v1.2.0 doesn't support client_info parameter
36+
# Default client name is "mcp" and version is "0.1.0"
37+
3838
# Handle both FastMCP and low-level Server
3939
if hasattr(server, "_mcp_server"):
4040
# FastMCP server
4141
async with create_connected_server_and_client_session(
42-
server=server._mcp_server, client_info=client_info
42+
server=server._mcp_server
4343
) as client:
4444
yield client
4545
else:
4646
# Low-level Server
4747
async with create_connected_server_and_client_session(
48-
server=server, client_info=client_info
48+
server=server
4949
) as client:
5050
yield client

0 commit comments

Comments
 (0)