Token导航 LogoToken导航TokenDH.com
Langchain MCP Multiserver Demo logo
AI代理stdio官方级别未说明来源级核验

Langchain MCP Multiserver Demo

MCP Server

LangChain MCP集成工具通过自动发现和编排来自多个MCP服务器的工具,结合Context7文档检索系统,确保代理响应基于真实、版本化的文档,消除幻觉。

工具数

0

提示词数

0

GitHub Stars

0

资源数

0
LangChainPython文档检索

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

don-aie-cohort8

提供方

don-aie-cohort8

最后核验

2026/5/17 20:19

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

python clients/integration_test_mcp_json.py

详细介绍

LangChain与MCP集成:从工具混乱到上下文清晰

基于来自……的例子构建 LangChain MCP适配器 仓库(在计算机科学中,通常指存储代码、数据等资源的地方)

太长,读不下去了

这个项目展示了LangChain代理如何自动发现并协调来自多个MCP服务器(时间、推理、文档)的工具。突破之处在于: 上下文7——一个文档检索系统,它基于来自40多个库(如LangChain、LangGraph、OpenAI、Next.js、Redis等)的真实、版本化的文档来生成代理响应,从而消除幻觉。

快速入门: python clients/integration_test_mcp_json.py | 实际示例: LangSmith 追踪(或“追踪功能”)

一目了然的堆栈视图

LangChain 1.0.2 | MCP SDK ≥1.6.0 | FastMCP | Context7 | LangSmith | Python ≥3.13
Transport: stdio, HTTP (streamable-http), SSE | LLM: OpenAI GPT-4.1

______________________________________________________________________

🧩 问题

人工智能工程师面临着一个持续的挑战:将来自不同来源的工具——Python、Node.js、不同的传输方式、各种API模式——集成到统一的智能体框架中。传统方法会导致供应商锁定、脆弱的集成以及易产生幻觉的推理。

如果有一种更好的方法呢?

这个项目展示了一个 基于协议的方法 其中 模型上下文协议(MCP) 作为通用适配器,使代理能够:

  • 自动发现工具 来自异构服务
  • 实际文档中的地面响应 (不是幻觉)
  • 透明地推理 具有可观察的决策路径

这不仅仅是关于连接API的问题,而是关于构建 可组合的智能体生态系统 在这里,驱动智能的是上下文,而不仅仅是推理。

______________________________________________________________________

🏗️ 系统概述

该架构遵循清晰的职责分离原则:

flowchart LR
  A[User Query] --> B[LangChain Agent]
  B --> C[MultiServerMCPClient]
  C -->|Tool Discovery| D1[mcp-server-time]
  C -->|Tool Discovery| D2[sequential-thinking]
  C -->|Tool Discovery| D3[Context7]
  D1 --> E1[Time data]
  D2 --> E2[Reasoning traces]
  D3 --> E3[Documentation grounding]
  E1 & E2 & E3 --> F[LangChain Agent Response]
  F --> G[LangSmith Trace + Display Utils]

MCP服务器角色

服务器用途示例工具
mcp-server-time 翻译为中文是:“MCP服务器时间”或“MCP服务器时钟时间”时间推理和时区操作get_current_timeconvert_time
顺序思维用于逐步推理的逻辑框架sequentialthinkingplan_steps
上下文7文档基础(或文档扎根) — 从LangChain、LangGraph、MCP以及40多个其他库中检索真实文档resolve-library-idget-library-docs
💡 灯泡(表示想法或灵感的闪现) 为何选择Context7? Context7的扩展范围远远超出了LangChain——它提供了来自权威来源的文档 40多个生态系统 包括OpenAI SDKs、Next.js、Redis、Supabase、Hugging Face等。这使其成为事实性AI响应的通用基础层,而不仅仅是工具适配器。

所有工具都是 自动发现的 通过MCP协议,作为统一工具包暴露给代理。

______________________________________________________________________

💡 为何这很重要

该架构展示了生产级智能代理系统所需的三个关键支柱:

