Skip to content

Commit 2ef8cdc

Browse files
committed
fix: ensure proper stream cleanup and formatting
- Add try/finally to test_proxy_bidirectional_forwarding for guaranteed cleanup - Fix missing newlines in example files (README.md, pyproject.toml)
1 parent c18709c commit 2ef8cdc

File tree

3 files changed

+28
-31
lines changed

3 files changed

+28
-31
lines changed

examples/servers/simple-proxy/README.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,5 +124,3 @@ The proxy creates two transport connections:
124124
- **Server-facing**: Communicates with the backend MCP server via stdio_client
125125

126126
All messages are forwarded bidirectionally through the `mcp_proxy()` function.
127-
128-

examples/servers/simple-proxy/pyproject.toml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,5 +45,3 @@ target-version = "py310"
4545

4646
[dependency-groups]
4747
dev = ["pyright>=1.1.378", "pytest>=8.3.3", "ruff>=0.6.9"]
48-
49-

tests/shared/test_proxy.py

Lines changed: 28 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -102,33 +102,34 @@ async def test_proxy_bidirectional_forwarding(create_streams):
102102
),
103103
) = create_streams()
104104

105-
# Create test messages
106-
client_request = JSONRPCRequest(jsonrpc="2.0", id="client_1", method="client_method", params={})
107-
server_request = JSONRPCRequest(jsonrpc="2.0", id="server_1", method="server_method", params={})
108-
109-
client_msg = SessionMessage(JSONRPCMessage(client_request))
110-
server_msg = SessionMessage(JSONRPCMessage(server_request))
111-
112-
async with mcp_proxy(client_streams, server_streams):
113-
# Send messages from both sides
114-
await client_read_writer.send(client_msg)
115-
await server_read_writer.send(server_msg)
116-
117-
# Verify both arrive at their destinations
118-
with anyio.fail_after(1):
119-
# Client message should arrive at server
120-
received_at_server = await server_write_reader.receive()
121-
assert received_at_server.message.root.id == "client_1"
122-
123-
# Server message should arrive at client
124-
received_at_client = await client_write_reader.receive()
125-
assert received_at_client.message.root.id == "server_1"
126-
127-
# Clean up test streams
128-
await client_read_writer.aclose()
129-
await client_write_reader.aclose()
130-
await server_read_writer.aclose()
131-
await server_write_reader.aclose()
105+
try:
106+
# Create test messages
107+
client_request = JSONRPCRequest(jsonrpc="2.0", id="client_1", method="client_method", params={})
108+
server_request = JSONRPCRequest(jsonrpc="2.0", id="server_1", method="server_method", params={})
109+
110+
client_msg = SessionMessage(JSONRPCMessage(client_request))
111+
server_msg = SessionMessage(JSONRPCMessage(server_request))
112+
113+
async with mcp_proxy(client_streams, server_streams):
114+
# Send messages from both sides
115+
await client_read_writer.send(client_msg)
116+
await server_read_writer.send(server_msg)
117+
118+
# Verify both arrive at their destinations
119+
with anyio.fail_after(1):
120+
# Client message should arrive at server
121+
received_at_server = await server_write_reader.receive()
122+
assert received_at_server.message.root.id == "client_1"
123+
124+
# Server message should arrive at client
125+
received_at_client = await client_write_reader.receive()
126+
assert received_at_client.message.root.id == "server_1"
127+
finally:
128+
# Clean up test streams
129+
await client_read_writer.aclose()
130+
await client_write_reader.aclose()
131+
await server_read_writer.aclose()
132+
await server_write_reader.aclose()
132133

133134

134135
@pytest.mark.anyio

0 commit comments

Comments
 (0)