modelcontextprotocol / modelcontextprotocol/python-sdk
STDIO hangs forever when the using multiprocessing in tools
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Python
- Estrellas
- 24.3k
- Forks
- 4k
- Merge medio
- 1 d 1 h
- PR fusionados (30 d)
- 31
Descripción
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
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Comienza ejecutando test_client.py con test_mcp.py y reproduce el bloqueo después de que se registre CallToolRequest. Sigue la interacción entre el pool de multiprocessing de la herramienta sum y los puntos de entrada del cliente/servidor stdio. Se considera terminado cuando el ejemplo se completa y devuelve el resultado de la herramienta en lugar de quedarse bloqueado.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- python
- Área
- backend
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 35/100