1. 标准化(MCP协议)

  • 将智能体与工具实现解耦 — 不受供应商锁定限制
  • 与语言无关的 — Python、Node.js 或任何运行时环境
  • 与传输方式无关 — stdio(标准输入输出)、HTTP、SSE(服务器发送事件)或 WebSocket

2. 接地(上下文7)

  • 事实准确性 通过权威文档检索
  • 来源归属 — 每个答案都链接到经过验证的文档
  • 版本意识 — 查询特定的库版本(例如。, /langchain/langchain/1.0.2)

3. 可观测性(LangSmith)

  • 可见的推理路径 — 查看每个工具调用和决策
  • 可调试的执行 — 追踪故障至根本原因
  • 性能指标 — 令牌使用、延迟、工具选择
⚡(闪电符号,常用于表示速度、活力或紧急情况,具体含义需结合上下文) 关键要点: MCP将工具集成方式从代码布线转变为协议协商。Context7确保代理从真实情况中学习,而非产生幻觉。

这些支柱共同作用,使得代理具有可扩展性、真实性和可审计性。

______________________________________________________________________

🚀 演示亮点

这个项目的中心环节是 integration_test_mcp_json.py112行 这些展示了MCP集成的全部潜力。

🧩(拼图、碎片、谜题等的象征) 见解: 这不仅仅是工具编排——它是 基于协议的上下文架构该代理进行推理 *和;与* 文档,而不仅仅是 *关于* 任务。

它的功能/作用

  1. 生成三个MCP服务器 (时间、顺序思维、上下文7)作为子过程
  2. 发现工具 通过所有服务器 MultiServerMCPClient
  3. 创建一个LangChain代理 使用聚合工具包
  4. 执行复杂查询: *“提供从LangGraph的迁移指导 create_react_agent 到LangChain的 create_agent (v1.0.2)*
  5. 基于理由作出回应 在Context7文档中——无虚构内容

实时示例

查看 LangSmith 追踪 以完全执行,或审查 详细输出

一目了然

方面详情
脚本integration_test_mcp_json.py (112行)
服务器时间,顺序思维,上下文7(自动生成)
查询 “从LangGraph迁移 create_react_agent 到LangChain create_agent
结果基于文档的迁移指南,附带源代码出处
追踪LangSmith

关键要点: 这个代理不仅仅 *理由*它 从真理中学习Context7直接从LangChain的官方文档中展示代码片段、API参考和迁移指南。

实际行动中的移民

该脚本展示了从LangGraph迁移到LangChain v1的过程:

# Old (LangGraph)
from langgraph.prebuilt import create_react_agent
agent = create_react_agent(model, tools, prompt=...)

# New (LangChain v1.0.2+)
from langchain.agents import create_agent
agent = create_agent(llm, tools=tools, prompt=...)

这不是一个玩具般的例子——它是 已准备好投入生产 使用(或“结合”)代理进行编排 真实的文件记录接地(或:实际的文件接地处理)

______________________________________________________________________

⚙️ 快速入门

先决条件

# Install dependencies
uv venv --python 3.13
source .venv/bin/activate
uv pip install -e .

# Set environment variables
cp .env.example .env
# Add your OPENAI_API_KEY, LANGSMITH_API_KEY (optional), CALCOM_API_KEY (optional)

选项1:运行集成测试(推荐)

观察一切运作情况的最简单方法:

python clients/integration_test_mcp_json.py

这会自动启动所有必需的MCP服务器,发现工具,并展示基于Context7的推理。

选项2:手动服务器设置

对于勘探和开发,手动启动服务器:

第一航站楼 - 天气服务器(端口8000):

python servers/weather_server.py

2号航站楼 - LangChain 数学工具服务器(端口 8001):

python servers/wrap_langchain_tools_server.py --port 8001

3号终端 - 客户端(Jupyter Notebook):

jupyter notebook clients/langchain_mcp_adapter_client.ipynb

______________________________________________________________________

🔧 服务器配置

自定义HTTP服务器

weather_server.py

使用FastMCP(HTTP传输)的简单天气MCP服务器。

端口: 8000(默认)| 工具: get_weather (模拟数据)

# Default
python servers/weather_server.py

