返回市场
流式HTTP服务

流式HTTP服务

作者:theailanguage22 星标更新:2025-09-11

项目介绍

MCP 可流式传输的HTTP服务器与客户端

该项目展示了如何使用Python构建和交互**模型上下文协议(MCP)**可流式传输的HTTP服务器和客户端。它包括无状态服务器、一个受Google OAuth保护的服务器以及一个由Gemini驱动的ADK客户端,该客户端能够与MCP工具集进行交互。


1️⃣ 无状态可流式传输的服务器

位置: streamable_http_server/1-stateless-streamable/

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

内容

  • server1.py:提供add_numberssubtract_numbers工具。
  • server2.py:提供multiply_numbersdivide_numbers工具。
  • main.py:从命令行运行server1server2的启动脚本。

🚀 快速开始

  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作为上游提供商。它通过Google OAuth 2.0保护了一个MCP服务器,允许MCP客户端使用动态客户端注册(DCR)PKCE回环重定向URI动态认证。

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

3️⃣ MCP可流式传输的HTTP客户端

位置: streamable_http_client/

这是一个教育项目,展示了如何连接到模型上下文协议(MCP)可流式传输的HTTP服务器,发现服务器上的工具,并使用由Google Gemini驱动的Google ADK代理与这些工具进行交互。

⚙️ 设置说明

  1. 创建虚拟环境

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

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

    streamable_http_client内创建一个.env文件:

    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/

此客户端演示了如何使用OAuth代理模式对受Google OAuth保护的MCP服务器进行身份验证。它:

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

运行:

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

5️⃣ 即将推出

🧠 有状态可流式传输的服务器

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


🔧 Claude Desktop集成

如果您想将这些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服务器和代理。