项目简介

'langgraph-ai' 仓库是一个全面的LangGraph实现集合,旨在构建复杂的AI应用工作流。其中包含多个基于Model Context Protocol (MCP) 的服务器实现,它们通过标准化的JSON-RPC协议(支持Stdio, SSE, HTTP等传输方式)与LLM客户端通信,提供核心功能,如托管和管理资源、注册和执行工具以及定义Prompt模板。这些MCP服务器作为LLM应用的后端,使其能够安全、可扩展地访问外部功能和实时上下文。

主要功能点

该项目中的MCP服务器提供了以下核心功能:

  1. 终端命令执行 (Terminal Command Execution):

    • 允许LLM安全地执行预定义的shell命令,例如文件操作(读、写、列出)、目录管理等。
    • 支持命令超时保护和工作区隔离,确保安全性。
    • 通过标准I/O (Stdio) 或Server-Sent Events (SSE) 协议提供服务。
  2. 网页内容抓取 (Web Content Fetching):

    • 使LLM能够从互联网抓取网页内容。
    • 支持将HTML内容转换为Markdown格式,便于LLM理解。
    • 可配置遵守robots.txt协议,并支持代理设置。
    • 通过标准I/O (Stdio) 协议提供服务。
  3. 温度单位转换 (Temperature Conversion):

    • 提供在摄氏度(Celsius)、华氏度(Fahrenheit)和开尔文(Kelvin)之间进行温度单位转换的工具。
    • 内置输入验证和转换公式。
    • 通过流式HTTP (Streamable HTTP) 协议提供服务。
  4. 网页搜索 (Web Search):

    • 使LLM能够利用SerpAPI进行实时网页搜索,获取最新信息。
    • 支持指定搜索查询和最大结果数量。
    • 通过标准I/O (Stdio) 协议提供服务。

安装步骤

在克隆仓库后,请按照以下通用步骤安装依赖:

  1. 克隆仓库

    git clone https://github.com/piyushagni5/langgraph-ai.git
    cd langgraph-ai
  2. 安装UV包管理器 (推荐)

    curl -LsSf https://astral.sh/uv/install.sh | sh
    # Windows (PowerShell):
    # powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
  3. 创建并激活虚拟环境 进入项目根目录,为所有MCP子项目安装依赖。

    uv venv --python 3.10
    source .venv/bin/activate # macOS/Linux
    # 或 .venv\Scripts\activate # Windows
  4. 安装依赖

    uv pip install -r requirements.txt
  5. 配置API密钥 (如果需要) 部分服务器(如网页搜索服务器)和客户端需要API密钥。在项目根目录创建 '.env' 文件,并添加必要的密钥,例如:

    GOOGLE_API_KEY=your_google_api_key_here
    SERPAPI_KEY=your_serpapi_key_here

MCP服务器配置示例

MCP客户端(例如,使用LangChain MCP适配器或Google ADK的客户端)需要配置每个MCP服务器的连接信息。以下是几种典型MCP服务器的配置信息,您可以根据需要调整路径和端口:

  • 终端命令行服务器 (Stdio)

    • 服务器名称: 'terminal_executor'
    • 通信类型: 'stdio' (标准输入/输出)
    • 启动命令: 'python'
    • 命令参数: 'mcp/04-build-streammable-http-mcp-client/servers/stdio/terminal_server.py'
    • 功能描述: 提供安全的本地终端命令执行功能。
  • 网页内容抓取服务器 (Stdio)

    • 服务器名称: 'web_fetcher'
    • 通信类型: 'stdio' (标准输入/输出)
    • 启动命令: 'python'
    • 命令参数: '-m', 'mcp_server_fetch'
    • 工作目录 (可选,如果通过 '-m' 运行): 'mcp/02-build-mcp-client-with-multiple-server-support/servers/fetch_server/src'
    • 功能描述: 提供网页内容抓取和HTML转Markdown功能。
  • 终端命令行服务器 (SSE)

    • 服务器名称: 'terminal_sse'
    • 通信类型: 'sse' (Server-Sent Events)
    • 启动命令: 'python'
    • 命令参数: 'mcp/03-build-mcp-server-client-using-sse/servers/sse_server/terminal_server_sse.py', '--host', '127.0.0.1', '--port', '8081'
    • 连接URL: 'http://127.0.0.1:8081/sse'
    • 功能描述: 通过SSE协议提供终端命令执行。
  • 温度单位转换服务器 (HTTP)

    • 服务器名称: 'temperature_converter'
    • 通信类型: 'http' (流式HTTP)
    • 启动命令: 'python'
    • 命令参数: 'mcp/04-build-streammable-http-mcp-client/servers/http/temperature_server.py', '--host', '127.0.0.1', '--port', '8000'
    • 连接URL: 'http://127.0.0.1:8000/mcp'
    • 功能描述: 提供摄氏度、华氏度、开尔文之间的温度转换。
  • 网页搜索服务器 (Stdio)

    • 服务器名称: 'web_searcher'
    • 通信类型: 'stdio' (标准输入/输出)
    • 启动命令: 'python'
    • 命令参数: 'agentic-rag/agentic-rag-systems/mcp_a2a_agentic_rag/mcp/servers/web_search_server/web_search_server.py'
    • 环境变量: 'SERPAPI_KEY=YOUR_SERPAPI_KEY_HERE' (在客户端配置中设置)
    • 功能描述: 提供基于SerpAPI的实时网页搜索。

基本使用方法

  1. 启动MCP服务器: 您可以在单独的终端中启动每个服务器。例如,启动温度转换服务器:

    # 确保已激活虚拟环境
    source .venv/bin/activate 
    python mcp/04-build-streammable-http-mcp-client/servers/http/temperature_server.py --port 8000 --host 127.0.0.1

    对于Stdio服务器,它们通常由客户端直接通过 'subprocess' 调用,无需手动启动。

  2. 连接MCP客户端: 在另一个终端中,使用支持MCP协议的客户端(如LangChain或Google ADK客户端)连接到已启动的服务器。客户端将根据上述配置信息自动发现并利用这些服务器提供的工具。 例如,该仓库的客户端示例 'mcp/04-build-streammable-http-mcp-client/cli/main.py' 可以连接到多个服务器并提供交互式体验。

    # 确保已激活虚拟环境
    source .venv/bin/activate
    python mcp/04-build-streammable-http-mcp-client/cli/main.py

    然后,您可以在客户端中尝试使用自然语言查询,如 "Convert 25 degrees Celsius to Fahrenheit" (转换25摄氏度到华氏度) 或 "Search the web for the latest AI news" (搜索最新的AI新闻)。

注意事项

  • 所有路径均为相对于仓库根目录的相对路径。
  • 对于HTTP/SSE服务器,请确保防火墙未阻止指定的端口。
  • 某些服务器(如网页搜索)需要外部API密钥,请务必在 '.env' 文件中配置或通过客户端传递。

信息

分类

网页与API