LangChain Learning Project
基于 LangChain 1.0.3 的 AI Agent 学习项目,展示如何使用 MCP (Model Context Protocol) 构建智能代理
项目概述
本项目是一个 LangChain 学习与实践项目,演示了如何构建具有外部工具调用能力的 AI Agent。通过集成 MCP 服务器,实现了对外部服务的调用,如天气查询、数学运算、学术搜索等功能。
技术栈
| 技术 |
版本 |
用途 |
| LangChain |
1.0.3 |
核心框架 |
| LangChain-Community |
0.4.1 |
社区组件 |
| LangChain-MCP-Adapters |
≥0.1.11 |
MCP 客户端 |
| FastMCP |
≥2.13.0 |
MCP 协议实现 |
| LangChain-Ollama |
≥1.0.0 |
Ollama 本地模型 |
| LangGraph |
- |
Agent 记忆组件 |
项目结构
langchain-learning/
├── agent/
│ ├── langchain_agent.py # MCP Agent (Ollama + weather + math)
│ └── langchain_agent_tool_mcp.py # 扩展 Agent (+ arxiv + wikipedia + 自定义工具)
├── mcp/
│ ├── math_server.py # 数学运算 MCP 服务器 (stdio)
│ └── get_weather_server.py # 天气查询 MCP 服务器 (HTTP)
├── ollama/
│ └── ollama_demo.py # Ollama 本地模型调用示例
├── main.py # 程序入口
├── pyproject.toml # 项目配置
└── .env # 环境变量 (API Keys)
功能特性
MCP 服务器
| 服务器 |
功能 |
传输方式 |
端口 |
math_server |
加法、乘法运算 |
stdio |
- |
weather_server |
城市天气查询 |
HTTP/SSE |
9000 |
支持的 LLM
| 模型 |
类型 |
调用方式 |
gemma4:e2b / gemma4:26b |
Ollama 本地 |
langchain_ollama |
Qwen/Qwen3-14B |
SiliconFlow 云端 |
OpenAI 兼容接口 |
工具集成
| 来源 |
工具 |
| MCP Servers |
get_weather, add, multiply |
| 内置 (load_tools) |
arxiv, wikipedia |
| 自定义 |
greet(name) |
快速开始
1. 安装依赖
uv sync
2. 配置环境变量
编辑 .env 文件:
# Ollama (本地)
OLLAMA_API_KEY=ollama
OLLAMA_BASE_URL=http://localhost:11434/v1
# SiliconFlow (可选云端)
SILICONFLOW_API_KEY=your_siliconflow_key
SILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1
# 天气API
WEATHER_API_KEY=your_weatherapi_key
3. 启动 MCP 服务器
# 终端 1: 启动天气服务器 (HTTP)
python mcp/get_weather_server.py
# 终端 2: 启动数学服务器 (stdio)
python mcp/math_server.py
4. 运行 Agent
# Agent 1: Ollama + MCP (weather + math)
python agent/langchain_agent.py
# Agent 2: Ollama + MCP + 内置工具 + 自定义工具
python agent/langchain_agent_tool_mcp.py
5. Ollama 直接调用示例
python ollama/ollama_demo.py
使用示例
请输入你的问题(输入exit则退出) > 北京天气怎么样
计算过程:
- 调用工具: get_weather({'city': '北京'})
- get_weather 的结果是: {"location":{"name":"北京",...},"current":{"temp_c":22.0,...}}
最终答案: 北京的天气晴朗,温度约22°C。
Agent 对比
| Agent |
模型 |
MCP |
内置工具 |
自定义工具 |
langchain_agent.py |
Ollama |
✅ weather, math |
❌ |
❌ |
langchain_agent_tool_mcp.py |
Ollama |
✅ weather, math |
✅ arxiv, wikipedia |
✅ greet |
核心代码说明
MCP 客户端配置
client = MultiServerMCPClient({
"weather": {
"url": "http://localhost:9000/mcp",
"transport": "streamable_http",
},
"math": {
"command": sys.executable, # 使用当前解释器
"args": ["./mcp/math_server.py"],
"transport": "stdio"
}
})
Agent 创建
from langchain.agents import create_agent
from langgraph.checkpoint.memory import InMemorySaver
agent = create_agent(
model=llm,
tools=tools,
checkpointer=InMemorySaver() # 会话记忆
)
依赖列表
核心依赖见 pyproject.toml:
langchain >= 1.0.3
langchain-community >= 0.4.1
langchain-mcp-adapters >= 0.1.11
langchain-ollama >= 1.0.0
fastmcp >= 2.13.0.2
wikipedia >= 1.4.0
arxiv >= 2.2.0
学习资源
License
MIT License