[GH-ISSUE #229] issue: Robyn MCP hangs #103

Closed
opened 2026-10-18 21:11:47 +00:00 by bsakaguchi · 2 comments
Owner

Originally created by @wedobetter on GitHub (Aug 7, 2025).
Original GitHub issue: https://github.com/open-webui/mcpo/issues/229

Check Existing Issues

  • I have searched the existing issues and discussions.
  • I am using the latest version of mcpo.

mcpo Version

0.0.17

Open WebUI Version (if applicable)

0.6.18

Operating System

macOS silicon

Browser (if applicable)

safari

Confirmation

  • I have read and followed all instructions in README.md.
  • I am using the latest version of both MCPO and Open WebUI.
  • I have included the browser console logs.
  • I have included the Docker container logs.
  • I have listed steps to reproduce the bug in detail.

Expected Behavior

server starting successfully

Actual Behavior

it hangs in main.py#L344

Steps to Reproduce

from datetime import datetime
from logging import getLogger
from robyn import Robyn


app = Robyn("test")

log = getLogger()


@app.mcp.tool()
def get_current_time() -> str:
    """
    Get the current time in a more human-readable format.

    :return: The current time.
    """

    now = datetime.now()

    return (f"The current Date and Time is {now.strftime("%A, %B %d, %Y")}, "
            f"{now.strftime("%I:%M:%S %p")}")

if __name__ == "__main__":
    app.start()
curl -s -H "Content-Type: application/json" -d '{"jsonrpc": "2.0", "id": 1, "method": "tools/list", "params": {}}' -X POST http://localhost:8080/mcp | jq
{
  "jsonrpc": "2.0",
  "id": "1",
  "result": {
    "tools": [
      {
        "name": "get_current_time",
        "description": "\n    Get the current time in a more human-readable format.\n\n    :return: The current time.\n    ",
        "inputSchema": {
          "type": "object",
          "properties": {},
          "required": []
        }
      }
    ]
  }
}

mcpo.json:

{
  "mcpServers": {
    "robyn": {
      "type": "streamable_http",
      "url": "http://127.0.0.1:8080/mcp",
      "namespace": "robyn"
    }
  }
}

Logs & Screenshots

Starting MCP OpenAPI Proxy with config file: config.json
2025-08-07 22:16:39,846 - INFO - Starting MCPO Server...
2025-08-07 22:16:39,846 - INFO -   Name: MCP OpenAPI Proxy
2025-08-07 22:16:39,846 - INFO -   Version: 1.0
2025-08-07 22:16:39,846 - INFO -   Description: Automatically generated API from MCP Tool Schemas
2025-08-07 22:16:39,846 - INFO -   Hostname: macbook.local
2025-08-07 22:16:39,846 - INFO -   Port: 8000
2025-08-07 22:16:39,846 - INFO -   API Key: Not Provided
2025-08-07 22:16:39,846 - INFO -   CORS Allowed Origins: ['*']
2025-08-07 22:16:39,846 - INFO -   Path Prefix: /
2025-08-07 22:16:39,847 - INFO - Loading MCP server configurations from: config.json
2025-08-07 22:16:39,847 - INFO - Configuring MCP Servers:
2025-08-07 22:16:39,847 - INFO - Uvicorn server starting...
INFO:     Started server process [3681]
INFO:     Waiting for application startup.
2025-08-07 22:16:39,864 - INFO - Initiating connection for server: 'robyn'...
2025-08-07 22:16:39,903 - INFO - HTTP Request: POST http://127.0.0.1:8080/mcp "HTTP/1.1 200 OK"
2025-08-07 22:16:39,903 - INFO - Negotiated protocol version: 2024-11-05
<it hangs here>

It never prints:

INFO:     Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)

Additional Information

Python version: 3.12.11

