Skip to content

Simple echo MCP server fails to start with mcp.run() #337

Description

@sirianni

Describe the bug
Unable to start MCP server

To Reproduce

frommcp.server.fastmcpimportFastMCPmcp=FastMCP(
"Echo Server",
port=9000,
debug=True,
log_level="DEBUG",
)
@mcp.tool()defecho(text: str) ->str:
"""Echo the input text"""returntextif__name__=="__main__":
mcp.run()
$ uv run mcp_server.py [03/20/25 16:31:00] DEBUG Using selector: EpollSelector <---HANG--->
$ curl http://localhost:9000
curl: (7) Failed to connect to localhost port 9000 after 0 ms: Could not connect to server

Expected behavior
Server starts

Additional information

Stack trace on SIGINT

 File "/home/sirianni/src/example/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 2303, in run
return runner.run(wrapper())
^^^^^^^^^^^^^^^^^^^^^
File "/home/sirianni/.local/share/uv/python/cpython-3.12.9-linux-x86_64-gnu/lib/python3.12/asyncio/runners.py", line 118, in run
return self._loop.run_until_complete(task)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/sirianni/.local/share/uv/python/cpython-3.12.9-linux-x86_64-gnu/lib/python3.12/asyncio/base_events.py", line 678, in run_until_complete
self.run_forever()
File "/home/sirianni/.local/share/uv/python/cpython-3.12.9-linux-x86_64-gnu/lib/python3.12/asyncio/base_events.py", line 645, in run_forever
self._run_once()
File "/home/sirianni/.local/share/uv/python/cpython-3.12.9-linux-x86_64-gnu/lib/python3.12/asyncio/base_events.py", line 1961, in _run_once
event_list = self._selector.select(timeout)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/sirianni/.local/share/uv/python/cpython-3.12.9-linux-x86_64-gnu/lib/python3.12/selectors.py", line 468, in select
fd_event_list = self._selector.poll(timeout, max_ev)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/sirianni/.local/share/uv/python/cpython-3.12.9-linux-x86_64-gnu/lib/python3.12/asyncio/runners.py", line 157, in _on_sigint
raise KeyboardInterrupt()
KeyboardInterrupt
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/sirianni/src/example/mcp_server.py", line 18, in <module>
mcp.run()
File "/home/sirianni/src/example/.venv/lib/python3.12/site-packages/mcp/server/fastmcp/server.py", line 154, in run
anyio.run(self.run_stdio_async)
File "/home/sirianni/src/example/.venv/lib/python3.12/site-packages/anyio/_core/_eventloop.py", line 74, in run
return async_backend.run(func, args, {}, backend_options)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/sirianni/src/example/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 2302, in run
with Runner(debug=debug, loop_factory=loop_factory) as runner:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/sirianni/.local/share/uv/python/cpython-3.12.9-linux-x86_64-gnu/lib/python3.12/asyncio/runners.py", line 62, in __exit__
self.close()
File "/home/sirianni/.local/share/uv/python/cpython-3.12.9-linux-x86_64-gnu/lib/python3.12/asyncio/runners.py", line 70, in close
_cancel_all_tasks(loop)
File "/home/sirianni/.local/share/uv/python/cpython-3.12.9-linux-x86_64-gnu/lib/python3.12/asyncio/runners.py", line 199, in _cancel_all_tasks
to_cancel = tasks.all_tasks(loop)
^^^^^^^^^^^^^^^^^^^^^
File "/home/sirianni/.local/share/uv/python/cpython-3.12.9-linux-x86_64-gnu/lib/python3.12/asyncio/tasks.py", line 59, in all_tasks
scheduled_tasks = list(_scheduled_tasks)
^^^^^^^^^^^^^^^^^^^^^^
File "/home/sirianni/.local/share/uv/python/cpython-3.12.9-linux-x86_64-gnu/lib/python3.12/_weakrefset.py", line 64, in __iter__
with _IterationGuard(self):
^^^^^^^^^^^^^^^^^^^^^
KeyboardInterrupt

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions