MCPLEARNING
MCP + LangChain 演示
一个面向初学者的项目,演示如何构建 MCP(模型上下文协议) 服务器,并使用 LangChain 和 LangGraph 将其连接到 LLM 代理。
什么是 MCP?
MCP(模型上下文协议) 是一种开放协议,允许你以标准化的方式向 LLM 暴露自定义工具(函数)。可以将其视为 AI 模型的通用插件系统。
关键概念:
术语 | 定义 |
MCP 服务器 | 通过传输层(stdio 或 HTTP)暴露工具(函数)的进程。LLM 可以调用这些工具。 |
MCP 客户端 | 连接到一个或多个 MCP 服务器、发现其工具并将其转发给 LLM 的进程。 |
工具 | 使用 |
传输层 | 客户端和服务器之间的通信方式。 |
FastMCP | 来自 |
Related MCP server: Model Context Protocol Multi-Agent Server
项目结构
MCPLEARNING/
├── mathserver.py # MCP Server 1 - Math tools (stdio transport)
├── weather.py # MCP Server 2 - Weather tool (HTTP transport)
├── client.py # LangChain agent that connects to both servers
├── .env # API keys (NOT pushed to GitHub)
├── .gitignore
├── requirements.txt
└── pyproject.toml工作原理(逐步说明)
第 1 步:MCP 服务器 — mathserver.py
此文件创建一个名为 "Math" 的 MCP 服务器,暴露两个工具:
add(a, b)— 返回两个整数的和。multiply(a, b)— 返回两个整数的乘积。
它运行在 stdio 传输层上,意味着客户端将其作为子进程启动,并通过 stdin/stdout 进行通信。无需端口。
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("Math")
@mcp.tool()
def add(a: int, b: int) -> int:
"""Addition of two numbers"""
return a + b
@mcp.tool()
def multiply(a: int, b: int) -> int:
"""Multiplication of two numbers"""
return a * b
if __name__ == "__main__":
mcp.run(transport="stdio")第 2 步:MCP 服务器 — weather.py
此文件创建一个名为 "Weather" 的 MCP 服务器,暴露一个工具:
get_weather(location)— 返回指定位置的天气信息。
它运行在 streamable-http 传输层上,意味着它在 http://127.0.0.1:8000/mcp 上启动一个 Web 服务器。客户端通过 HTTP 连接到它。
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("Weather")
@mcp.tool()
async def get_weather(location: str) -> str:
"""Get the weather"""
return "It's always raining in California"
if __name__ == "__main__":
mcp.run(transport="streamable-http")第 3 步:客户端代理 — client.py
这是项目的大脑。它:
连接到两个 MCP 服务器,使用
MultiServerMCPClient。发现两个服务器的所有工具(
add、multiply、get_weather)。创建一个 Groq LLM(托管的开源模型)并将工具绑定到它。
构建一个 LangGraph 代理 — 一个状态机,其中:
LLM 决定是调用工具还是直接响应。
如果调用了工具,结果会反馈给 LLM 以给出最终答案。
测试两个查询:
"What is 3 + 5?" → 使用
add工具。"What is the weather in California?" → 使用
get_weather工具。
先决条件
Python 3.13+
uv 包管理器(推荐)或 pip
Groq API 密钥 — 在 console.groq.com 免费获取
设置
1. 克隆仓库
git clone https://github.com/<YOUR_USERNAME>/MCPLEARNING.git
cd MCPLEARNING2. 创建并激活虚拟环境
# Using uv (recommended)
uv venv
uv pip install -r requirements.txt
# Or using pip
python -m venv .venv
.venv\Scripts\activate # Windows
source .venv/bin/activate # Mac/Linux
pip install -r requirements.txt3. 设置你的 API 密钥
在项目根目录创建一个 .env 文件:
GROQ_API_KEY=your_groq_api_key_here重要: 切勿提交你的
.env文件。它已通过.gitignore排除。
运行项目
你需要打开 两个终端:
终端 1 — 启动天气 MCP 服务器
python weather.py你应该看到:
INFO: Uvicorn running on http://127.0.0.1:8000注意: 只有
weather.py需要手动启动。mathserver.py由客户端自动生成(stdio 传输层)。
终端 2 — 运行客户端
python client.py预期输出
Available MCP tools:
- add
- multiply
- get_weather
==============================
Testing Math MCP
==============================
Math Response: 3 + 5 = 8.
==============================
Testing Weather MCP
==============================
Weather Response: It's always raining in California.如何创建你自己的 MCP 服务器
安装 MCP 库:
pip install mcp创建一个新的 Python 文件(例如
myserver.py):
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("MyServer")
@mcp.tool()
def my_tool(param: str) -> str:
"""Description of what this tool does."""
return f"Result: {param}"
if __name__ == "__main__":
mcp.run(transport="stdio") # For stdio transport
# mcp.run(transport="streamable-http") # For HTTP transport在客户端中连接它,通过将其添加到
MultiServerMCPClient配置:
client = MultiServerMCPClient({
"myserver": {
"command": "python",
"args": ["myserver.py"],
"transport": "stdio",
},
})传输层比较
传输层 | 工作原理 | 使用场景 |
stdio | 客户端将服务器作为子进程启动。通过 stdin/stdout 通信。 | 本地工具,简单设置,无需网络。 |
streamable-http | 服务器作为 Web 服务器运行。客户端通过 HTTP 连接。 | 远程工具,多个客户端,跨机器访问。 |
使用的关键库
库 | 用途 |
| 使用 |
| 在 MCP 服务器和 LangChain 工具之间建立桥梁。 |
| 用于 Groq 托管 LLM 的 LangChain 集成。 |
| 将代理工作流构建为图(代理 ↔ 工具循环)。 |
| 从 |
需要注意的重要事项
天气服务器必须在客户端之前运行 — 由于它使用 HTTP 传输层,服务器进程必须首先启动。数学服务器(stdio)由客户端自动生成。
需要 Groq API 密钥 — 没有它,LLM 调用将失败。在 console.groq.com 获取免费密钥。
切勿提交
.env— 在推送代码之前,始终将.env添加到.gitignore。端口冲突 — 天气服务器默认在端口 8000 上运行。如果另一个进程使用该端口,服务器将无法启动。
Windows 编码问题 — 在 Windows 上,控制台可能不支持 LLM 返回的 UTF-8 字符。
client.py通过sys.stdout.reconfigure(encoding="utf-8")处理此问题。模型可用性 — Groq 模型名称(
openai/gpt-oss-120b)必须在 Groq 平台上有效且可用。查看 Groq 的模型列表 了解当前选项。
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Flicense-qualityDmaintenanceA Model Context Protocol (MCP) server that demonstrates mathematical capabilities through a LangChain integration, allowing clients to perform math operations via the MCP protocol.
- Flicense-qualityDmaintenanceDemonstrates custom MCP servers for math and weather operations, enabling multi-agent orchestration using LangChain, Groq, and MCP adapters for both local and remote tool integration.1
- Flicense-qualityCmaintenanceA demonstration MCP server that provides math (add/multiply) and weather tools, connecting via stdio and streamable HTTP, and integrates with LangChain and LangGraph for agentic workflows.
- Flicense-qualityDmaintenanceA collection of MCP servers demonstrating math operations, weather data, and LangGraph workflows.1
Related MCP Connectors
MCP server for AI dialogue using various LLM models via AceDataCloud
MCP server exposing the Backtest360 engine API as tools for AI agents.
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Reyansh1996/MCPLEARNING'
If you have feedback or need assistance with the MCP directory API, please join our Discord server