FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
python-sdk/mcp_python/server/stdio.py at v0.2.x · allerion-systems/python-sdk · GitHub
This repository was archived by the owner on Jun 13, 2026. It is now read-only.
allerion-systems
/
python-sdk
Public archive
forked from
modelcontextprotocol/python-sdk
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Pull requests
1
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
python-sdk
/
mcp_python
/
server
/
stdio.py
Copy path
More file actions
More file actions
Latest commit
History
History
History
63 lines (52 loc) · 2.21 KB
Breadcrumbs
python-sdk
/
mcp_python
/
server
/
stdio.py
Copy path
File metadata and controls
63 lines (52 loc) · 2.21 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import
sys
from
contextlib
import
asynccontextmanager
import
anyio
import
anyio
.
lowlevel
from
anyio
.
streams
.
memory
import
MemoryObjectReceiveStream
,
MemoryObjectSendStream
from
mcp_python
.
types
import
JSONRPCMessage
@
asynccontextmanager
async
def
stdio_server
(
stdin
:
anyio
.
AsyncFile
[
str
]
|
None
=
None
,
stdout
:
anyio
.
AsyncFile
[
str
]
|
None
=
None
,
):
"""
Server transport for stdio: this communicates with an MCP client by reading
from the current process' stdin and writing to stdout.
"""
# Purposely not using context managers for these, as we don't want to close
# standard process handles.
if
not
stdin
:
stdin
=
anyio
.
wrap_file
(
sys
.
stdin
)
if
not
stdout
:
stdout
=
anyio
.
wrap_file
(
sys
.
stdout
)
read_stream
:
MemoryObjectReceiveStream
[
JSONRPCMessage
|
Exception
]
read_stream_writer
:
MemoryObjectSendStream
[
JSONRPCMessage
|
Exception
]
write_stream
:
MemoryObjectSendStream
[
JSONRPCMessage
]
write_stream_reader
:
MemoryObjectReceiveStream
[
JSONRPCMessage
]
read_stream_writer
,
read_stream
=
anyio
.
create_memory_object_stream
(
0
)
write_stream
,
write_stream_reader
=
anyio
.
create_memory_object_stream
(
0
)
async
def
stdin_reader
():
try
:
async
with
read_stream_writer
:
async
for
line
in
stdin
:
try
:
message
=
JSONRPCMessage
.
model_validate_json
(
line
)
except
Exception
as
exc
:
await
read_stream_writer
.
send
(
exc
)
continue
await
read_stream_writer
.
send
(
message
)
except
anyio
.
ClosedResourceError
:
await
anyio
.
lowlevel
.
checkpoint
()
async
def
stdout_writer
():
try
:
async
with
write_stream_reader
:
async
for
message
in
write_stream_reader
:
json
=
message
.
model_dump_json
(
by_alias
=
True
,
exclude_none
=
True
)
await
stdout
.
write
(
json
+
"
\n
"
)
await
stdout
.
flush
()
except
anyio
.
ClosedResourceError
:
await
anyio
.
lowlevel
.
checkpoint
()
async
with
anyio
.
create_task_group
()
as
tg
:
tg
.
start_soon
(
stdin_reader
)
tg
.
start_soon
(
stdout_writer
)
yield
read_stream
,
write_stream
Back
|
FazBrowse Home
|
New Git URL