# Custom port
python servers/weather_server.py --port 8080

wrap_langchain_tools_server.py

将LangChain工具转换为MCP格式。

端口: 8001(默认)| 工具: addmultiply | 模式: LangChain → MCP 适配器

# Default
python servers/wrap_langchain_tools_server.py

# Custom port
python servers/wrap_langchain_tools_server.py --port 8002

外部MCP服务器

配置在 .mcp.json

  • mcp-server-time 翻译为中文是“MCP服务器时间” — 时区操作(uvx)
  • 顺序思维 — 反思性推理(npx)
  • 上下文7 — 文档检索(npx)
  • ai-docs-server 翻译为中文是“AI文档服务器” — 轻量级文档获取(uvx)

______________________________________________________________________

📊 显示实用程序

这个(或“它”) display_utils.py 该模块提供灵活的响应格式化功能。

display_agent_response()

显示代理执行轨迹:

from display_utils import display_agent_response

# Full trace with token usage
display_agent_response(response, show_full_trace=True, show_token_usage=True)

# Minimal (final answer only)
display_agent_response(response, show_full_trace=False)

get_final_answer()

通过程序提取答案:

from display_utils import get_final_answer

answer = get_final_answer(response)
if "migration" in answer.lower():
    proceed_with_next_step()

print_tools_summary()

列出已发现的工具:

from display_utils import print_tools_summary

tools = await client.get_tools()
print_tools_summary(tools)

输出:

======================================================================
AVAILABLE TOOLS (5 total)
======================================================================

01. get_current_time
    └─ Get current time in a specific timezone
02. sequential_thinking
    └─ Dynamic problem-solving through reflective reasoning
03. resolve-library-id
    └─ Resolve package name to Context7 library ID
04. get-library-docs
    └─ Fetch documentation for a library
...
======================================================================

______________________________________________________________________

💻 示例

示例1:使用工具链进行数学运算

response = await agent.ainvoke({"messages": "what is (15 + 27) * 3?"})
display_agent_response(response)

输出:

01. HumanMessage: what is (15 + 27) * 3?
02. AIMessage → 🔧 tool_call(s): add
03. ToolMessage [add]: ✓ 42
04. AIMessage → 🔧 tool_call(s): multiply
05. ToolMessage [multiply]: ✓ 126
06. AIMessage: (15 + 27) * 3 = 126.

示例2:基于文档的回应

response = await agent.ainvoke({
    "messages": "How do I create an agent in LangChain 1.0.2? Use Context7 to ground your response."
})
display_agent_response(response, show_full_trace=False)

输出:

💡 Final Answer: In LangChain 1.0.2, use `from langchain.agents import create_agent`
and pass your model instance and tools. Example:

from langchain.agents import create_agent
from langchain_openai import ChatOpenAI

llm = ChatOpenAI(model="gpt-4o")
agent = create_agent(llm, tools=tools)

