项目简介
'langgraph-ai' 仓库是一个全面的LangGraph实现集合,旨在构建复杂的AI应用工作流。其中包含多个基于Model Context Protocol (MCP) 的服务器实现,它们通过标准化的JSON-RPC协议(支持Stdio, SSE, HTTP等传输方式)与LLM客户端通信,提供核心功能,如托管和管理资源、注册和执行工具以及定义Prompt模板。这些MCP服务器作为LLM应用的后端,使其能够安全、可扩展地访问外部功能和实时上下文。
主要功能点
该项目中的MCP服务器提供了以下核心功能:
-
终端命令执行 (Terminal Command Execution):
- 允许LLM安全地执行预定义的shell命令,例如文件操作(读、写、列出)、目录管理等。
- 支持命令超时保护和工作区隔离,确保安全性。
- 通过标准I/O (Stdio) 或Server-Sent Events (SSE) 协议提供服务。
-
网页内容抓取 (Web Content Fetching):
- 使LLM能够从互联网抓取网页内容。
- 支持将HTML内容转换为Markdown格式,便于LLM理解。
- 可配置遵守robots.txt协议,并支持代理设置。
- 通过标准I/O (Stdio) 协议提供服务。
-
温度单位转换 (Temperature Conversion):
- 提供在摄氏度(Celsius)、华氏度(Fahrenheit)和开尔文(Kelvin)之间进行温度单位转换的工具。
- 内置输入验证和转换公式。
- 通过流式HTTP (Streamable HTTP) 协议提供服务。
-
网页搜索 (Web Search):
- 使LLM能够利用SerpAPI进行实时网页搜索,获取最新信息。
- 支持指定搜索查询和最大结果数量。
- 通过标准I/O (Stdio) 协议提供服务。
安装步骤
在克隆仓库后,请按照以下通用步骤安装依赖:
-
克隆仓库
git clone https://github.com/piyushagni5/langgraph-ai.git cd langgraph-ai -
安装UV包管理器 (推荐)
curl -LsSf https://astral.sh/uv/install.sh | sh # Windows (PowerShell): # powershell -c "irm https://astral.sh/uv/install.ps1 | iex" -
创建并激活虚拟环境 进入项目根目录,为所有MCP子项目安装依赖。
uv venv --python 3.10 source .venv/bin/activate # macOS/Linux # 或 .venv\Scripts\activate # Windows -
安装依赖
uv pip install -r requirements.txt -
配置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的实时网页搜索。
基本使用方法
-
启动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' 调用,无需手动启动。
-
连接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