关于 🧠 Model Context Protocol (MCP)
这是一个使用 LangChain MCP Adapters 和 Ollama 的开源 Python MCP 客户端与服务端示例,包含数学和模拟天气服务,以及单服务端和多服务端客户端示例。
主要功能
- 01演示数学和天气 MCP 服务
- 02让客户端连接单个服务
- 03发现多个服务中的工具
- 04结合 Ollama 使用 LangChain MCP Adapters
适用场景
- 01学习基础 MCP 客户端与服务端交互
- 02试用数学工具客户端
- 03探索跨两个服务的工具发现
MCP 相关
包含提供简单数学运算和模拟天气响应的 MCP 服务,以及连接单个或两个服务的客户端示例。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
🧠 Model Context Protocol (MCP)
一种开源标准,可将大语言模型(LLM)与外部世界(数据库、API、服务等)无缝连接。
🌐 什么是 MCP?
Model Context Protocol (MCP) 是一种全新的开源协议,旨在通过让 LLM 与外部工具、服务和数据源交互,增强 LLM 的能力。MCP 充当转换层,使模型能够以标准化、可扩展且可扩容的方式与 API、数据库及其他服务交互。
🚨 问题
LLM 本身无法执行现实世界中的任务,只能生成文本。要构建强大的 AI 助手,我们需要将它们与以下工具集成:
- 邮件服务
- 搜索 API
- 数据库
- 自定义脚本
但集成多个工具并不容易。API 差异很大,维护起来令人头疼,扩展也很困难。
✅ MCP 解决方案
MCP 提供了一个标准化接口,抽象掉工具集成中的复杂性。正如 REST 标准化了 Web 服务,MCP 也标准化了 LLM 与工具的交互方式,让集成更简洁、更轻松,也更适应未来发展。
🔮 为什么选择 MCP?
MCP 帮助你基于 LLM 构建 Agent 和复杂工作流。LLM 经常需要与数据和工具集成,而 MCP 提供:
- 不断扩充的预构建集成列表,LLM 可直接接入使用
- 在不同 LLM 提供商和供应商之间切换的灵活性
- 在你的基础设施内保护数据的最佳实践
🧩 架构与组件
| 组件 | 描述 |
|---|---|
| MCP 客户端 | 面向 LLM 的组件,可部署在聊天应用、开发工具或助手中。 |
| MCP 服务 | 由服务提供商构建。将服务功能(例如数据库查询、API 调用)转换为 LLM 可理解的格式。 |
| MCP 协议 | 双向传输层,可在客户端与服务之间实现安全、结构化的通信。 |
| 服务 | 正在访问的实际工具或外部资源(例如 Weather API、SQL DB)。 |
🔁 工作原理(流程示例)
- 用户通过 MCP 主机(例如聊天应用)发送查询。
- MCP 客户端识别出需要使用外部工具。
- MCP 服务公布可用工具。
- LLM 决定要使用哪些工具,并向客户端发出指示。
- 客户端向相关 MCP 服务发送请求。
- 服务连接到外部服务并检索数据。
- 响应返回给 LLM,以生成最终输出。
✨ 主要优势
- ✅ 简化工具集成
- 🚀 扩展 LLM 能力
- 🛠️ 可扩展、易维护的架构
- 🤝 标准化通信层
- 💡 推动 AI 应用开发者创新
🛠️ 使用的技术栈
- Python - Python 为 CodeBuddy 提供核心支持,可稳健地集成各种库和框架。
- Langchain - LangChain 是一个框架,旨在简化使用大语言模型构建应用的过程。
- Ollama - 它提供简单的 API,用于创建、运行和管理模型,还提供一个预构建模型库,可轻松用于各种应用。
- langchain-mcp-adapters - 这个库提供轻量级封装,使 Anthropic Model Context Protocol (MCP) 工具兼容 LangChain 和 LangGraph。
🧩 文件概览
| 文件 | 描述 |
|---|---|
| client.py | 一个基础的 MCP 客户端,仅与单个 mathserver 交互。 |
| mathserver.py | 一个 MCP 服务,提供简单的数学运算(例如加法、乘法)。 |
| weatherserver.py | 一个模拟天气数据响应的 MCP 服务。 |
| multiclient.py | 一个多客户端设置,其中 MCP 客户端可以同时连接数学服务和天气服务。 |
🔄 工作原理
-
client.py 脚本模拟 AI 助手(或大模型),仅与 Math MCP Server 交互。
-
multiclient.py 脚本演示了一个更高级的用例:MCP 客户端从多个服务(数学 + 天气)发现并使用工具。
-
mathserver.py 和 weatherserver.py 提供可供 MCP 客户端使用的功能。
🚀 运行演示
-
启动服务:
python mathserver.py python weatherserver.py -
运行单客户端演示:
python client.py -
Run Multi-Client Demo:
python multiclient.py
🚀 参与其中
欢迎贡献!如果你有任何建议,或希望改进此项目,请 Fork 此代码库并提交 Pull Request。
有兴趣为 MCP 做贡献?敬请关注:
- 贡献指南
- 路线图
- Issue 模板
欢迎给代码库点个 ⭐️ 并参与讨论!
许可证
本项目采用 MIT 许可证。详情请参阅 LICENSE 文件。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。