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

from mcp.server.fastmcp import FastMCP

mcp = FastMCP(
    "Echo Server",
    port=9000,
    debug=True,
    log_level="DEBUG",
)


@mcp.tool()
def echo(text: str) -> str:
    """Echo the input text"""
    return text


if __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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions