STDIO hangs forever when the using multiprocessing in tools
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 35/100
Direzione di ricerca
Inizia eseguendo test_client.py con test_mcp.py e riproduci il blocco dopo che CallToolRequest viene registrato. Traccia l'interazione tra il pool multiprocessing nello strumento sum e i punti di ingresso del client/server stdio. Il lavoro è completato quando l'esempio termina e restituisce il risultato dello strumento invece di rimanere bloccato.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Describe the bug
when multiprocessing in a tool, and start mcp client by STDIO, the mcp server never response.
To Reproduce
Steps to reproduce the behavior:
- write mcp server:
## test_mcp.py
from mcp.server.fastmcp import FastMCP
import multiprocessing as mp
mcp = FastMCP()
@mcp.tool()
def sum() -> int:
"count number"
with mp.Pool(processes=2) as pool:
res = pool.imap(str, range(10))
res = list(res)
return res
if __name__ == '__main__':
mcp.run()
- write mcp client usig stdio
## test_client.py
from mcp import ClientSession, StdioServerParameters, types
from mcp.client.stdio import stdio_client
# Create server parameters for stdio connection
server_params = StdioServerParameters(
command="python", # Executable
args=["test_mcp.py"], # Optional command line arguments
env=None, # Optional environment variables
)
async def run():
async with stdio_client(server_params) as (read, write):
async with ClientSession(
read, write
) as session:
# Initialize the connection
await session.initialize()
resources = await session.list_resources()
# List available tools
tools = await session.list_tools()
print(tools)
result = await session.call_tool(
"sum",
)
print(result)
asyncio.run(run())
- test running
$ python test_client.py
[05/27/25 15:42:13] INFO Processing request of type ListResourcesRequest server.py:551
INFO Processing request of type ListToolsRequest server.py:551
meta=None nextCursor=None tools=[Tool(name='sum', description='count number', inputSchema={'properties': {}, 'title': 'sumArguments', 'type': 'object'}, annotations=None)]
INFO Processing request of type CallToolRequest server.py:551
The program is stuck here and won't continue running
Version
Name: mcp
Version: 1.9.0
Summary: Model Context Protocol SDK
Home-page:
Author: Anthropic, PBC.
Author-email:
License: MIT
Location: /data/software/micromamba/envs/gbi/lib/python3.10/site-packages
Requires: anyio, httpx, httpx-sse, pydantic, pydantic-settings, python-multipart, sse-starlette, starlette, uvicorn
Required-by: camel-ai, cellrank-mcp, fast-agent-mcp, fastmcp, liana-mcp, mcp-server-calculator, scmcp, scmcp-utils, scmcp_shared
- Lingua principale
- Python
- Stelle
- 24.3k
- Fork
- 4k
- Merge medio
- 1g 19m
- PR unite (30g)
- 29
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di modelcontextprotocol/python-sdk
-
v1 v2
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
modelcontextprotocol/python-sdk#3546 · 5 commenti ·
-
v1 v2
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
modelcontextprotocol/python-sdk#3545 · 1 commento ·
-
v1 v2
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 91/100
modelcontextprotocol/python-sdk#3508 · 2 commenti ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 64/100
modelcontextprotocol/python-sdk#3504 ·
-
v1 v2
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
modelcontextprotocol/python-sdk#3492 · 1 commento ·
Tutte le issue di modelcontextprotocol/python-sdk
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
-
🐛 Bug 🔔 Pending processing
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
jumpserver/jumpserver#17584 ·