This replaces the older LangGraph `create_react_agent` pattern.
[Source: https://docs.langchain.com/oss/python/langchain/agents]

示例3:程序化答案提取

response = await agent.ainvoke({"messages": "multiply 7 and 9"})
answer = get_final_answer(response)

if "63" in answer:
    print("Correct!")

______________________________________________________________________

🔭 接下来是什么

这个项目是我们正在进行的探索中的一部分,旨在 基于协议的智能体架构下一个前沿领域不仅仅是推理——它还是 上下文交换 在代理之间。

1. 代理到代理(A2A)通信

  • 调查新兴模式以(用于/针对) 多智能体协作
  • 探索超越单一智能体推理的协议(共享内存、协调、持久状态)
  • 构建协作架构,使代理保持共享上下文

2. 超越推理循环

  • 从无状态推理/行动循环转变为 持久上下文架构
  • 整合 记忆系统 对于长期任务
  • 将上下文视为首要的架构基本元素进行探索

3. 基于协议的互操作性

  • 继续探索MCP作为 通用接口 用于人工智能能力
  • 调查与其他协议的集成(OpenAI的实时API、Anthropic的计算机使用)
  • 在能动生态系统之间搭建桥梁
🔍(放大镜图标,常用于表示搜索、查看细节等动作) 深入探讨: 如需进行全面的架构分析,请参阅 架构概述更新后的架构文档.

目标: 从“推理循环”转向 上下文架构—系统中,人工智能(AI) *知道* 和它(的方式/方法)一样重要 *认为*。

______________________________________________________________________

🐞 故障排除

端口已被占用

错误:

ERROR: [Errno 98] error while attempting to bind on address ('127.0.0.1', 8000): address already in use

解决方案:

# Check process using port
lsof -i :8000

# Kill process
kill -9 

# Or use different port
python servers/weather_server.py --port 8080

连接关闭错误

错误:

mcp.shared.exceptions.McpError: Connection closed

解决方案:

  • 在启动客户端之前,请确保服务器正在运行
  • 验证端口号是否正确
  • 检查服务器日志以查找启动错误

运行时错误:已在运行 asyncio

错误:

RuntimeError: Already running asyncio in this thread

解决方案:

  • 别跑 mcp.run() 在Jupyter笔记本中
  • MCP服务器必须在单独的终端/进程中运行
  • 在笔记本中使用客户端代码连接到正在运行的服务器

______________________________________________________________________

🏛️ 建筑细节

四层系统

┌─────────────────────────────────────────────────────────────┐
│  Client Layer (Blue)                                        │
│  - Integration Test Client                                  │
│  - LangChain Agent (ReAct pattern)                          │
│  - MultiServerMCPClient (tool aggregation)                  │
│  - Display Utils                                            │
└─────────────────────┬───────────────────────────────────────┘
                      │
                      │ MCP Protocol (Auto-Discovery)
                      │
┌─────────────────────┴───────────────────────────────────────┐
│  Custom MCP Servers (Green)                                 │
│  - Weather Server (Port 8000, HTTP)                         │
│  - LangChain Tools Server (Port 8001, HTTP)                 │
│  - Math Server (stdio)                                      │
└─────────────────────┬───────────────────────────────────────┘
                      │
┌─────────────────────┴───────────────────────────────────────┐
│  External MCP Services (Orange)                             │
│  - mcp-server-time (stdio, via uvx)                         │
│  - sequential-thinking (stdio, via npx)                     │
│  - Context7 (stdio, via npx)                                │
│  - ai-docs-server (stdio, via uvx)                          │
└─────────────────────┬───────────────────────────────────────┘
                      │
┌─────────────────────┴───────────────────────────────────────┐
│  External APIs (Red)                                        │
│  - OpenAI API (GPT-4.1)                                     │
│  - Documentation Sources (llms.txt, official docs)          │
└─────────────────────────────────────────────────────────────┘

支持的传输协议

  • stdio(在中文中通常直接使用原英文缩写,也可理解为“标准输入输出”) — 基于子进程,对于本地工具来说速度最快
  • HTTP(可流式传输的HTTP) — HTTP POST + 服务器发送事件
  • 上海证券交易所 — 仅支持服务器发送事件(Server-Sent Events)
  • WebSocket — 双向流(可选)

______________________________________________________________________

📁 文件

文件用途
clients/integration_test_mcp_json.py主要演示 — 112乐线配器示例
clients/display_utils.py响应格式化工具
clients/langchain_mcp_adapter_client.ipynb交互式示例
servers/weather_server.py示例 HTTP MCP 服务器
servers/wrap_langchain_tools_server.pyLangChain → MCP 适配器
.mcp.json外部MCP服务器配置

______________________________________________________________________

📚 参考文献

MCP协议

LangChain 集成

Context7 文档服务器

  • 上下文7 MCP服务器
  • 支持40多个库,包括LangChain、LangGraph、LangSmith、OpenAI、Next.js、Redis、Hugging Face

可观测性

额外资源

______________________________________________________________________

项目: langchain-mcp-multiserver-demo 目的: 第8期人工智能工程教育演示 python 大于等于3.13 许可证: 麻省理工学院(MIT)

目录标签

目录标签

LangChainPython文档检索本地部署MCP协议代理框架上下文架构

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

token

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiotoken部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP