该项目展示了如何使用Python构建和交互**模型上下文协议(MCP)**可流式传输的HTTP服务器和客户端。它包括无状态服务器、一个受Google OAuth保护的服务器以及一个由Gemini驱动的ADK客户端,该客户端能够与MCP工具集进行交互。
位置: streamable_http_server/1-stateless-streamable/
这些是使用模型上下文协议(MCP)构建的无状态、可流式传输的HTTP服务器。无状态意味着在工具调用之间不保留任何内存或会话。
server1.py:提供add_numbers和subtract_numbers工具。server2.py:提供multiply_numbers和divide_numbers工具。main.py:从命令行运行server1或server2的启动脚本。从根目录创建虚拟环境
# macOS / Linux
uv venv
source ./.venv/bin/activate
# Windows (PowerShell)
uv venv
.venv\scripts\activate
使用uv安装需求
uv sync --all-groups
运行服务器
运行server1(加法+减法):
uv run --active streamable_http_server/1-stateless-streamable/main.py --server server1
运行server2(乘法+除法):
uv run --active streamable_http_server/1-stateless-streamable/main.py --server server2
位置: streamable_http_server/2-google-oauth-simple-server/
此服务器演示了OAuth代理模式,其中Google作为上游提供商。它通过Google OAuth 2.0保护了一个MCP服务器,允许MCP客户端使用动态客户端注册(DCR)、PKCE和回环重定向URI动态认证。
server.py:作为Google OAuth代理的MCP资源服务器。README.md:详细说明设置、环境变量和流程。位置: streamable_http_client/
这是一个教育项目,展示了如何连接到模型上下文协议(MCP)可流式传输的HTTP服务器,发现服务器上的工具,并使用由Google Gemini驱动的Google ADK代理与这些工具进行交互。
创建虚拟环境
# macOS / Linux
uv venv
source ./.venv/bin/activate
# Windows (PowerShell)
uv venv
.venv\scripts\activate
安装依赖项
uv sync --all-groups
设置环境变量
在streamable_http_client内创建一个.env文件:
GOOGLE_API_KEY=your-google-api-key
配置MCP服务器
编辑streamable_http_client/theailanguage_config.json文件:
{
"mcpServers": {
"server1": {
"type": "http",
"url": "http://localhost:3000/mcp"
},
"server2": {
"type": "http",
"url": "http://localhost:3001/mcp"
},
"terminal": {
"type": "stdio",
"command": "/Users/theailanguage/.local/bin/uv",
"args": [
"--directory", "/Users/theailanguage/mcp/mcp_stremable_http/stdio_server/1-terminal-server",
"run",
"terminal_server.py"
]
}
}
}
运行客户端
uv run universal_client/1-google-adk-gemini-mcp-client/cmd.py
这将启动一个交互式的命令行聊天循环,通过HTTP或STDIO连接到MCP服务器,并使用从每个服务器发现的工具与Gemini驱动的ADK代理进行交互。
位置: universal_client/3-google-oauth-simple-client/
此客户端演示了如何使用OAuth代理模式对受Google OAuth保护的MCP服务器进行身份验证。它:
get_time,get_user_info)进行交互。运行:
source .venv/bin/activate
uv run ./universal_client/3-google-oauth-simple-client/client.py
一个使用MCP的有状态、可流式传输的HTTP服务器,它在工具调用之间维护状态并启用可恢复事件流。
如果您想将这些MCP服务器与Claude Desktop集成,请使用以下配置:
{
"mcpServers": {
"server1": {
"command": "npx",
"args": [
"mcp-remote",
"http://localhost:3000/mcp"
]
},
"server2": {
"command": "npx",
"args": [
"mcp-remote",
"http://localhost:3001/mcp"
]
}
}
}
保存为claude_desktop_config.json。
警告!- 此处使用的第三方包mcp-remote不是官方Anthropic或Claude包
此仓库及其内部代码均根据GNU通用公共许可证v3.0授权。详情见LICENSE文件。
由The AI Language用心打造,旨在教授和展示如何使用FastMCP、Pydantic和ADK在Python中创建可流式传输的MCP服务器和代理。