Skip to content

feat(mcp): support multiple transports (sse, streamable-http) #377

@jimisola

Description

@jimisola

Background

reqstool mcp currently only supports the stdio transport (mcp.run() default). FastMCP already supports two additional transports:

  • sse — HTTP Server-Sent Events (host: 127.0.0.1, port: 8000, path: /sse)
  • streamable-http — stateless HTTP JSON (host: 127.0.0.1, port: 8000, path: /mcp)

Use Case

When multiple clients need to share one reqstool MCP server (e.g. Claude + openspecui simultaneously), HTTP transports allow both to connect to the same running instance rather than each spawning their own process.

Proposed Changes

Add --transport, --port, and --host flags to reqstool mcp:

reqstool mcp --transport streamable-http --port 9001
reqstool mcp --transport sse --port 9001
reqstool mcp  # unchanged stdio default

In server.py, set FastMCP settings and call mcp.run(transport=transport).

Notes

  • streamable-http with stateless_http=True + json_response=True is the simplest for HTTP clients using plain fetch
  • Requires uvicorn + starlette for HTTP transports — should be gated behind a check or added as optional extra
  • Should be validated locally before merging

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