Originally created by @wedobetter on GitHub (Aug 7, 2025). Original GitHub issue: https://github.com/open-webui/mcpo/issues/229 ### Check Existing Issues - [x] I have searched the existing issues and discussions. - [x] I am using the latest version of mcpo. ### mcpo Version 0.0.17 ### Open WebUI Version (if applicable) 0.6.18 ### Operating System macOS silicon ### Browser (if applicable) safari ### Confirmation - [x] I have read and followed all instructions in `README.md`. - [x] I am using the latest version of **both** MCPO and Open WebUI. - [x] I have included the browser console logs. - [x] I have included the Docker container logs. - [x] I have listed steps to reproduce the bug in detail. ### Expected Behavior server starting successfully ### Actual Behavior it hangs in [main.py#L344](https://github.com/open-webui/mcpo/blob/main/src/mcpo/main.py#L344) ### Steps to Reproduce ```python from datetime import datetime from logging import getLogger from robyn import Robyn app = Robyn("test") log = getLogger() @app.mcp.tool() def get_current_time() -> str: """ Get the current time in a more human-readable format. :return: The current time. """ now = datetime.now() return (f"The current Date and Time is {now.strftime("%A, %B %d, %Y")}, " f"{now.strftime("%I:%M:%S %p")}") if __name__ == "__main__": app.start() ``` ```bash curl -s -H "Content-Type: application/json" -d '{"jsonrpc": "2.0", "id": 1, "method": "tools/list", "params": {}}' -X POST http://localhost:8080/mcp | jq { "jsonrpc": "2.0", "id": "1", "result": { "tools": [ { "name": "get_current_time", "description": "\n Get the current time in a more human-readable format.\n\n :return: The current time.\n ", "inputSchema": { "type": "object", "properties": {}, "required": [] } } ] } } ``` mcpo.json: ```json { "mcpServers": { "robyn": { "type": "streamable_http", "url": "http://127.0.0.1:8080/mcp", "namespace": "robyn" } } } ``` ### Logs & Screenshots ``` Starting MCP OpenAPI Proxy with config file: config.json 2025-08-07 22:16:39,846 - INFO - Starting MCPO Server... 2025-08-07 22:16:39,846 - INFO - Name: MCP OpenAPI Proxy 2025-08-07 22:16:39,846 - INFO - Version: 1.0 2025-08-07 22:16:39,846 - INFO - Description: Automatically generated API from MCP Tool Schemas 2025-08-07 22:16:39,846 - INFO - Hostname: macbook.local 2025-08-07 22:16:39,846 - INFO - Port: 8000 2025-08-07 22:16:39,846 - INFO - API Key: Not Provided 2025-08-07 22:16:39,846 - INFO - CORS Allowed Origins: ['*'] 2025-08-07 22:16:39,846 - INFO - Path Prefix: / 2025-08-07 22:16:39,847 - INFO - Loading MCP server configurations from: config.json 2025-08-07 22:16:39,847 - INFO - Configuring MCP Servers: 2025-08-07 22:16:39,847 - INFO - Uvicorn server starting... INFO: Started server process [3681] INFO: Waiting for application startup. 2025-08-07 22:16:39,864 - INFO - Initiating connection for server: 'robyn'... 2025-08-07 22:16:39,903 - INFO - HTTP Request: POST http://127.0.0.1:8080/mcp "HTTP/1.1 200 OK" 2025-08-07 22:16:39,903 - INFO - Negotiated protocol version: 2024-11-05 <it hangs here> ``` It never prints: ```INFO: Application startup complete. INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit) ``` ### Additional Information Python version: 3.12.11
bsakaguchi 2026-10-18 21:11:47 +00:00
  • closed this issue
  • added the
    invalid
    label
Author
Owner

@taylorwilsdon commented on GitHub (Aug 9, 2025):

    return (f"The current Date and Time is {now.strftime("%A, %B %d, %Y")}, "
                                                          ^
SyntaxError: f-string: unmatched '('

The sample code is not valid python. I rewrote it to work and started the server:

(mcpo) ➜  mcpo git:(main) ✗ python test_robyn.py
INFO:robyn.logger:SERVER IS RUNNING IN VERBOSE/DEBUG MODE. Set --log-level to WARN to run in production mode.
INFO:robyn.logger:Added route HttpMethod.POST /mcp
INFO:robyn.logger:Added route HttpMethod.GET /openapi.json
INFO:robyn.logger:Added route HttpMethod.GET /docs
INFO:robyn.logger:Docs hosted at http://127.0.0.1:8080/docs
INFO:robyn.logger:Robyn version: 0.72.0
INFO:robyn.logger:Starting server at http://127.0.0.1:8080
INFO:actix_server.builder:starting 1 workers
INFO:actix_server.server:Actix runtime found; starting in Actix runtime
INFO:actix_server.server:starting service: "actix-web-service-127.0.0.1:8080", workers: 1, listening on: 127.0.0.1:8080

Yes, it can receive POST requests to /mcp, but it is not a functional MCP server. MCP Inspector v0.16.2 cannot connect to it, nor can Claude Desktop. I'd redirect my support request to Robyn as this is not a working MCP server and MCPO is sitting in the same place as MCP Inspector, waiting for a valid response until it eventually times out.

Image Image
<!-- gh-comment-id:3171955522 --> @taylorwilsdon commented on GitHub (Aug 9, 2025): ``` File "/Users/taylorwilsdon/git/mcpo/robyn.py", line 21 return (f"The current Date and Time is {now.strftime("%A, %B %d, %Y")}, " ^ SyntaxError: f-string: unmatched '(' ``` The sample code is not valid python. I rewrote it to work and started the server: ``` (mcpo) ➜ mcpo git:(main) ✗ python test_robyn.py INFO:robyn.logger:SERVER IS RUNNING IN VERBOSE/DEBUG MODE. Set --log-level to WARN to run in production mode. INFO:robyn.logger:Added route HttpMethod.POST /mcp INFO:robyn.logger:Added route HttpMethod.GET /openapi.json INFO:robyn.logger:Added route HttpMethod.GET /docs INFO:robyn.logger:Docs hosted at http://127.0.0.1:8080/docs INFO:robyn.logger:Robyn version: 0.72.0 INFO:robyn.logger:Starting server at http://127.0.0.1:8080 INFO:actix_server.builder:starting 1 workers INFO:actix_server.server:Actix runtime found; starting in Actix runtime INFO:actix_server.server:starting service: "actix-web-service-127.0.0.1:8080", workers: 1, listening on: 127.0.0.1:8080 ``` Yes, it can receive POST requests to /mcp, but it is not a functional MCP server. MCP Inspector v0.16.2 cannot connect to it, nor can Claude Desktop. I'd redirect my support request to Robyn as this is not a working MCP server and MCPO is sitting in the same place as MCP Inspector, waiting for a valid response until it eventually times out. <img width="1492" height="125" alt="Image" src="https://github.com/user-attachments/assets/e7328416-8b7a-475b-b07e-9de4044bff37" /> <img width="316" height="499" alt="Image" src="https://github.com/user-attachments/assets/b54f6f95-48a9-49ed-94ed-1c55f550fd94" />
Author
Owner

@taylorwilsdon commented on GitHub (Aug 9, 2025):

I also tried with their quickstart code here and it is not functional: https://robyn.tech/documentation/en/api_reference/mcps#claude-desktop-integration

Funny enough, robyn includes an autogenerated OpenAPI spec that DOES seem to work, so you don't need MCPO for this at all even if it did work - it's already natively making OpenAPI available, which is what Open WebUI wants and MCPO converts it to.

<!-- gh-comment-id:3171956735 --> @taylorwilsdon commented on GitHub (Aug 9, 2025): I also tried with their quickstart code here and it is not functional: https://robyn.tech/documentation/en/api_reference/mcps#claude-desktop-integration Funny enough, robyn includes an autogenerated OpenAPI spec that DOES seem to work, so you don't need MCPO for this at all even if it did work - it's already natively making OpenAPI available, which is what Open WebUI wants and MCPO converts it to.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
open-webui/mcpo#103
No description provided.