chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
# MCP Manager Example (FastAPI)
|
||||
|
||||
This example shows how to use `MCPServerManager` to keep MCP server lifecycle management in a single task inside a FastAPI app with the Streamable HTTP transport.
|
||||
|
||||
## Run the MCP server (Streamable HTTP)
|
||||
|
||||
```
|
||||
uv run python examples/mcp/manager_example/mcp_server.py
|
||||
```
|
||||
|
||||
The server listens at `http://localhost:8000/mcp` by default.
|
||||
|
||||
You can override the host/port with:
|
||||
|
||||
```
|
||||
export STREAMABLE_HTTP_HOST=127.0.0.1
|
||||
export STREAMABLE_HTTP_PORT=8000
|
||||
```
|
||||
|
||||
This example also configures an inactive MCP server at `http://localhost:8001/mcp` to demonstrate how the manager drops failed
|
||||
servers. You can override it with:
|
||||
|
||||
```
|
||||
export INACTIVE_MCP_SERVER_URL=http://localhost:8001/mcp
|
||||
```
|
||||
|
||||
## Run the FastAPI app
|
||||
|
||||
```
|
||||
uv run python examples/mcp/manager_example/app.py
|
||||
```
|
||||
|
||||
The app listens at `http://127.0.0.1:9001`.
|
||||
|
||||
## Run the smoke test
|
||||
|
||||
To verify the MCP manager and app integration without calling a model:
|
||||
|
||||
```
|
||||
uv run python -m examples.mcp.manager_example.smoke_test
|
||||
```
|
||||
|
||||
The smoke test starts the local MCP server on a temporary port, points both app MCP server settings at that server, and checks `/health`, `/tools`, and `/add`.
|
||||
|
||||
## Toggle MCP manager usage
|
||||
|
||||
By default, the app uses `MCPServerManager`. To disable it:
|
||||
|
||||
```
|
||||
export USE_MCP_MANAGER=0
|
||||
```
|
||||
|
||||
## Try the endpoints
|
||||
|
||||
```
|
||||
curl http://127.0.0.1:9001/health
|
||||
curl http://127.0.0.1:9001/tools
|
||||
curl -X POST http://127.0.0.1:9001/add \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d '{"a": 2, "b": 3}'
|
||||
```
|
||||
|
||||
Reconnect failed MCP servers (manager must be enabled):
|
||||
|
||||
```
|
||||
curl -X POST http://127.0.0.1:9001/reconnect \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d '{"failed_only": true}'
|
||||
```
|
||||
|
||||
To use `/run`, set `OPENAI_API_KEY`:
|
||||
|
||||
```
|
||||
export OPENAI_API_KEY=...
|
||||
curl -X POST http://127.0.0.1:9001/run \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d '{"input": "Add 4 and 9."}'
|
||||
```
|
||||
Reference in New Issue
Block a user