流式HTTP服务器与客户端

该项目展示了如何使用Python构建和交互基于模型上下文协议(MCP)的流式HTTP服务器和客户端,包括无状态服务器、Google OAuth保护服务器和Gemini驱动的ADK客户端。

  • by theailanguage
  • Python
  • 本地部署
  • 30 星标
  • 更新于
在 GitHub 查看 theailanguage/mcp_streamable_http

使用说明

MCP流式HTTP服务器和客户端

该项目演示了如何构建和交互 模型上下文协议(MCP) Python中的流式HTTP服务器和客户端。它包括无状态服务器、受Google OAuth保护的服务器和能够与MCP工具集交互的Gemini驱动的ADK客户端。


1.️⃣ 无状态流式服务器

地点: streamable_http_server/1-stateless-streamable/

这些是 无状态, 可流式传输 使用模型上下文协议(MCP)构建的HTTP服务器。无状态意味着在工具调用过程中不会保留内存或会话。

目录

  • server1.py:提供 add_numbers 和 subtract_numbers 工具。
  • server2.py:提供 multiply_numbers 和 divide_numbers 工具。
  • main.py:运行Launchpad脚本 server1 或 server2 来自CLI。

🚀 入门指南

  1. 从根目录创建虚拟环境

    # macOS / Linux
    uv venv
    source ./.venv/bin/activate
    
    # Windows (PowerShell)
    uv venv
    .venv\scripts\activate
    
  2. 安装要求 uv

    uv sync --all-groups
    
  3. 运行服务器

    • 跑 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
      

2.️⃣ Google OAuth–受保护的服务器

地点: streamable_http_server/2-google-oauth-simple-server/

此服务器演示了 OAuth代理模式 随着 谷歌作为上游供应商。它保护Google OAuth 2.0背后的MCP服务器,允许MCP客户端使用 DCR(动态客户端注册), PKCE,以及 环回重定向URI.

  • server.py:MCP资源服务器充当Google的OAuth代理。
  • README.md:设置、环境变量和流程的详细说明。

3.️⃣ MCP流式HTTP客户端

地点: streamable_http_client/

这是一个教育项目,演示如何连接到 模型上下文协议(MCP) 流式HTTP服务器,从服务器中发现工具,并使用 谷歌ADK代理 由...驱动 谷歌双子座.

⚙️ 安装说明

  1. 创建虚拟环境

    # macOS / Linux
    uv venv
    source ./.venv/bin/activate
    
    # Windows (PowerShell)
    uv venv
    .venv\scripts\activate
    
  2. 安装依赖项

    uv sync --all-groups
    
  3. 设置环境变量

    创建一个 .env 内部文件 streamable_http_client:

    GOOGLE_API_KEY=your-google-api-key
    
  4. 配置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"
          ]
        }
      }
    }
    
  5. 运行客户端

    uv run universal_client/1-google-adk-gemini-mcp-client/cmd.py
    

    这将启动一个交互式命令行聊天循环,通过HTTP或STDIO连接到MCP服务器,并使用从每个服务器发现的工具与Gemini驱动的ADK代理进行交互。


4.️⃣ Google OAuth–受保护的客户端

地点: universal_client/3-google-oauth-simple-client/

此客户端演示如何对 Google OAuth–受保护的MCP服务器 使用OAuth代理模式。它

  • 处理环回重定向URI。
  • 自动支持DCR+PKCE。
  • 与受保护的工具交互(get_time, get_user_info).

运行方式:

source .venv/bin/activate
uv run ./universal_client/3-google-oauth-simple-client/client.py

5.️⃣ 即将推出

🧠 状态流式服务器

A. 有状态的, 可流式传输 使用MCP的HTTP服务器,在工具调用之间维护状态,并启用可恢复的事件流。


🔧 Claude桌面集成

如果要将这些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 这不是官方的人类学或克劳德方案


📜 许可证

此存储库和其中的代码根据 GNU通用公共许可证v3.0。请参阅 LICENSE 文件以获取完整详细信息。

内置于❤️ 靠近 AI语言 教授和演示如何使用FastMCP、Pydantic和ADK在Python中创建可流式传输的MCP服务器和代理。