[GH-ISSUE #184] issue: ability to filter stream events on global MCP SDK issue #84

Open
opened 2026-10-18 21:11:28 +00:00 by bsakaguchi · 0 comments
Owner

Originally created by @Fastidius-au on GitHub (Jun 26, 2025).
Original GitHub issue: https://github.com/open-webui/mcpo/issues/184

Check Existing Issues

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

mcpo Version

ghcr.io/open-webui/mcpo:main

Open WebUI Version (if applicable)

No response

Operating System

windows ubuntu.......its message filtering code..

Browser (if applicable)

No response

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

not sure if this is directly related but I feel it is as it events to sse

{"jsonrpc":"2.0","method":"sse/connection",…}

acuvity has a minibridge with security and can be treated a bit like docker so you can attach to it and see stdio etc. live debug for mcp and ability to treat a bit like docker without docker...

anyways it spits these out and I had to make a policy file for it. A

Package minibridge

By default, deny everything

default allow = false

Whitelist only these notifications:

allow = true if input.method == "notifications/message"
allow = true if input.method == "notifications/progress"
allow = true if input.method == "notifications/cancelled"

Actual Behavior

crashes on tool parsing because response is part tools and part stdio I guess

Steps to Reproduce

sse with http fallback required for acuvity minibridge with some wrapping, seems to output more than what you want and you choke on a bad message type. Just need to filter out the not mcp messages to stream relay. try block the message parser so if not match drop.

https://github.com/acuvity/minibridge

lookit up seems good concept

Logs & Screenshots

docker run -it --rm -p 7778:8000 -v "$(pwd)/mcpo-servers-config.json:/config/mcpo-servers-config.json:ro" ghcr.io/open-webui/mcpo:main --api-key "top-secret" --config /config/mcpo-servers-config.json
Starting MCP OpenAPI Proxy with config file: /config/mcpo-servers-config.json
2025-06-26 15:17:13,762 - INFO - Starting MCPO Server...
2025-06-26 15:17:13,762 - INFO - Name: MCP OpenAPI Proxy
2025-06-26 15:17:13,762 - INFO - Version: 1.0
2025-06-26 15:17:13,762 - INFO - Description: Automatically generated API from MCP Tool Schemas
2025-06-26 15:17:13,762 - INFO - Hostname: 8fd25e6b299d
2025-06-26 15:17:13,762 - INFO - Port: 8000
2025-06-26 15:17:13,762 - INFO - API Key: Provided
2025-06-26 15:17:13,762 - INFO - CORS Allowed Origins: ['*']
2025-06-26 15:17:13,762 - INFO - Path Prefix: /
2025-06-26 15:17:13,763 - INFO - Loading MCP server configurations from: /config/mcpo-servers-config.json
2025-06-26 15:17:13,763 - INFO - Configured MCP Servers:
2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server '21st-dev-magic' with URL: http://192.168.0.110:9001/sse
2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'brave-search' with URL: http://192.168.0.110:9003/sse
2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'calculator' with URL: http://192.168.0.110:9004/sse
2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'httpx' with URL: http://192.168.0.110:9006/sse
2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'github' with URL: http://192.168.0.110:9007/sse
2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'playwright' with URL: http://192.168.0.110:9008/sse
2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'fetch' with URL: http://192.168.0.110:9009/sse
2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'chart' with URL: http://192.168.0.110:90/sse
2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'desktop-commander' with URL: http://192.168.0.110:9012/sse
2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'git' with URL: http://192.168.0.110:9013/sse
2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'gitlab' with URL: http://192.168.0.110:9014/sse
2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'microsoft-graph' with URL: http://192.168.0.110:9015/sse
2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'sequential-thinking' with URL: http://192.168.0.110:9016/sse
2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'neo4j-memory' with URL: http://192.168.0.110:9018/sse
2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'waybackurls' with URL: http://192.168.0.110:9019/sse
2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'nmap' with URL: http://192.168.0.110:9020/sse
2025-06-26 15:17:13,765 - INFO - Uvicorn server starting...
INFO: Started server process [1]
INFO: Waiting for application startup.
2025-06-26 15:17:13,878 - INFO - HTTP Request: GET http://192.168.0.110:9001/sse "HTTP/1.1 200 OK"
2025-06-26 15:17:13,880 - INFO - HTTP Request: POST http://192.168.0.110:9001/message?sessionId=0197acd0-7c16-7f19-843a-0a7469aff035 "HTTP/1.1 202 Accepted"
2025-06-26 15:17:13,980 - WARNING - Failed to validate notification: 13 validation errors for ServerNotification
CancelledNotification.method
Input should be 'notifications/cancelled' [type=literal_error, input_value='window/logMessage', input_type=str]
For further information visit https://errors.pydantic.dev/2.11/v/literal_error
CancelledNotification.params.requestId
Field required [type=missing, input_value={'type': 3, 'message': 'S...ver v0.0.46 (PID: 362)'}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.11/v/missing
ProgressNotification.method
Input should be 'notifications/progress' [type=literal_error, input_value='window/logMessage', input_type=str]
For further information visit https://errors.pydantic.dev/2.11/v/literal_error
ProgressNotification.params.progressToken
Field required [type=missing, input_value={'type': 3, 'message': 'S...ver v0.0.46 (PID: 362)'}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.11/v/missing
ProgressNotification.params.progress
Field required [type=missing, input_value={'type': 3, 'message': 'S...ver v0.0.46 (PID: 362)'}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.11/v/missing
LoggingMessageNotification.method
Input should be 'notifications/message' [type=literal_error, input_value='window/logMessage', input_type=str]
For further information visit https://errors.pydantic.dev/2.11/v/literal_error
LoggingMessageNotification.params.level
Field required [type=missing, input_value={'type': 3, 'message': 'S...ver v0.0.46 (PID: 362)'}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.11/v/missing
LoggingMessageNotification.params.data
Field required [type=missing, input_value={'type': 3, 'message': 'S...ver v0.0.46 (PID: 362)'}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.11/v/missing
ResourceUpdatedNotification.method
Input should be 'notifications/resources/updated' [type=literal_error, input_value='window/logMessage', input_type=str]
For further information visit https://errors.pydantic.dev/2.11/v/literal_error
ResourceUpdatedNotification.params.uri
Field required [type=missing, input_value={'type': 3, 'message': 'S...ver v0.0.46 (PID: 362)'}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.11/v/missing
ResourceListChangedNotification.method
Input should be 'notifications/resources/list_changed' [type=literal_error, input_value='window/logMessage', input_type=str]
For further information visit https://errors.pydantic.dev/2.11/v/literal_error
ToolListChangedNotification.method
Input should be 'notifications/tools/list_changed' [type=literal_error, input_value='window/logMessage', input_type=str]
For further information visit https://errors.pydantic.dev/2.11/v/literal_error
PromptListChangedNotification.method
Input should be 'notifications/prompts/list_changed' [type=literal_error, input_value='window/logMessage', input_type=str]
For further information visit https://errors.pydantic.dev/2.11/v/literal_error. Message was: method='window/logMessage' params={'type': 3, 'message': 'Starting server v0.0.46 (PID: 362)'} jsonrpc='2.0'
2025-06-26 15:17:13,980 - WARNING - Failed to validate notification: 13 validation errors for ServerNotification
CancelledNotification.method
Input should be 'notifications/cancelled' [type=literal_error, input_value='window/logMessage', input_type=str]
For further information visit https://errors.pydantic.dev/2.11/v/literal_error
CancelledNotification.params.requestId
Field required [type=missing, input_value={'type': 3, 'message': 'S...ver started (PID: 362)'}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.11/v/missing
ProgressNotification.method
Input should be 'notifications/progress' [type=literal_error, input_value='window/logMessage', input_type=str]
For further information visit https://errors.pydantic.dev/2.11/v/literal_error
ProgressNotification.params.progressToken
Field required [type=missing, input_value={'type': 3, 'message': 'S...ver started (PID: 362)'}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.11/v/missing
ProgressNotification.params.progress
Field required [type=missing, input_value={'type': 3, 'message': 'S...ver started (PID: 362)'}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.11/v/missing
LoggingMessageNotification.method
Input should be 'notifications/message' [type=literal_error, input_value='window/logMessage', input_type=str]
For further information visit https://errors.pydantic.dev/2.11/v/literal_error
LoggingMessageNotification.params.level
Field required [type=missing, input_value={'type': 3, 'message': 'S...ver started (PID: 362)'}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.11/v/missing
LoggingMessageNotification.params.data
Field required [type=missing, input_value={'type': 3, 'message': 'S...ver started (PID: 362)'}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.11/v/missing
ResourceUpdatedNotification.method
Input should be 'notifications/resources/updated' [type=literal_error, input_value='window/logMessage', input_type=str]
For further information visit https://errors.pydantic.dev/2.11/v/literal_error
ResourceUpdatedNotification.params.uri
Field required [type=missing, input_value={'type': 3, 'message': 'S...ver started (PID: 362)'}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.11/v/missing
ResourceListChangedNotification.method
Input should be 'notifications/resources/list_changed' [type=literal_error, input_value='window/logMessage', input_type=str]
For further information visit https://errors.pydantic.dev/2.11/v/literal_error
ToolListChangedNotification.method
Input should be 'notifications/tools/list_changed' [type=literal_error, input_value='window/logMessage', input_type=str]
For further information visit https://errors.pydantic.dev/2.11/v/literal_error
PromptListChangedNotification.method
Input should be 'notifications/prompts/list_changed' [type=literal_error, input_value='window/logMessage', input_type=str]
For further information visit https://errors.pydantic.dev/2.11/v/literal_error. Message was: method='window/logMessage' params={'type': 3, 'message': 'Server started (PID: 362)'} jsonrpc='2.0'
2025-06-26 15:17:13,986 - INFO - HTTP Request: POST http://192.168.0.110:9001/message?sessionId=0197acd0-7c16-7f19-843a-0a7469aff035 "HTTP/1.1 202 Accepted"
2025-06-26 15:17:13,987 - INFO - HTTP Request: POST http://192.168.0.110:9001/message?sessionId=0197acd0-7c16-7f19-843a-0a7469aff035 "HTTP/1.1 202 Accepted"
2025-06-26 15:17:14,020 - INFO - HTTP Request: GET http://192.168.0.110:9003/sse "HTTP/1.1 200 OK"
2025-06-26 15:17:14,022 - INFO - HTTP Request: POST http://192.168.0.110:9003/message?sessionId=0197acd0-7ca4-7f51-9715-03111d8d66b2 "HTTP/1.1 202 Accepted"
2025-06-26 15:17:14,076 - INFO - HTTP Request: POST http://192.168.0.110:9003/message?sessionId=0197acd0-7ca4-7f51-9715-03111d8d66b2 "HTTP/1.1 202 Accepted"
2025-06-26 15:17:14,077 - INFO - HTTP Request: POST http://192.168.0.110:9003/message?sessionId=0197acd0-7ca4-7f51-9715-03111d8d66b2 "HTTP/1.1 202 Accepted"
2025-06-26 15:17:14,105 - INFO - HTTP Request: GET http://192.168.0.110:9004/sse "HTTP/1.1 200 OK"
2025-06-26 15:17:14,107 - INFO - HTTP Request: POST http://192.168.0.110:9004/message?sessionId=0197acd0-7cf9-7af1-aa56-2da1e1224a94 "HTTP/1.1 202 Accepted"
2025-06-26 15:17:15,281 - INFO - HTTP Request: POST http://192.168.0.110:9004/message?sessionId=0197acd0-7cf9-7af1-aa56-2da1e1224a94 "HTTP/1.1 202 Accepted"
2025-06-26 15:17:15,282 - INFO - HTTP Request: POST http://192.168.0.110:9004/message?sessionId=0197acd0-7cf9-7af1-aa56-2da1e1224a94 "HTTP/1.1 202 Accepted"
2025-06-26 15:17:15,310 - INFO - HTTP Request: GET http://192.168.0.110:9006/sse "HTTP/1.1 200 OK"
2025-06-26 15:17:15,312 - INFO - HTTP Request: POST http://192.168.0.110:9006/message?sessionId=0197acd0-81ae-7d4a-83cf-2284124b66ff "HTTP/1.1 202 Accepted"
2025-06-26 15:17:15,386 - INFO - HTTP Request: POST http://192.168.0.110:9006/message?sessionId=0197acd0-81ae-7d4a-83cf-2284124b66ff "HTTP/1.1 202 Accepted"
2025-06-26 15:17:15,387 - INFO - HTTP Request: POST http://192.168.0.110:9006/message?sessionId=0197acd0-81ae-7d4a-83cf-2284124b66ff "HTTP/1.1 202 Accepted"
2025-06-26 15:17:15,416 - INFO - HTTP Request: GET http://192.168.0.110:9007/sse "HTTP/1.1 200 OK"
2025-06-26 15:17:15,418 - INFO - HTTP Request: POST http://192.168.0.110:9007/message?sessionId=0197acd0-8218-7225-9955-7743d86ac3d0 "HTTP/1.1 202 Accepted"
2025-06-26 15:17:15,420 - INFO - HTTP Request: POST http://192.168.0.110:9007/message?sessionId=0197acd0-8218-7225-9955-7743d86ac3d0 "HTTP/1.1 202 Accepted"
2025-06-26 15:17:15,421 - INFO - HTTP Request: POST http://192.168.0.110:9007/message?sessionId=0197acd0-8218-7225-9955-7743d86ac3d0 "HTTP/1.1 202 Accepted"
2025-06-26 15:17:15,509 - INFO - HTTP Request: GET http://192.168.0.110:9008/sse "HTTP/1.1 200 OK"
2025-06-26 15:17:15,511 - INFO - HTTP Request: POST http://192.168.0.110:9008/message?sessionId=0197acd0-8275-7cfb-a74c-4516ee0d6ed9 "HTTP/1.1 202 Accepted"
2025-06-26 15:17:15,898 - INFO - HTTP Request: POST http://192.168.0.110:9008/message?sessionId=0197acd0-8275-7cfb-a74c-4516ee0d6ed9 "HTTP/1.1 202 Accepted"
2025-06-26 15:17:15,899 - INFO - HTTP Request: POST http://192.168.0.110:9008/message?sessionId=0197acd0-8275-7cfb-a74c-4516ee0d6ed9 "HTTP/1.1 202 Accepted"
2025-06-26 15:17:15,947 - INFO - HTTP Request: GET http://192.168.0.110:9009/sse "HTTP/1.1 200 OK"
2025-06-26 15:17:15,949 - INFO - HTTP Request: POST http://192.168.0.110:9009/message?sessionId=0197acd0-842b-7075-b910-9bfdd11fce14 "HTTP/1.1 202 Accepted"
2025-06-26 15:17:17,206 - INFO - HTTP Request: POST http://192.168.0.110:9009/message?sessionId=0197acd0-842b-7075-b910-9bfdd11fce14 "HTTP/1.1 202 Accepted"
2025-06-26 15:17:17,207 - INFO - HTTP Request: POST http://192.168.0.110:9009/message?sessionId=0197acd0-842b-7075-b910-9bfdd11fce14 "HTTP/1.1 202 Accepted"
ERROR: + Exception Group Traceback (most recent call last):
| File "/app/.venv/lib/python3.11/site-packages/starlette/routing.py", line 692, in lifespan
| async with self.lifespan_context(app) as maybe_state:
| File "/usr/lib/python3.11/contextlib.py", line 204, in aenter
| return await anext(self.gen)
| ^^^^^^^^^^^^^^^^^^^^^
| File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 99, in lifespan
| async with AsyncExitStack() as stack:
| File "/usr/lib/python3.11/contextlib.py", line 733, in aexit
| raise exc_details[1]
| File "/usr/lib/python3.11/contextlib.py", line 716, in aexit
| cb_suppress = await cb(*exc_details)
| ^^^^^^^^^^^^^^^^^^^^^^
| File "/usr/lib/python3.11/contextlib.py", line 222, in aexit
| await self.gen.athrow(typ, value, traceback)
| File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 121, in lifespan
| async with sse_client(
| File "/usr/lib/python3.11/contextlib.py", line 222, in aexit
| await self.gen.athrow(typ, value, traceback)
| File "/app/.venv/lib/python3.11/site-packages/mcp/client/sse.py", line 54, in sse_client
| async with anyio.create_task_group() as tg:
| File "/app/.venv/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 772, in aexit
| raise BaseExceptionGroup(
| ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
+-+---------------- 1 ----------------
| Exception Group Traceback (most recent call last):
| File "/app/.venv/lib/python3.11/site-packages/mcp/client/sse.py", line 155, in sse_client
| yield read_stream, write_stream
| File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 127, in lifespan
| async with ClientSession(reader, writer) as session:
| File "/app/.venv/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 772, in aexit
| raise BaseExceptionGroup(
| ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
+-+---------------- 1 ----------------
| Exception Group Traceback (most recent call last):
| File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 130, in lifespan
| yield
| File "/usr/lib/python3.11/contextlib.py", line 716, in aexit
| cb_suppress = await cb(*exc_details)
| ^^^^^^^^^^^^^^^^^^^^^^
| File "/usr/lib/python3.11/contextlib.py", line 222, in aexit
| await self.gen.athrow(typ, value, traceback)
| File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 121, in lifespan
| async with sse_client(
| File "/usr/lib/python3.11/contextlib.py", line 222, in aexit
| await self.gen.athrow(typ, value, traceback)
| File "/app/.venv/lib/python3.11/site-packages/mcp/client/sse.py", line 54, in sse_client
| async with anyio.create_task_group() as tg:
| File "/app/.venv/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 772, in aexit
| raise BaseExceptionGroup(
| ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
+-+---------------- 1 ----------------
| Exception Group Traceback (most recent call last):
| File "/app/.venv/lib/python3.11/site-packages/mcp/client/sse.py", line 155, in sse_client
| yield read_stream, write_stream
| File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 127, in lifespan
| async with ClientSession(reader, writer) as session:
| File "/app/.venv/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 772, in aexit
| raise BaseExceptionGroup(
| ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
+-+---------------- 1 ----------------
| Exception Group Traceback (most recent call last):
| File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 130, in lifespan
| yield
| File "/usr/lib/python3.11/contextlib.py", line 716, in aexit
| cb_suppress = await cb(*exc_details)
| ^^^^^^^^^^^^^^^^^^^^^^
| File "/usr/lib/python3.11/contextlib.py", line 222, in aexit
| await self.gen.athrow(typ, value, traceback)
| File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 121, in lifespan
| async with sse_client(
| File "/usr/lib/python3.11/contextlib.py", line 222, in aexit
| await self.gen.athrow(typ, value, traceback)
| File "/app/.venv/lib/python3.11/site-packages/mcp/client/sse.py", line 54, in sse_client
| async with anyio.create_task_group() as tg:
| File "/app/.venv/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 772, in aexit
| raise BaseExceptionGroup(
| ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
+-+---------------- 1 ----------------
| Exception Group Traceback (most recent call last):
| File "/app/.venv/lib/python3.11/site-packages/mcp/client/sse.py", line 155, in sse_client
| yield read_stream, write_stream
| File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 127, in lifespan
| async with ClientSession(reader, writer) as session:
| File "/app/.venv/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 772, in aexit
| raise BaseExceptionGroup(
| ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
+-+---------------- 1 ----------------
| Exception Group Traceback (most recent call last):
| File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 130, in lifespan
| yield
| File "/usr/lib/python3.11/contextlib.py", line 716, in aexit
| cb_suppress = await cb(*exc_details)
| ^^^^^^^^^^^^^^^^^^^^^^
| File "/usr/lib/python3.11/contextlib.py", line 222, in aexit
| await self.gen.athrow(typ, value, traceback)
| File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 121, in lifespan
| async with sse_client(
| File "/usr/lib/python3.11/contextlib.py", line 222, in aexit
| await self.gen.athrow(typ, value, traceback)
| File "/app/.venv/lib/python3.11/site-packages/mcp/client/sse.py", line 54, in sse_client
| async with anyio.create_task_group() as tg:
| File "/app/.venv/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 772, in aexit
| raise BaseExceptionGroup(
| ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
+-+---------------- 1 ----------------
| Exception Group Traceback (most recent call last):
| File "/app/.venv/lib/python3.11/site-packages/mcp/client/sse.py", line 155, in sse_client
| yield read_stream, write_stream
| File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 127, in lifespan
| async with ClientSession(reader, writer) as session:
| File "/app/.venv/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 772, in aexit
| raise BaseExceptionGroup(
| ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
+-+---------------- 1 ----------------
| Exception Group Traceback (most recent call last):
| File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 130, in lifespan
| yield
| File "/usr/lib/python3.11/contextlib.py", line 716, in aexit
| cb_suppress = await cb(*exc_details)
| ^^^^^^^^^^^^^^^^^^^^^^
| File "/usr/lib/python3.11/contextlib.py", line 222, in aexit
| await self.gen.athrow(typ, value, traceback)
| File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 121, in lifespan
| async with sse_client(
| File "/usr/lib/python3.11/contextlib.py", line 222, in aexit
| await self.gen.athrow(typ, value, traceback)
| File "/app/.venv/lib/python3.11/site-packages/mcp/client/sse.py", line 54, in sse_client
| async with anyio.create_task_group() as tg:
| File "/app/.venv/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 772, in aexit
| raise BaseExceptionGroup(
| ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
+-+---------------- 1 ----------------
| Exception Group Traceback (most recent call last):
| File "/app/.venv/lib/python3.11/site-packages/mcp/client/sse.py", line 155, in sse_client
| yield read_stream, write_stream
| File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 127, in lifespan
| async with ClientSession(reader, writer) as session:
| File "/app/.venv/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 772, in aexit
| raise BaseExceptionGroup(
| ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
+-+---------------- 1 ----------------
| ... (max_group_depth is 10)
+------------------------------------

ERROR: Application startup failed. Exiting.

Additional Information

docker run -it --rm -p 7778:8000 -v "$(pwd)/mcpo-servers-config.json:/config/mcpo-servers-config.json:ro" ghcr.io/open-webui/mcpo:main --api-key "top-secret" --config /config/mcpo-servers-config.json
Starting MCP OpenAPI Proxy with config file: /config/mcpo-servers-config.json
2025-06-26 15:17:13,762 - INFO - Starting MCPO Server...
2025-06-26 15:17:13,762 - INFO - Name: MCP OpenAPI Proxy
2025-06-26 15:17:13,762 - INFO - Version: 1.0
2025-06-26 15:17:13,762 - INFO - Description: Automatically generated API from MCP Tool Schemas
2025-06-26 15:17:13,762 - INFO - Hostname: 8fd25e6b299d
2025-06-26 15:17:13,762 - INFO - Port: 8000
2025-06-26 15:17:13,762 - INFO - API Key: Provided
2025-06-26 15:17:13,762 - INFO - CORS Allowed Origins: ['*']
2025-06-26 15:17:13,762 - INFO - Path Prefix: /
2025-06-26 15:17:13,763 - INFO - Loading MCP server configurations from: /config/mcpo-servers-config.json
2025-06-26 15:17:13,763 - INFO - Configured MCP Servers:
2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server '21st-dev-magic' with URL: http://192.168.0.110:9001/sse
2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'brave-search' with URL: http://192.168.0.110:9003/sse
2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'calculator' with URL: http://192.168.0.110:9004/sse
2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'httpx' with URL: http://192.168.0.110:9006/sse
2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'github' with URL: http://192.168.0.110:9007/sse
2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'playwright' with URL: http://192.168.0.110:9008/sse
2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'fetch' with URL: http://192.168.0.110:9009/sse
2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'chart' with URL: http://192.168.0.110:90/sse
2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'desktop-commander' with URL: http://192.168.0.110:9012/sse
2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'git' with URL: http://192.168.0.110:9013/sse
2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'gitlab' with URL: http://192.168.0.110:9014/sse
2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'microsoft-graph' with URL: http://192.168.0.110:9015/sse
2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'sequential-thinking' with URL: http://192.168.0.110:9016/sse
2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'neo4j-memory' with URL: http://192.168.0.110:9018/sse
2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'waybackurls' with URL: http://192.168.0.110:9019/sse
2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'nmap' with URL: http://192.168.0.110:9020/sse
2025-06-26 15:17:13,765 - INFO - Uvicorn server starting...
INFO: Started server process [1]
INFO: Waiting for application startup.
2025-06-26 15:17:13,878 - INFO - HTTP Request: GET http://192.168.0.110:9001/sse "HTTP/1.1 200 OK"
2025-06-26 15:17:13,880 - INFO - HTTP Request: POST http://192.168.0.110:9001/message?sessionId=0197acd0-7c16-7f19-843a-0a7469aff035 "HTTP/1.1 202 Accepted"
2025-06-26 15:17:13,980 - WARNING - Failed to validate notification: 13 validation errors for ServerNotification
CancelledNotification.method
Input should be 'notifications/cancelled' [type=literal_error, input_value='window/logMessage', input_type=str]
For further information visit https://errors.pydantic.dev/2.11/v/literal_error
CancelledNotification.params.requestId
Field required [type=missing, input_value={'type': 3, 'message': 'S...ver v0.0.46 (PID: 362)'}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.11/v/missing
ProgressNotification.method
Input should be 'notifications/progress' [type=literal_error, input_value='window/logMessage', input_type=str]
For further information visit https://errors.pydantic.dev/2.11/v/literal_error
ProgressNotification.params.progressToken
Field required [type=missing, input_value={'type': 3, 'message': 'S...ver v0.0.46 (PID: 362)'}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.11/v/missing
ProgressNotification.params.progress
Field required [type=missing, input_value={'type': 3, 'message': 'S...ver v0.0.46 (PID: 362)'}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.11/v/missing
LoggingMessageNotification.method
Input should be 'notifications/message' [type=literal_error, input_value='window/logMessage', input_type=str]
For further information visit https://errors.pydantic.dev/2.11/v/literal_error
LoggingMessageNotification.params.level
Field required [type=missing, input_value={'type': 3, 'message': 'S...ver v0.0.46 (PID: 362)'}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.11/v/missing
LoggingMessageNotification.params.data
Field required [type=missing, input_value={'type': 3, 'message': 'S...ver v0.0.46 (PID: 362)'}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.11/v/missing
ResourceUpdatedNotification.method
Input should be 'notifications/resources/updated' [type=literal_error, input_value='window/logMessage', input_type=str]
For further information visit https://errors.pydantic.dev/2.11/v/literal_error
ResourceUpdatedNotification.params.uri
Field required [type=missing, input_value={'type': 3, 'message': 'S...ver v0.0.46 (PID: 362)'}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.11/v/missing
ResourceListChangedNotification.method
Input should be 'notifications/resources/list_changed' [type=literal_error, input_value='window/logMessage', input_type=str]
For further information visit https://errors.pydantic.dev/2.11/v/literal_error
ToolListChangedNotification.method
Input should be 'notifications/tools/list_changed' [type=literal_error, input_value='window/logMessage', input_type=str]
For further information visit https://errors.pydantic.dev/2.11/v/literal_error
PromptListChangedNotification.method
Input should be 'notifications/prompts/list_changed' [type=literal_error, input_value='window/logMessage', input_type=str]
For further information visit https://errors.pydantic.dev/2.11/v/literal_error. Message was: method='window/logMessage' params={'type': 3, 'message': 'Starting server v0.0.46 (PID: 362)'} jsonrpc='2.0'
2025-06-26 15:17:13,980 - WARNING - Failed to validate notification: 13 validation errors for ServerNotification
CancelledNotification.method
Input should be 'notifications/cancelled' [type=literal_error, input_value='window/logMessage', input_type=str]
For further information visit https://errors.pydantic.dev/2.11/v/literal_error
CancelledNotification.params.requestId
Field required [type=missing, input_value={'type': 3, 'message': 'S...ver started (PID: 362)'}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.11/v/missing
ProgressNotification.method
Input should be 'notifications/progress' [type=literal_error, input_value='window/logMessage', input_type=str]
For further information visit https://errors.pydantic.dev/2.11/v/literal_error
ProgressNotification.params.progressToken
Field required [type=missing, input_value={'type': 3, 'message': 'S...ver started (PID: 362)'}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.11/v/missing
ProgressNotification.params.progress
Field required [type=missing, input_value={'type': 3, 'message': 'S...ver started (PID: 362)'}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.11/v/missing
LoggingMessageNotification.method
Input should be 'notifications/message' [type=literal_error, input_value='window/logMessage', input_type=str]
For further information visit https://errors.pydantic.dev/2.11/v/literal_error
LoggingMessageNotification.params.level
Field required [type=missing, input_value={'type': 3, 'message': 'S...ver started (PID: 362)'}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.11/v/missing
LoggingMessageNotification.params.data
Field required [type=missing, input_value={'type': 3, 'message': 'S...ver started (PID: 362)'}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.11/v/missing
ResourceUpdatedNotification.method
Input should be 'notifications/resources/updated' [type=literal_error, input_value='window/logMessage', input_type=str]
For further information visit https://errors.pydantic.dev/2.11/v/literal_error
ResourceUpdatedNotification.params.uri
Field required [type=missing, input_value={'type': 3, 'message': 'S...ver started (PID: 362)'}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.11/v/missing
ResourceListChangedNotification.method
Input should be 'notifications/resources/list_changed' [type=literal_error, input_value='window/logMessage', input_type=str]
For further information visit https://errors.pydantic.dev/2.11/v/literal_error
ToolListChangedNotification.method
Input should be 'notifications/tools/list_changed' [type=literal_error, input_value='window/logMessage', input_type=str]
For further information visit https://errors.pydantic.dev/2.11/v/literal_error
PromptListChangedNotification.method
Input should be 'notifications/prompts/list_changed' [type=literal_error, input_value='window/logMessage', input_type=str]
For further information visit https://errors.pydantic.dev/2.11/v/literal_error. Message was: method='window/logMessage' params={'type': 3, 'message': 'Server started (PID: 362)'} jsonrpc='2.0'
2025-06-26 15:17:13,986 - INFO - HTTP Request: POST http://192.168.0.110:9001/message?sessionId=0197acd0-7c16-7f19-843a-0a7469aff035 "HTTP/1.1 202 Accepted"
2025-06-26 15:17:13,987 - INFO - HTTP Request: POST http://192.168.0.110:9001/message?sessionId=0197acd0-7c16-7f19-843a-0a7469aff035 "HTTP/1.1 202 Accepted"
2025-06-26 15:17:14,020 - INFO - HTTP Request: GET http://192.168.0.110:9003/sse "HTTP/1.1 200 OK"
2025-06-26 15:17:14,022 - INFO - HTTP Request: POST http://192.168.0.110:9003/message?sessionId=0197acd0-7ca4-7f51-9715-03111d8d66b2 "HTTP/1.1 202 Accepted"
2025-06-26 15:17:14,076 - INFO - HTTP Request: POST http://192.168.0.110:9003/message?sessionId=0197acd0-7ca4-7f51-9715-03111d8d66b2 "HTTP/1.1 202 Accepted"
2025-06-26 15:17:14,077 - INFO - HTTP Request: POST http://192.168.0.110:9003/message?sessionId=0197acd0-7ca4-7f51-9715-03111d8d66b2 "HTTP/1.1 202 Accepted"
2025-06-26 15:17:14,105 - INFO - HTTP Request: GET http://192.168.0.110:9004/sse "HTTP/1.1 200 OK"
2025-06-26 15:17:14,107 - INFO - HTTP Request: POST http://192.168.0.110:9004/message?sessionId=0197acd0-7cf9-7af1-aa56-2da1e1224a94 "HTTP/1.1 202 Accepted"
2025-06-26 15:17:15,281 - INFO - HTTP Request: POST http://192.168.0.110:9004/message?sessionId=0197acd0-7cf9-7af1-aa56-2da1e1224a94 "HTTP/1.1 202 Accepted"
2025-06-26 15:17:15,282 - INFO - HTTP Request: POST http://192.168.0.110:9004/message?sessionId=0197acd0-7cf9-7af1-aa56-2da1e1224a94 "HTTP/1.1 202 Accepted"
2025-06-26 15:17:15,310 - INFO - HTTP Request: GET http://192.168.0.110:9006/sse "HTTP/1.1 200 OK"
2025-06-26 15:17:15,312 - INFO - HTTP Request: POST http://192.168.0.110:9006/message?sessionId=0197acd0-81ae-7d4a-83cf-2284124b66ff "HTTP/1.1 202 Accepted"
2025-06-26 15:17:15,386 - INFO - HTTP Request: POST http://192.168.0.110:9006/message?sessionId=0197acd0-81ae-7d4a-83cf-2284124b66ff "HTTP/1.1 202 Accepted"
2025-06-26 15:17:15,387 - INFO - HTTP Request: POST http://192.168.0.110:9006/message?sessionId=0197acd0-81ae-7d4a-83cf-2284124b66ff "HTTP/1.1 202 Accepted"
2025-06-26 15:17:15,416 - INFO - HTTP Request: GET http://192.168.0.110:9007/sse "HTTP/1.1 200 OK"
2025-06-26 15:17:15,418 - INFO - HTTP Request: POST http://192.168.0.110:9007/message?sessionId=0197acd0-8218-7225-9955-7743d86ac3d0 "HTTP/1.1 202 Accepted"
2025-06-26 15:17:15,420 - INFO - HTTP Request: POST http://192.168.0.110:9007/message?sessionId=0197acd0-8218-7225-9955-7743d86ac3d0 "HTTP/1.1 202 Accepted"
2025-06-26 15:17:15,421 - INFO - HTTP Request: POST http://192.168.0.110:9007/message?sessionId=0197acd0-8218-7225-9955-7743d86ac3d0 "HTTP/1.1 202 Accepted"
2025-06-26 15:17:15,509 - INFO - HTTP Request: GET http://192.168.0.110:9008/sse "HTTP/1.1 200 OK"
2025-06-26 15:17:15,511 - INFO - HTTP Request: POST http://192.168.0.110:9008/message?sessionId=0197acd0-8275-7cfb-a74c-4516ee0d6ed9 "HTTP/1.1 202 Accepted"
2025-06-26 15:17:15,898 - INFO - HTTP Request: POST http://192.168.0.110:9008/message?sessionId=0197acd0-8275-7cfb-a74c-4516ee0d6ed9 "HTTP/1.1 202 Accepted"
2025-06-26 15:17:15,899 - INFO - HTTP Request: POST http://192.168.0.110:9008/message?sessionId=0197acd0-8275-7cfb-a74c-4516ee0d6ed9 "HTTP/1.1 202 Accepted"
2025-06-26 15:17:15,947 - INFO - HTTP Request: GET http://192.168.0.110:9009/sse "HTTP/1.1 200 OK"
2025-06-26 15:17:15,949 - INFO - HTTP Request: POST http://192.168.0.110:9009/message?sessionId=0197acd0-842b-7075-b910-9bfdd11fce14 "HTTP/1.1 202 Accepted"
2025-06-26 15:17:17,206 - INFO - HTTP Request: POST http://192.168.0.110:9009/message?sessionId=0197acd0-842b-7075-b910-9bfdd11fce14 "HTTP/1.1 202 Accepted"
2025-06-26 15:17:17,207 - INFO - HTTP Request: POST http://192.168.0.110:9009/message?sessionId=0197acd0-842b-7075-b910-9bfdd11fce14 "HTTP/1.1 202 Accepted"
ERROR: + Exception Group Traceback (most recent call last):
| File "/app/.venv/lib/python3.11/site-packages/starlette/routing.py", line 692, in lifespan
| async with self.lifespan_context(app) as maybe_state:
| File "/usr/lib/python3.11/contextlib.py", line 204, in aenter
| return await anext(self.gen)
| ^^^^^^^^^^^^^^^^^^^^^
| File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 99, in lifespan
| async with AsyncExitStack() as stack:
| File "/usr/lib/python3.11/contextlib.py", line 733, in aexit
| raise exc_details[1]
| File "/usr/lib/python3.11/contextlib.py", line 716, in aexit
| cb_suppress = await cb(*exc_details)
| ^^^^^^^^^^^^^^^^^^^^^^
| File "/usr/lib/python3.11/contextlib.py", line 222, in aexit
| await self.gen.athrow(typ, value, traceback)
| File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 121, in lifespan
| async with sse_client(
| File "/usr/lib/python3.11/contextlib.py", line 222, in aexit
| await self.gen.athrow(typ, value, traceback)
| File "/app/.venv/lib/python3.11/site-packages/mcp/client/sse.py", line 54, in sse_client
| async with anyio.create_task_group() as tg:
| File "/app/.venv/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 772, in aexit
| raise BaseExceptionGroup(
| ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
+-+---------------- 1 ----------------
| Exception Group Traceback (most recent call last):
| File "/app/.venv/lib/python3.11/site-packages/mcp/client/sse.py", line 155, in sse_client
| yield read_stream, write_stream
| File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 127, in lifespan
| async with ClientSession(reader, writer) as session:
| File "/app/.venv/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 772, in aexit
| raise BaseExceptionGroup(
| ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
+-+---------------- 1 ----------------
| Exception Group Traceback (most recent call last):
| File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 130, in lifespan
| yield
| File "/usr/lib/python3.11/contextlib.py", line 716, in aexit
| cb_suppress = await cb(*exc_details)
| ^^^^^^^^^^^^^^^^^^^^^^
| File "/usr/lib/python3.11/contextlib.py", line 222, in aexit
| await self.gen.athrow(typ, value, traceback)
| File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 121, in lifespan
| async with sse_client(
| File "/usr/lib/python3.11/contextlib.py", line 222, in aexit
| await self.gen.athrow(typ, value, traceback)
| File "/app/.venv/lib/python3.11/site-packages/mcp/client/sse.py", line 54, in sse_client
| async with anyio.create_task_group() as tg:
| File "/app/.venv/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 772, in aexit
| raise BaseExceptionGroup(
| ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
+-+---------------- 1 ----------------
| Exception Group Traceback (most recent call last):
| File "/app/.venv/lib/python3.11/site-packages/mcp/client/sse.py", line 155, in sse_client
| yield read_stream, write_stream
| File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 127, in lifespan
| async with ClientSession(reader, writer) as session:
| File "/app/.venv/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 772, in aexit
| raise BaseExceptionGroup(
| ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
+-+---------------- 1 ----------------
| Exception Group Traceback (most recent call last):
| File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 130, in lifespan
| yield
| File "/usr/lib/python3.11/contextlib.py", line 716, in aexit
| cb_suppress = await cb(*exc_details)
| ^^^^^^^^^^^^^^^^^^^^^^
| File "/usr/lib/python3.11/contextlib.py", line 222, in aexit
| await self.gen.athrow(typ, value, traceback)
| File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 121, in lifespan
| async with sse_client(
| File "/usr/lib/python3.11/contextlib.py", line 222, in aexit
| await self.gen.athrow(typ, value, traceback)
| File "/app/.venv/lib/python3.11/site-packages/mcp/client/sse.py", line 54, in sse_client
| async with anyio.create_task_group() as tg:
| File "/app/.venv/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 772, in aexit
| raise BaseExceptionGroup(
| ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
+-+---------------- 1 ----------------
| Exception Group Traceback (most recent call last):
| File "/app/.venv/lib/python3.11/site-packages/mcp/client/sse.py", line 155, in sse_client
| yield read_stream, write_stream
| File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 127, in lifespan
| async with ClientSession(reader, writer) as session:
| File "/app/.venv/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 772, in aexit
| raise BaseExceptionGroup(
| ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
+-+---------------- 1 ----------------
| Exception Group Traceback (most recent call last):
| File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 130, in lifespan
| yield
| File "/usr/lib/python3.11/contextlib.py", line 716, in aexit
| cb_suppress = await cb(*exc_details)
| ^^^^^^^^^^^^^^^^^^^^^^
| File "/usr/lib/python3.11/contextlib.py", line 222, in aexit
| await self.gen.athrow(typ, value, traceback)
| File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 121, in lifespan
| async with sse_client(
| File "/usr/lib/python3.11/contextlib.py", line 222, in aexit
| await self.gen.athrow(typ, value, traceback)
| File "/app/.venv/lib/python3.11/site-packages/mcp/client/sse.py", line 54, in sse_client
| async with anyio.create_task_group() as tg:
| File "/app/.venv/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 772, in aexit
| raise BaseExceptionGroup(
| ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
+-+---------------- 1 ----------------
| Exception Group Traceback (most recent call last):
| File "/app/.venv/lib/python3.11/site-packages/mcp/client/sse.py", line 155, in sse_client
| yield read_stream, write_stream
| File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 127, in lifespan
| async with ClientSession(reader, writer) as session:
| File "/app/.venv/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 772, in aexit
| raise BaseExceptionGroup(
| ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
+-+---------------- 1 ----------------
| Exception Group Traceback (most recent call last):
| File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 130, in lifespan
| yield
| File "/usr/lib/python3.11/contextlib.py", line 716, in aexit
| cb_suppress = await cb(*exc_details)
| ^^^^^^^^^^^^^^^^^^^^^^
| File "/usr/lib/python3.11/contextlib.py", line 222, in aexit
| await self.gen.athrow(typ, value, traceback)
| File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 121, in lifespan
| async with sse_client(
| File "/usr/lib/python3.11/contextlib.py", line 222, in aexit
| await self.gen.athrow(typ, value, traceback)
| File "/app/.venv/lib/python3.11/site-packages/mcp/client/sse.py", line 54, in sse_client
| async with anyio.create_task_group() as tg:
| File "/app/.venv/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 772, in aexit
| raise BaseExceptionGroup(
| ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
+-+---------------- 1 ----------------
| Exception Group Traceback (most recent call last):
| File "/app/.venv/lib/python3.11/site-packages/mcp/client/sse.py", line 155, in sse_client
| yield read_stream, write_stream
| File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 127, in lifespan
| async with ClientSession(reader, writer) as session:
| File "/app/.venv/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 772, in aexit
| raise BaseExceptionGroup(
| ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
+-+---------------- 1 ----------------
| ... (max_group_depth is 10)
+------------------------------------

ERROR: Application startup failed. Exiting.

Originally created by @Fastidius-au on GitHub (Jun 26, 2025). Original GitHub issue: https://github.com/open-webui/mcpo/issues/184 ### Check Existing Issues - [x] I have searched the existing issues and discussions. - [x] I am using the latest version of mcpo. ### mcpo Version ghcr.io/open-webui/mcpo:main ### Open WebUI Version (if applicable) _No response_ ### Operating System windows ubuntu.......its message filtering code.. ### Browser (if applicable) _No response_ ### 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 not sure if this is directly related but I feel it is as it events to sse {"jsonrpc":"2.0","method":"sse/connection",…} acuvity has a minibridge with security and can be treated a bit like docker so you can attach to it and see stdio etc. live debug for mcp and ability to treat a bit like docker without docker... anyways it spits these out and I had to make a policy file for it. A Package minibridge # By default, deny everything default allow = false # Whitelist only these notifications: allow = true if input.method == "notifications/message" allow = true if input.method == "notifications/progress" allow = true if input.method == "notifications/cancelled" ### Actual Behavior crashes on tool parsing because response is part tools and part stdio I guess ### Steps to Reproduce sse with http fallback required for acuvity minibridge with some wrapping, seems to output more than what you want and you choke on a bad message type. Just need to filter out the not mcp messages to stream relay. try block the message parser so if not match drop. https://github.com/acuvity/minibridge lookit up seems good concept ### Logs & Screenshots docker run -it --rm -p 7778:8000 -v "$(pwd)/mcpo-servers-config.json:/config/mcpo-servers-config.json:ro" ghcr.io/open-webui/mcpo:main --api-key "top-secret" --config /config/mcpo-servers-config.json Starting MCP OpenAPI Proxy with config file: /config/mcpo-servers-config.json 2025-06-26 15:17:13,762 - INFO - Starting MCPO Server... 2025-06-26 15:17:13,762 - INFO - Name: MCP OpenAPI Proxy 2025-06-26 15:17:13,762 - INFO - Version: 1.0 2025-06-26 15:17:13,762 - INFO - Description: Automatically generated API from MCP Tool Schemas 2025-06-26 15:17:13,762 - INFO - Hostname: 8fd25e6b299d 2025-06-26 15:17:13,762 - INFO - Port: 8000 2025-06-26 15:17:13,762 - INFO - API Key: Provided 2025-06-26 15:17:13,762 - INFO - CORS Allowed Origins: ['*'] 2025-06-26 15:17:13,762 - INFO - Path Prefix: / 2025-06-26 15:17:13,763 - INFO - Loading MCP server configurations from: /config/mcpo-servers-config.json 2025-06-26 15:17:13,763 - INFO - Configured MCP Servers: 2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server '21st-dev-magic' with URL: http://192.168.0.110:9001/sse 2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'brave-search' with URL: http://192.168.0.110:9003/sse 2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'calculator' with URL: http://192.168.0.110:9004/sse 2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'httpx' with URL: http://192.168.0.110:9006/sse 2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'github' with URL: http://192.168.0.110:9007/sse 2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'playwright' with URL: http://192.168.0.110:9008/sse 2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'fetch' with URL: http://192.168.0.110:9009/sse 2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'chart' with URL: http://192.168.0.110:90/sse 2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'desktop-commander' with URL: http://192.168.0.110:9012/sse 2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'git' with URL: http://192.168.0.110:9013/sse 2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'gitlab' with URL: http://192.168.0.110:9014/sse 2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'microsoft-graph' with URL: http://192.168.0.110:9015/sse 2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'sequential-thinking' with URL: http://192.168.0.110:9016/sse 2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'neo4j-memory' with URL: http://192.168.0.110:9018/sse 2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'waybackurls' with URL: http://192.168.0.110:9019/sse 2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'nmap' with URL: http://192.168.0.110:9020/sse 2025-06-26 15:17:13,765 - INFO - Uvicorn server starting... INFO: Started server process [1] INFO: Waiting for application startup. 2025-06-26 15:17:13,878 - INFO - HTTP Request: GET http://192.168.0.110:9001/sse "HTTP/1.1 200 OK" 2025-06-26 15:17:13,880 - INFO - HTTP Request: POST http://192.168.0.110:9001/message?sessionId=0197acd0-7c16-7f19-843a-0a7469aff035 "HTTP/1.1 202 Accepted" 2025-06-26 15:17:13,980 - WARNING - Failed to validate notification: 13 validation errors for ServerNotification CancelledNotification.method Input should be 'notifications/cancelled' [type=literal_error, input_value='window/logMessage', input_type=str] For further information visit https://errors.pydantic.dev/2.11/v/literal_error CancelledNotification.params.requestId Field required [type=missing, input_value={'type': 3, 'message': 'S...ver v0.0.46 (PID: 362)'}, input_type=dict] For further information visit https://errors.pydantic.dev/2.11/v/missing ProgressNotification.method Input should be 'notifications/progress' [type=literal_error, input_value='window/logMessage', input_type=str] For further information visit https://errors.pydantic.dev/2.11/v/literal_error ProgressNotification.params.progressToken Field required [type=missing, input_value={'type': 3, 'message': 'S...ver v0.0.46 (PID: 362)'}, input_type=dict] For further information visit https://errors.pydantic.dev/2.11/v/missing ProgressNotification.params.progress Field required [type=missing, input_value={'type': 3, 'message': 'S...ver v0.0.46 (PID: 362)'}, input_type=dict] For further information visit https://errors.pydantic.dev/2.11/v/missing LoggingMessageNotification.method Input should be 'notifications/message' [type=literal_error, input_value='window/logMessage', input_type=str] For further information visit https://errors.pydantic.dev/2.11/v/literal_error LoggingMessageNotification.params.level Field required [type=missing, input_value={'type': 3, 'message': 'S...ver v0.0.46 (PID: 362)'}, input_type=dict] For further information visit https://errors.pydantic.dev/2.11/v/missing LoggingMessageNotification.params.data Field required [type=missing, input_value={'type': 3, 'message': 'S...ver v0.0.46 (PID: 362)'}, input_type=dict] For further information visit https://errors.pydantic.dev/2.11/v/missing ResourceUpdatedNotification.method Input should be 'notifications/resources/updated' [type=literal_error, input_value='window/logMessage', input_type=str] For further information visit https://errors.pydantic.dev/2.11/v/literal_error ResourceUpdatedNotification.params.uri Field required [type=missing, input_value={'type': 3, 'message': 'S...ver v0.0.46 (PID: 362)'}, input_type=dict] For further information visit https://errors.pydantic.dev/2.11/v/missing ResourceListChangedNotification.method Input should be 'notifications/resources/list_changed' [type=literal_error, input_value='window/logMessage', input_type=str] For further information visit https://errors.pydantic.dev/2.11/v/literal_error ToolListChangedNotification.method Input should be 'notifications/tools/list_changed' [type=literal_error, input_value='window/logMessage', input_type=str] For further information visit https://errors.pydantic.dev/2.11/v/literal_error PromptListChangedNotification.method Input should be 'notifications/prompts/list_changed' [type=literal_error, input_value='window/logMessage', input_type=str] For further information visit https://errors.pydantic.dev/2.11/v/literal_error. Message was: method='window/logMessage' params={'type': 3, 'message': 'Starting server v0.0.46 (PID: 362)'} jsonrpc='2.0' 2025-06-26 15:17:13,980 - WARNING - Failed to validate notification: 13 validation errors for ServerNotification CancelledNotification.method Input should be 'notifications/cancelled' [type=literal_error, input_value='window/logMessage', input_type=str] For further information visit https://errors.pydantic.dev/2.11/v/literal_error CancelledNotification.params.requestId Field required [type=missing, input_value={'type': 3, 'message': 'S...ver started (PID: 362)'}, input_type=dict] For further information visit https://errors.pydantic.dev/2.11/v/missing ProgressNotification.method Input should be 'notifications/progress' [type=literal_error, input_value='window/logMessage', input_type=str] For further information visit https://errors.pydantic.dev/2.11/v/literal_error ProgressNotification.params.progressToken Field required [type=missing, input_value={'type': 3, 'message': 'S...ver started (PID: 362)'}, input_type=dict] For further information visit https://errors.pydantic.dev/2.11/v/missing ProgressNotification.params.progress Field required [type=missing, input_value={'type': 3, 'message': 'S...ver started (PID: 362)'}, input_type=dict] For further information visit https://errors.pydantic.dev/2.11/v/missing LoggingMessageNotification.method Input should be 'notifications/message' [type=literal_error, input_value='window/logMessage', input_type=str] For further information visit https://errors.pydantic.dev/2.11/v/literal_error LoggingMessageNotification.params.level Field required [type=missing, input_value={'type': 3, 'message': 'S...ver started (PID: 362)'}, input_type=dict] For further information visit https://errors.pydantic.dev/2.11/v/missing LoggingMessageNotification.params.data Field required [type=missing, input_value={'type': 3, 'message': 'S...ver started (PID: 362)'}, input_type=dict] For further information visit https://errors.pydantic.dev/2.11/v/missing ResourceUpdatedNotification.method Input should be 'notifications/resources/updated' [type=literal_error, input_value='window/logMessage', input_type=str] For further information visit https://errors.pydantic.dev/2.11/v/literal_error ResourceUpdatedNotification.params.uri Field required [type=missing, input_value={'type': 3, 'message': 'S...ver started (PID: 362)'}, input_type=dict] For further information visit https://errors.pydantic.dev/2.11/v/missing ResourceListChangedNotification.method Input should be 'notifications/resources/list_changed' [type=literal_error, input_value='window/logMessage', input_type=str] For further information visit https://errors.pydantic.dev/2.11/v/literal_error ToolListChangedNotification.method Input should be 'notifications/tools/list_changed' [type=literal_error, input_value='window/logMessage', input_type=str] For further information visit https://errors.pydantic.dev/2.11/v/literal_error PromptListChangedNotification.method Input should be 'notifications/prompts/list_changed' [type=literal_error, input_value='window/logMessage', input_type=str] For further information visit https://errors.pydantic.dev/2.11/v/literal_error. Message was: method='window/logMessage' params={'type': 3, 'message': 'Server started (PID: 362)'} jsonrpc='2.0' 2025-06-26 15:17:13,986 - INFO - HTTP Request: POST http://192.168.0.110:9001/message?sessionId=0197acd0-7c16-7f19-843a-0a7469aff035 "HTTP/1.1 202 Accepted" 2025-06-26 15:17:13,987 - INFO - HTTP Request: POST http://192.168.0.110:9001/message?sessionId=0197acd0-7c16-7f19-843a-0a7469aff035 "HTTP/1.1 202 Accepted" 2025-06-26 15:17:14,020 - INFO - HTTP Request: GET http://192.168.0.110:9003/sse "HTTP/1.1 200 OK" 2025-06-26 15:17:14,022 - INFO - HTTP Request: POST http://192.168.0.110:9003/message?sessionId=0197acd0-7ca4-7f51-9715-03111d8d66b2 "HTTP/1.1 202 Accepted" 2025-06-26 15:17:14,076 - INFO - HTTP Request: POST http://192.168.0.110:9003/message?sessionId=0197acd0-7ca4-7f51-9715-03111d8d66b2 "HTTP/1.1 202 Accepted" 2025-06-26 15:17:14,077 - INFO - HTTP Request: POST http://192.168.0.110:9003/message?sessionId=0197acd0-7ca4-7f51-9715-03111d8d66b2 "HTTP/1.1 202 Accepted" 2025-06-26 15:17:14,105 - INFO - HTTP Request: GET http://192.168.0.110:9004/sse "HTTP/1.1 200 OK" 2025-06-26 15:17:14,107 - INFO - HTTP Request: POST http://192.168.0.110:9004/message?sessionId=0197acd0-7cf9-7af1-aa56-2da1e1224a94 "HTTP/1.1 202 Accepted" 2025-06-26 15:17:15,281 - INFO - HTTP Request: POST http://192.168.0.110:9004/message?sessionId=0197acd0-7cf9-7af1-aa56-2da1e1224a94 "HTTP/1.1 202 Accepted" 2025-06-26 15:17:15,282 - INFO - HTTP Request: POST http://192.168.0.110:9004/message?sessionId=0197acd0-7cf9-7af1-aa56-2da1e1224a94 "HTTP/1.1 202 Accepted" 2025-06-26 15:17:15,310 - INFO - HTTP Request: GET http://192.168.0.110:9006/sse "HTTP/1.1 200 OK" 2025-06-26 15:17:15,312 - INFO - HTTP Request: POST http://192.168.0.110:9006/message?sessionId=0197acd0-81ae-7d4a-83cf-2284124b66ff "HTTP/1.1 202 Accepted" 2025-06-26 15:17:15,386 - INFO - HTTP Request: POST http://192.168.0.110:9006/message?sessionId=0197acd0-81ae-7d4a-83cf-2284124b66ff "HTTP/1.1 202 Accepted" 2025-06-26 15:17:15,387 - INFO - HTTP Request: POST http://192.168.0.110:9006/message?sessionId=0197acd0-81ae-7d4a-83cf-2284124b66ff "HTTP/1.1 202 Accepted" 2025-06-26 15:17:15,416 - INFO - HTTP Request: GET http://192.168.0.110:9007/sse "HTTP/1.1 200 OK" 2025-06-26 15:17:15,418 - INFO - HTTP Request: POST http://192.168.0.110:9007/message?sessionId=0197acd0-8218-7225-9955-7743d86ac3d0 "HTTP/1.1 202 Accepted" 2025-06-26 15:17:15,420 - INFO - HTTP Request: POST http://192.168.0.110:9007/message?sessionId=0197acd0-8218-7225-9955-7743d86ac3d0 "HTTP/1.1 202 Accepted" 2025-06-26 15:17:15,421 - INFO - HTTP Request: POST http://192.168.0.110:9007/message?sessionId=0197acd0-8218-7225-9955-7743d86ac3d0 "HTTP/1.1 202 Accepted" 2025-06-26 15:17:15,509 - INFO - HTTP Request: GET http://192.168.0.110:9008/sse "HTTP/1.1 200 OK" 2025-06-26 15:17:15,511 - INFO - HTTP Request: POST http://192.168.0.110:9008/message?sessionId=0197acd0-8275-7cfb-a74c-4516ee0d6ed9 "HTTP/1.1 202 Accepted" 2025-06-26 15:17:15,898 - INFO - HTTP Request: POST http://192.168.0.110:9008/message?sessionId=0197acd0-8275-7cfb-a74c-4516ee0d6ed9 "HTTP/1.1 202 Accepted" 2025-06-26 15:17:15,899 - INFO - HTTP Request: POST http://192.168.0.110:9008/message?sessionId=0197acd0-8275-7cfb-a74c-4516ee0d6ed9 "HTTP/1.1 202 Accepted" 2025-06-26 15:17:15,947 - INFO - HTTP Request: GET http://192.168.0.110:9009/sse "HTTP/1.1 200 OK" 2025-06-26 15:17:15,949 - INFO - HTTP Request: POST http://192.168.0.110:9009/message?sessionId=0197acd0-842b-7075-b910-9bfdd11fce14 "HTTP/1.1 202 Accepted" 2025-06-26 15:17:17,206 - INFO - HTTP Request: POST http://192.168.0.110:9009/message?sessionId=0197acd0-842b-7075-b910-9bfdd11fce14 "HTTP/1.1 202 Accepted" 2025-06-26 15:17:17,207 - INFO - HTTP Request: POST http://192.168.0.110:9009/message?sessionId=0197acd0-842b-7075-b910-9bfdd11fce14 "HTTP/1.1 202 Accepted" ERROR: + Exception Group Traceback (most recent call last): | File "/app/.venv/lib/python3.11/site-packages/starlette/routing.py", line 692, in lifespan | async with self.lifespan_context(app) as maybe_state: | File "/usr/lib/python3.11/contextlib.py", line 204, in __aenter__ | return await anext(self.gen) | ^^^^^^^^^^^^^^^^^^^^^ | File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 99, in lifespan | async with AsyncExitStack() as stack: | File "/usr/lib/python3.11/contextlib.py", line 733, in __aexit__ | raise exc_details[1] | File "/usr/lib/python3.11/contextlib.py", line 716, in __aexit__ | cb_suppress = await cb(*exc_details) | ^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.11/contextlib.py", line 222, in __aexit__ | await self.gen.athrow(typ, value, traceback) | File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 121, in lifespan | async with sse_client( | File "/usr/lib/python3.11/contextlib.py", line 222, in __aexit__ | await self.gen.athrow(typ, value, traceback) | File "/app/.venv/lib/python3.11/site-packages/mcp/client/sse.py", line 54, in sse_client | async with anyio.create_task_group() as tg: | File "/app/.venv/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 772, in __aexit__ | raise BaseExceptionGroup( | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Exception Group Traceback (most recent call last): | File "/app/.venv/lib/python3.11/site-packages/mcp/client/sse.py", line 155, in sse_client | yield read_stream, write_stream | File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 127, in lifespan | async with ClientSession(reader, writer) as session: | File "/app/.venv/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 772, in __aexit__ | raise BaseExceptionGroup( | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Exception Group Traceback (most recent call last): | File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 130, in lifespan | yield | File "/usr/lib/python3.11/contextlib.py", line 716, in __aexit__ | cb_suppress = await cb(*exc_details) | ^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.11/contextlib.py", line 222, in __aexit__ | await self.gen.athrow(typ, value, traceback) | File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 121, in lifespan | async with sse_client( | File "/usr/lib/python3.11/contextlib.py", line 222, in __aexit__ | await self.gen.athrow(typ, value, traceback) | File "/app/.venv/lib/python3.11/site-packages/mcp/client/sse.py", line 54, in sse_client | async with anyio.create_task_group() as tg: | File "/app/.venv/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 772, in __aexit__ | raise BaseExceptionGroup( | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Exception Group Traceback (most recent call last): | File "/app/.venv/lib/python3.11/site-packages/mcp/client/sse.py", line 155, in sse_client | yield read_stream, write_stream | File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 127, in lifespan | async with ClientSession(reader, writer) as session: | File "/app/.venv/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 772, in __aexit__ | raise BaseExceptionGroup( | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Exception Group Traceback (most recent call last): | File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 130, in lifespan | yield | File "/usr/lib/python3.11/contextlib.py", line 716, in __aexit__ | cb_suppress = await cb(*exc_details) | ^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.11/contextlib.py", line 222, in __aexit__ | await self.gen.athrow(typ, value, traceback) | File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 121, in lifespan | async with sse_client( | File "/usr/lib/python3.11/contextlib.py", line 222, in __aexit__ | await self.gen.athrow(typ, value, traceback) | File "/app/.venv/lib/python3.11/site-packages/mcp/client/sse.py", line 54, in sse_client | async with anyio.create_task_group() as tg: | File "/app/.venv/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 772, in __aexit__ | raise BaseExceptionGroup( | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Exception Group Traceback (most recent call last): | File "/app/.venv/lib/python3.11/site-packages/mcp/client/sse.py", line 155, in sse_client | yield read_stream, write_stream | File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 127, in lifespan | async with ClientSession(reader, writer) as session: | File "/app/.venv/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 772, in __aexit__ | raise BaseExceptionGroup( | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Exception Group Traceback (most recent call last): | File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 130, in lifespan | yield | File "/usr/lib/python3.11/contextlib.py", line 716, in __aexit__ | cb_suppress = await cb(*exc_details) | ^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.11/contextlib.py", line 222, in __aexit__ | await self.gen.athrow(typ, value, traceback) | File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 121, in lifespan | async with sse_client( | File "/usr/lib/python3.11/contextlib.py", line 222, in __aexit__ | await self.gen.athrow(typ, value, traceback) | File "/app/.venv/lib/python3.11/site-packages/mcp/client/sse.py", line 54, in sse_client | async with anyio.create_task_group() as tg: | File "/app/.venv/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 772, in __aexit__ | raise BaseExceptionGroup( | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Exception Group Traceback (most recent call last): | File "/app/.venv/lib/python3.11/site-packages/mcp/client/sse.py", line 155, in sse_client | yield read_stream, write_stream | File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 127, in lifespan | async with ClientSession(reader, writer) as session: | File "/app/.venv/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 772, in __aexit__ | raise BaseExceptionGroup( | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Exception Group Traceback (most recent call last): | File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 130, in lifespan | yield | File "/usr/lib/python3.11/contextlib.py", line 716, in __aexit__ | cb_suppress = await cb(*exc_details) | ^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.11/contextlib.py", line 222, in __aexit__ | await self.gen.athrow(typ, value, traceback) | File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 121, in lifespan | async with sse_client( | File "/usr/lib/python3.11/contextlib.py", line 222, in __aexit__ | await self.gen.athrow(typ, value, traceback) | File "/app/.venv/lib/python3.11/site-packages/mcp/client/sse.py", line 54, in sse_client | async with anyio.create_task_group() as tg: | File "/app/.venv/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 772, in __aexit__ | raise BaseExceptionGroup( | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Exception Group Traceback (most recent call last): | File "/app/.venv/lib/python3.11/site-packages/mcp/client/sse.py", line 155, in sse_client | yield read_stream, write_stream | File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 127, in lifespan | async with ClientSession(reader, writer) as session: | File "/app/.venv/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 772, in __aexit__ | raise BaseExceptionGroup( | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | ... (max_group_depth is 10) +------------------------------------ ERROR: Application startup failed. Exiting. ### Additional Information docker run -it --rm -p 7778:8000 -v "$(pwd)/mcpo-servers-config.json:/config/mcpo-servers-config.json:ro" ghcr.io/open-webui/mcpo:main --api-key "top-secret" --config /config/mcpo-servers-config.json Starting MCP OpenAPI Proxy with config file: /config/mcpo-servers-config.json 2025-06-26 15:17:13,762 - INFO - Starting MCPO Server... 2025-06-26 15:17:13,762 - INFO - Name: MCP OpenAPI Proxy 2025-06-26 15:17:13,762 - INFO - Version: 1.0 2025-06-26 15:17:13,762 - INFO - Description: Automatically generated API from MCP Tool Schemas 2025-06-26 15:17:13,762 - INFO - Hostname: 8fd25e6b299d 2025-06-26 15:17:13,762 - INFO - Port: 8000 2025-06-26 15:17:13,762 - INFO - API Key: Provided 2025-06-26 15:17:13,762 - INFO - CORS Allowed Origins: ['*'] 2025-06-26 15:17:13,762 - INFO - Path Prefix: / 2025-06-26 15:17:13,763 - INFO - Loading MCP server configurations from: /config/mcpo-servers-config.json 2025-06-26 15:17:13,763 - INFO - Configured MCP Servers: 2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server '21st-dev-magic' with URL: http://192.168.0.110:9001/sse 2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'brave-search' with URL: http://192.168.0.110:9003/sse 2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'calculator' with URL: http://192.168.0.110:9004/sse 2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'httpx' with URL: http://192.168.0.110:9006/sse 2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'github' with URL: http://192.168.0.110:9007/sse 2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'playwright' with URL: http://192.168.0.110:9008/sse 2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'fetch' with URL: http://192.168.0.110:9009/sse 2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'chart' with URL: http://192.168.0.110:90/sse 2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'desktop-commander' with URL: http://192.168.0.110:9012/sse 2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'git' with URL: http://192.168.0.110:9013/sse 2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'gitlab' with URL: http://192.168.0.110:9014/sse 2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'microsoft-graph' with URL: http://192.168.0.110:9015/sse 2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'sequential-thinking' with URL: http://192.168.0.110:9016/sse 2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'neo4j-memory' with URL: http://192.168.0.110:9018/sse 2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'waybackurls' with URL: http://192.168.0.110:9019/sse 2025-06-26 15:17:13,763 - INFO - Configuring SSE MCP Server 'nmap' with URL: http://192.168.0.110:9020/sse 2025-06-26 15:17:13,765 - INFO - Uvicorn server starting... INFO: Started server process [1] INFO: Waiting for application startup. 2025-06-26 15:17:13,878 - INFO - HTTP Request: GET http://192.168.0.110:9001/sse "HTTP/1.1 200 OK" 2025-06-26 15:17:13,880 - INFO - HTTP Request: POST http://192.168.0.110:9001/message?sessionId=0197acd0-7c16-7f19-843a-0a7469aff035 "HTTP/1.1 202 Accepted" 2025-06-26 15:17:13,980 - WARNING - Failed to validate notification: 13 validation errors for ServerNotification CancelledNotification.method Input should be 'notifications/cancelled' [type=literal_error, input_value='window/logMessage', input_type=str] For further information visit https://errors.pydantic.dev/2.11/v/literal_error CancelledNotification.params.requestId Field required [type=missing, input_value={'type': 3, 'message': 'S...ver v0.0.46 (PID: 362)'}, input_type=dict] For further information visit https://errors.pydantic.dev/2.11/v/missing ProgressNotification.method Input should be 'notifications/progress' [type=literal_error, input_value='window/logMessage', input_type=str] For further information visit https://errors.pydantic.dev/2.11/v/literal_error ProgressNotification.params.progressToken Field required [type=missing, input_value={'type': 3, 'message': 'S...ver v0.0.46 (PID: 362)'}, input_type=dict] For further information visit https://errors.pydantic.dev/2.11/v/missing ProgressNotification.params.progress Field required [type=missing, input_value={'type': 3, 'message': 'S...ver v0.0.46 (PID: 362)'}, input_type=dict] For further information visit https://errors.pydantic.dev/2.11/v/missing LoggingMessageNotification.method Input should be 'notifications/message' [type=literal_error, input_value='window/logMessage', input_type=str] For further information visit https://errors.pydantic.dev/2.11/v/literal_error LoggingMessageNotification.params.level Field required [type=missing, input_value={'type': 3, 'message': 'S...ver v0.0.46 (PID: 362)'}, input_type=dict] For further information visit https://errors.pydantic.dev/2.11/v/missing LoggingMessageNotification.params.data Field required [type=missing, input_value={'type': 3, 'message': 'S...ver v0.0.46 (PID: 362)'}, input_type=dict] For further information visit https://errors.pydantic.dev/2.11/v/missing ResourceUpdatedNotification.method Input should be 'notifications/resources/updated' [type=literal_error, input_value='window/logMessage', input_type=str] For further information visit https://errors.pydantic.dev/2.11/v/literal_error ResourceUpdatedNotification.params.uri Field required [type=missing, input_value={'type': 3, 'message': 'S...ver v0.0.46 (PID: 362)'}, input_type=dict] For further information visit https://errors.pydantic.dev/2.11/v/missing ResourceListChangedNotification.method Input should be 'notifications/resources/list_changed' [type=literal_error, input_value='window/logMessage', input_type=str] For further information visit https://errors.pydantic.dev/2.11/v/literal_error ToolListChangedNotification.method Input should be 'notifications/tools/list_changed' [type=literal_error, input_value='window/logMessage', input_type=str] For further information visit https://errors.pydantic.dev/2.11/v/literal_error PromptListChangedNotification.method Input should be 'notifications/prompts/list_changed' [type=literal_error, input_value='window/logMessage', input_type=str] For further information visit https://errors.pydantic.dev/2.11/v/literal_error. Message was: method='window/logMessage' params={'type': 3, 'message': 'Starting server v0.0.46 (PID: 362)'} jsonrpc='2.0' 2025-06-26 15:17:13,980 - WARNING - Failed to validate notification: 13 validation errors for ServerNotification CancelledNotification.method Input should be 'notifications/cancelled' [type=literal_error, input_value='window/logMessage', input_type=str] For further information visit https://errors.pydantic.dev/2.11/v/literal_error CancelledNotification.params.requestId Field required [type=missing, input_value={'type': 3, 'message': 'S...ver started (PID: 362)'}, input_type=dict] For further information visit https://errors.pydantic.dev/2.11/v/missing ProgressNotification.method Input should be 'notifications/progress' [type=literal_error, input_value='window/logMessage', input_type=str] For further information visit https://errors.pydantic.dev/2.11/v/literal_error ProgressNotification.params.progressToken Field required [type=missing, input_value={'type': 3, 'message': 'S...ver started (PID: 362)'}, input_type=dict] For further information visit https://errors.pydantic.dev/2.11/v/missing ProgressNotification.params.progress Field required [type=missing, input_value={'type': 3, 'message': 'S...ver started (PID: 362)'}, input_type=dict] For further information visit https://errors.pydantic.dev/2.11/v/missing LoggingMessageNotification.method Input should be 'notifications/message' [type=literal_error, input_value='window/logMessage', input_type=str] For further information visit https://errors.pydantic.dev/2.11/v/literal_error LoggingMessageNotification.params.level Field required [type=missing, input_value={'type': 3, 'message': 'S...ver started (PID: 362)'}, input_type=dict] For further information visit https://errors.pydantic.dev/2.11/v/missing LoggingMessageNotification.params.data Field required [type=missing, input_value={'type': 3, 'message': 'S...ver started (PID: 362)'}, input_type=dict] For further information visit https://errors.pydantic.dev/2.11/v/missing ResourceUpdatedNotification.method Input should be 'notifications/resources/updated' [type=literal_error, input_value='window/logMessage', input_type=str] For further information visit https://errors.pydantic.dev/2.11/v/literal_error ResourceUpdatedNotification.params.uri Field required [type=missing, input_value={'type': 3, 'message': 'S...ver started (PID: 362)'}, input_type=dict] For further information visit https://errors.pydantic.dev/2.11/v/missing ResourceListChangedNotification.method Input should be 'notifications/resources/list_changed' [type=literal_error, input_value='window/logMessage', input_type=str] For further information visit https://errors.pydantic.dev/2.11/v/literal_error ToolListChangedNotification.method Input should be 'notifications/tools/list_changed' [type=literal_error, input_value='window/logMessage', input_type=str] For further information visit https://errors.pydantic.dev/2.11/v/literal_error PromptListChangedNotification.method Input should be 'notifications/prompts/list_changed' [type=literal_error, input_value='window/logMessage', input_type=str] For further information visit https://errors.pydantic.dev/2.11/v/literal_error. Message was: method='window/logMessage' params={'type': 3, 'message': 'Server started (PID: 362)'} jsonrpc='2.0' 2025-06-26 15:17:13,986 - INFO - HTTP Request: POST http://192.168.0.110:9001/message?sessionId=0197acd0-7c16-7f19-843a-0a7469aff035 "HTTP/1.1 202 Accepted" 2025-06-26 15:17:13,987 - INFO - HTTP Request: POST http://192.168.0.110:9001/message?sessionId=0197acd0-7c16-7f19-843a-0a7469aff035 "HTTP/1.1 202 Accepted" 2025-06-26 15:17:14,020 - INFO - HTTP Request: GET http://192.168.0.110:9003/sse "HTTP/1.1 200 OK" 2025-06-26 15:17:14,022 - INFO - HTTP Request: POST http://192.168.0.110:9003/message?sessionId=0197acd0-7ca4-7f51-9715-03111d8d66b2 "HTTP/1.1 202 Accepted" 2025-06-26 15:17:14,076 - INFO - HTTP Request: POST http://192.168.0.110:9003/message?sessionId=0197acd0-7ca4-7f51-9715-03111d8d66b2 "HTTP/1.1 202 Accepted" 2025-06-26 15:17:14,077 - INFO - HTTP Request: POST http://192.168.0.110:9003/message?sessionId=0197acd0-7ca4-7f51-9715-03111d8d66b2 "HTTP/1.1 202 Accepted" 2025-06-26 15:17:14,105 - INFO - HTTP Request: GET http://192.168.0.110:9004/sse "HTTP/1.1 200 OK" 2025-06-26 15:17:14,107 - INFO - HTTP Request: POST http://192.168.0.110:9004/message?sessionId=0197acd0-7cf9-7af1-aa56-2da1e1224a94 "HTTP/1.1 202 Accepted" 2025-06-26 15:17:15,281 - INFO - HTTP Request: POST http://192.168.0.110:9004/message?sessionId=0197acd0-7cf9-7af1-aa56-2da1e1224a94 "HTTP/1.1 202 Accepted" 2025-06-26 15:17:15,282 - INFO - HTTP Request: POST http://192.168.0.110:9004/message?sessionId=0197acd0-7cf9-7af1-aa56-2da1e1224a94 "HTTP/1.1 202 Accepted" 2025-06-26 15:17:15,310 - INFO - HTTP Request: GET http://192.168.0.110:9006/sse "HTTP/1.1 200 OK" 2025-06-26 15:17:15,312 - INFO - HTTP Request: POST http://192.168.0.110:9006/message?sessionId=0197acd0-81ae-7d4a-83cf-2284124b66ff "HTTP/1.1 202 Accepted" 2025-06-26 15:17:15,386 - INFO - HTTP Request: POST http://192.168.0.110:9006/message?sessionId=0197acd0-81ae-7d4a-83cf-2284124b66ff "HTTP/1.1 202 Accepted" 2025-06-26 15:17:15,387 - INFO - HTTP Request: POST http://192.168.0.110:9006/message?sessionId=0197acd0-81ae-7d4a-83cf-2284124b66ff "HTTP/1.1 202 Accepted" 2025-06-26 15:17:15,416 - INFO - HTTP Request: GET http://192.168.0.110:9007/sse "HTTP/1.1 200 OK" 2025-06-26 15:17:15,418 - INFO - HTTP Request: POST http://192.168.0.110:9007/message?sessionId=0197acd0-8218-7225-9955-7743d86ac3d0 "HTTP/1.1 202 Accepted" 2025-06-26 15:17:15,420 - INFO - HTTP Request: POST http://192.168.0.110:9007/message?sessionId=0197acd0-8218-7225-9955-7743d86ac3d0 "HTTP/1.1 202 Accepted" 2025-06-26 15:17:15,421 - INFO - HTTP Request: POST http://192.168.0.110:9007/message?sessionId=0197acd0-8218-7225-9955-7743d86ac3d0 "HTTP/1.1 202 Accepted" 2025-06-26 15:17:15,509 - INFO - HTTP Request: GET http://192.168.0.110:9008/sse "HTTP/1.1 200 OK" 2025-06-26 15:17:15,511 - INFO - HTTP Request: POST http://192.168.0.110:9008/message?sessionId=0197acd0-8275-7cfb-a74c-4516ee0d6ed9 "HTTP/1.1 202 Accepted" 2025-06-26 15:17:15,898 - INFO - HTTP Request: POST http://192.168.0.110:9008/message?sessionId=0197acd0-8275-7cfb-a74c-4516ee0d6ed9 "HTTP/1.1 202 Accepted" 2025-06-26 15:17:15,899 - INFO - HTTP Request: POST http://192.168.0.110:9008/message?sessionId=0197acd0-8275-7cfb-a74c-4516ee0d6ed9 "HTTP/1.1 202 Accepted" 2025-06-26 15:17:15,947 - INFO - HTTP Request: GET http://192.168.0.110:9009/sse "HTTP/1.1 200 OK" 2025-06-26 15:17:15,949 - INFO - HTTP Request: POST http://192.168.0.110:9009/message?sessionId=0197acd0-842b-7075-b910-9bfdd11fce14 "HTTP/1.1 202 Accepted" 2025-06-26 15:17:17,206 - INFO - HTTP Request: POST http://192.168.0.110:9009/message?sessionId=0197acd0-842b-7075-b910-9bfdd11fce14 "HTTP/1.1 202 Accepted" 2025-06-26 15:17:17,207 - INFO - HTTP Request: POST http://192.168.0.110:9009/message?sessionId=0197acd0-842b-7075-b910-9bfdd11fce14 "HTTP/1.1 202 Accepted" ERROR: + Exception Group Traceback (most recent call last): | File "/app/.venv/lib/python3.11/site-packages/starlette/routing.py", line 692, in lifespan | async with self.lifespan_context(app) as maybe_state: | File "/usr/lib/python3.11/contextlib.py", line 204, in __aenter__ | return await anext(self.gen) | ^^^^^^^^^^^^^^^^^^^^^ | File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 99, in lifespan | async with AsyncExitStack() as stack: | File "/usr/lib/python3.11/contextlib.py", line 733, in __aexit__ | raise exc_details[1] | File "/usr/lib/python3.11/contextlib.py", line 716, in __aexit__ | cb_suppress = await cb(*exc_details) | ^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.11/contextlib.py", line 222, in __aexit__ | await self.gen.athrow(typ, value, traceback) | File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 121, in lifespan | async with sse_client( | File "/usr/lib/python3.11/contextlib.py", line 222, in __aexit__ | await self.gen.athrow(typ, value, traceback) | File "/app/.venv/lib/python3.11/site-packages/mcp/client/sse.py", line 54, in sse_client | async with anyio.create_task_group() as tg: | File "/app/.venv/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 772, in __aexit__ | raise BaseExceptionGroup( | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Exception Group Traceback (most recent call last): | File "/app/.venv/lib/python3.11/site-packages/mcp/client/sse.py", line 155, in sse_client | yield read_stream, write_stream | File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 127, in lifespan | async with ClientSession(reader, writer) as session: | File "/app/.venv/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 772, in __aexit__ | raise BaseExceptionGroup( | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Exception Group Traceback (most recent call last): | File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 130, in lifespan | yield | File "/usr/lib/python3.11/contextlib.py", line 716, in __aexit__ | cb_suppress = await cb(*exc_details) | ^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.11/contextlib.py", line 222, in __aexit__ | await self.gen.athrow(typ, value, traceback) | File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 121, in lifespan | async with sse_client( | File "/usr/lib/python3.11/contextlib.py", line 222, in __aexit__ | await self.gen.athrow(typ, value, traceback) | File "/app/.venv/lib/python3.11/site-packages/mcp/client/sse.py", line 54, in sse_client | async with anyio.create_task_group() as tg: | File "/app/.venv/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 772, in __aexit__ | raise BaseExceptionGroup( | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Exception Group Traceback (most recent call last): | File "/app/.venv/lib/python3.11/site-packages/mcp/client/sse.py", line 155, in sse_client | yield read_stream, write_stream | File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 127, in lifespan | async with ClientSession(reader, writer) as session: | File "/app/.venv/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 772, in __aexit__ | raise BaseExceptionGroup( | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Exception Group Traceback (most recent call last): | File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 130, in lifespan | yield | File "/usr/lib/python3.11/contextlib.py", line 716, in __aexit__ | cb_suppress = await cb(*exc_details) | ^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.11/contextlib.py", line 222, in __aexit__ | await self.gen.athrow(typ, value, traceback) | File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 121, in lifespan | async with sse_client( | File "/usr/lib/python3.11/contextlib.py", line 222, in __aexit__ | await self.gen.athrow(typ, value, traceback) | File "/app/.venv/lib/python3.11/site-packages/mcp/client/sse.py", line 54, in sse_client | async with anyio.create_task_group() as tg: | File "/app/.venv/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 772, in __aexit__ | raise BaseExceptionGroup( | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Exception Group Traceback (most recent call last): | File "/app/.venv/lib/python3.11/site-packages/mcp/client/sse.py", line 155, in sse_client | yield read_stream, write_stream | File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 127, in lifespan | async with ClientSession(reader, writer) as session: | File "/app/.venv/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 772, in __aexit__ | raise BaseExceptionGroup( | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Exception Group Traceback (most recent call last): | File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 130, in lifespan | yield | File "/usr/lib/python3.11/contextlib.py", line 716, in __aexit__ | cb_suppress = await cb(*exc_details) | ^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.11/contextlib.py", line 222, in __aexit__ | await self.gen.athrow(typ, value, traceback) | File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 121, in lifespan | async with sse_client( | File "/usr/lib/python3.11/contextlib.py", line 222, in __aexit__ | await self.gen.athrow(typ, value, traceback) | File "/app/.venv/lib/python3.11/site-packages/mcp/client/sse.py", line 54, in sse_client | async with anyio.create_task_group() as tg: | File "/app/.venv/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 772, in __aexit__ | raise BaseExceptionGroup( | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Exception Group Traceback (most recent call last): | File "/app/.venv/lib/python3.11/site-packages/mcp/client/sse.py", line 155, in sse_client | yield read_stream, write_stream | File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 127, in lifespan | async with ClientSession(reader, writer) as session: | File "/app/.venv/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 772, in __aexit__ | raise BaseExceptionGroup( | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Exception Group Traceback (most recent call last): | File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 130, in lifespan | yield | File "/usr/lib/python3.11/contextlib.py", line 716, in __aexit__ | cb_suppress = await cb(*exc_details) | ^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.11/contextlib.py", line 222, in __aexit__ | await self.gen.athrow(typ, value, traceback) | File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 121, in lifespan | async with sse_client( | File "/usr/lib/python3.11/contextlib.py", line 222, in __aexit__ | await self.gen.athrow(typ, value, traceback) | File "/app/.venv/lib/python3.11/site-packages/mcp/client/sse.py", line 54, in sse_client | async with anyio.create_task_group() as tg: | File "/app/.venv/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 772, in __aexit__ | raise BaseExceptionGroup( | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Exception Group Traceback (most recent call last): | File "/app/.venv/lib/python3.11/site-packages/mcp/client/sse.py", line 155, in sse_client | yield read_stream, write_stream | File "/app/.venv/lib/python3.11/site-packages/mcpo/main.py", line 127, in lifespan | async with ClientSession(reader, writer) as session: | File "/app/.venv/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 772, in __aexit__ | raise BaseExceptionGroup( | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | ... (max_group_depth is 10) +------------------------------------ ERROR: Application startup failed. Exiting.
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#84
No description provided.