Seamlessly connect MCP tools to LangChain Agents.
Project description
🚀 Easy MCP — 让 MCP 工具像本地函数一样简单
一行代码集成任意 MCP 服务 自动管理子进程生命周期 · 零配置接入 LangChain / LangGraph Agent
✨ 特性
- ✅ 自动资源管理:无需手动启动/关闭 MCP 服务
- ✅ 零侵入集成:返回标准 LangChain Tool 列表
- ✅ 多服务支持:高德地图、天气、数据库 MCP 一次性接入
- ✅ 生产可用:异常安全、子进程隔离、异步非阻塞
🚀 快速开始
1. 安装
pip install easy-mcp
2. 🧪「5 行代码」调用高德地图 MCP
from src.easy_mcp import MCPToolLoader
import asyncio
async def main():
async with MCPToolLoader([{
"command": "npx",
"args": ["-y", "@amap/amap-maps-mcp-server"],
"env": {"AMAP_MAPS_API_KEY": "你的密钥"}
}]) as tools:
search = next(t for t in tools if t.name == "maps_text_search")
print(await search.ainvoke({"keywords": "西湖", "city": "杭州"}))
asyncio.run(main())
输出示例
{
"pois": [
{"name": "杭州西湖", "location": "120.1551,30.2741", ...}
]
}
🤖 构建 MCP-Powered Agent
from langgraph.graph import StateGraph
from src.easy_mcp import MCPToolLoader
async with MCPToolLoader([高德配置]) as tools:
graph = StateGraph(MessagesState)
graph.add_node("agent", create_agent_node(tools))
# ... 添加更多工具结点 ...
app = graph.compile()
await app.ainvoke({"messages": [("user", "西湖附近有什么酒店?")]})
👉 查看完整示例:examples/full_agent_demo.py
🔧 支持的 MCP 服务
| 服务 | 安装命令 | 必需环境变量 |
|---|---|---|
| 高德地图 | npx @amap/amap-maps-mcp-server |
AMAP_MAPS_API_KEY |
| 天气 API | npx @weather/mcp-server |
WEATHER_API_KEY |
| 自定义 MCP | 任意符合 MCP 协议的进程 | - |
📂 项目结构
easy-mcp/
├── examples/
│ ├── quickstart.py # 5 行上手示例
│ └── full_agent_demo.py # 完整 LangGraph Agent 示例
├── src/easy_mcp/
│ ├── __init__.py # 导出 MCPToolLoader
│ ├── bridge.py # MCP ↔ LangChain 适配器
│ └── client.py # MCP 客户端封装
└── README.md
❓ 常见问题(FAQ)
Q: 如何添加新的 MCP 服务?
只需在 MCPToolLoader([...]) 的列表中添加一个新的配置:
{
"command": "python",
"args": ["my_mcp_server.py"],
"env": {"API_KEY": "..."}
}
Q: 子进程会残留吗?
不会。 MCPToolLoader 使用 AsyncExitStack 和自动回收机制保证:
- MCP 子进程 100% 自动退出
- 不留下僵尸进程
- 异常情况下仍可安全清理
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
easy_mcp_langchain-0.1.2.tar.gz
(10.9 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file easy_mcp_langchain-0.1.2.tar.gz.
File metadata
- Download URL: easy_mcp_langchain-0.1.2.tar.gz
- Upload date:
- Size: 10.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d27a38be8e191b8afbbfbfdea59dc8a6b8dd0aeb44ebe73a83d3a9e561980210
|
|
| MD5 |
6661fc1d9682831b3a51b8ccf4319623
|
|
| BLAKE2b-256 |
3703128f0751c5d7dcf6da511574d52d180e17cbb89610c3df362596e42099cd
|
File details
Details for the file easy_mcp_langchain-0.1.2-py3-none-any.whl.
File metadata
- Download URL: easy_mcp_langchain-0.1.2-py3-none-any.whl
- Upload date:
- Size: 9.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cb74268c04d151837edf5cc96c6730bcdbb0ac5a6a66b46e8cced5504a5ce52d
|
|
| MD5 |
336ae3aa07d013d0b9c511d8853348a6
|
|
| BLAKE2b-256 |
59e7bf3f8b5dca803f1f4d381ec9851aa9e565676a0918260e7e5056bc7d50d3
|