Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Streamable HTTP transport fails when accessing MCP server on Cloud Run using sdk #1053

Copy link
Copy link
@sidgangs99

Description

@sidgangs99
Issue body actions

Initial Checks

Description

Description

When using the python-sdk with transport set to streamable-http, the connection to a remote MCP server deployed on Google Cloud Run does not establish. The API stays in a pending state, and no updates are received.

However, the same MCP server works fine under the following conditions:

  • When accessed via Google Cloud Proxy
  • When transport is changed to SSE
  • When using the JS SDK, streamable-http transport works without issues

This suggests a compatibility or configuration issue specifically between python-sdk's streamable-http transport and direct access to Cloud Run URLs.


Reproduction Steps

  1. Deploy an MCP server to Cloud Run using this official guide:
    https://cloud.google.com/blog/topics/developers-practitioners/build-and-deploy-a-remote-mcp-server-to-google-cloud-run-in-under-10-minutes
  2. Use:
    • Transport: streamable-http
    • Endpoint: Public URL of Cloud Run MCP server
  3. Attempt to connect using <cloud_run_url>/mcp
  4. Observe: API status remains in pending and no data is received

Observations

  • Switching transport to SSE resolves the issue.
  • Using a Cloud Proxy to access the MCP server also works with streamable-http.
  • JS SDK does not face this issue under the same deployment conditions.
  • The Cloud Run URL is publicly accessible and works with other tools.

Environment

  • SDK: python-sdk (v1.9.4)
  • MCP Server: Deployed on Cloud Run
  • Python version: [3.12.11]
  • OS - Docker image: [linux/amd64]

Expected Behavior

The SDK should establish a connection to the Cloud Run-hosted MCP server and transition the API status from pending to active.


Additional Notes

This might point to either:

  • SDK's HTTP streaming implementation not being fully compatible with Cloud Run’s networking behavior
  • Some internal headers or keep-alive expectations that differ between SSE and streamable-http

Any guidance, workaround, or fix would be appreciated.

Example Code

from mcp.server.fastmcp import FastMCP

# Create server
mcp = FastMCP("Echo Server")


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


def main():
    mcp.run(transport="streamable-http", host="0.0.0.0", port=8080)


if __name__ == "__main__":
    main()

Python & MCP Python SDK

SDK Version: 1.9.4
Python Version: 3.12.11
Reactions are currently unavailable

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingSomething isn't workingneeds confirmationNeeds confirmation that the PR is actually required or needed.Needs confirmation that the PR is actually required or needed.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      Morty Proxy This is a proxified and sanitized view of the page, visit original site.