流式HTTP MCP服务

一个基于LangGraph和Bedrock LLM的无状态流式HTTP MCP服务器,适用于多节点环境部署,提供加法和乘法工具调用功能。

  • by mpontingaws
  • Python
  • 混合部署
  • 1 星标
  • 更新于
在 GitHub 查看 mpontingaws/demo-local-streamable-http-mcp-with-langgraph-bedrock

使用说明

使用LangGraph和Bedrock LLM演示本地流式HTTP MCP

改编自Python MCP SDK和LangChain MCP适配器。

在本地运行的步骤

  1. 启动MCP服务器
    • 使用MCP检查器验证MCP服务器是否正在运行
  2. 运行python客户端测试MCP服务器

MCP服务器

改编自 LangGraph MCP简单流式Http无状态服务器示例

一个无状态MCP服务器示例,演示了StreamableHttp传输而不维护会话状态。这个例子非常适合理解如何在多节点环境中部署MCP服务器,在这些环境中,请求可以路由到任何实例。在这个仓库的例子中,只使用了一个MCP服务器节点。

特性

  • 在无状态模式下使用StreamableHTTP传输(mcp_ses_id=None)
  • 每个请求都会创建一个新的临时连接
  • 请求之间没有保持会话状态
  • 任务生命周期仅限于单个请求
  • 适用于多节点环境中的部署

服务器公开了2个工具。

  • 添加
  • 乘

用法

  1. 在终端中,确保您位于样本的总文件夹中。不要导航到包含server.py文件的文件夹。

  2. 启动服务器

    # Using default port 3000
    uv run mcp-simple-streamablehttp-stateless
    
    # [Optional] Using custom port
    uv run mcp-simple-streamablehttp-stateless --port 3000
    
    # [Optional] Custom logging level
    uv run mcp-simple-streamablehttp-stateless --log-level DEBUG
    
    # [Optional] Enable JSON responses instead of SSE streams
    uv run mcp-simple-streamablehttp-stateless --json-response
    
  3. 如果它运行正常,您应该看到服务器现在正在本地地址运行,如 http://0.0.0.0:3000MCP服务器将可在 /mcp 路径。

确保在服务器打开的情况下离开终端,以便在检查器和客户端中使用它。

MCP检查员

https://modelcontextprotocol.io/docs/tools/inspector

  1. 运行检查器

        # This will start the inspector on a different port than the server is running
        npx @modelcontextprotocol/inspector
    
  2. 对于“运输类型”,选择 Streamable HTTP

  3. 对于URL,添加 http://0.0.0.0:3000/mcp 或者您使用的任何本地主机+端口组合

客户端

用Python编写的流式HTTP客户端,用作测试HTTP传输方法的基础文件。这是非常简单的,但展示了如何使用Python SDK mcp.client.streamable_http.

此本地客户端调用 LangGraph代理 它使用亚马逊基岩模型 create_react_agent.

用法

您可以使用 client.py 或 client-readable.py 文件以测试MCP服务器。

  • 选项1: client.py =这是您在大多数示例中看到的,它在末尾有一个print语句,用于查看代理调用的完整响应输出。
  • 选项2: client-readable.py =功能与client.py文件完全相同,除了它添加了一些额外的代码,使代理的整体输出和调用在终端输出中可读。

先决条件

  1. AWS CLI凭据必须允许访问客户端中调用的Amazon Bedrock模型。

    • 跑 aws configure 在命令行界面(CLI)中,验证您是否设置了正确的访问权限,或者您是否假设了一个具有所需权限的配置文件 ~/.aws/credentials 设置(MacOS)。
  2. 运行以下命令以测试服务器。

        # Option 1
        python client.py
    
        # Option 2
        python client-readable.py
    

要测试来自代理的不同响应,请调整文件中具有 agent.ainvoke() 以传达不同的信息。