研究MCP
此存储库探讨了如何 模型上下文协议(MCP) 可用于克服基于RAG的系统在使用时的常见局限性 结构化、真实世界的数据 例如事件、文章和使用指标。
👉 Medium文章讨论了这个项目及其背后的工程经验: 让人工智能查询工作:从RAG的局限性到实践中的MCP
目录
背景与动机
- 相关媒体文章
人工智能工程挑战:RAG、LangChain和现实世界数据的三步之旅
- 相关GitHub仓库
上述文章指出 洞察HubAI 挣扎于 _数据挖掘_–风格问题。 这突出了一个经典 “RAG与结构化数据” 问题:
- 语义搜索(RAG)非常擅长回答以下问题
_“X的政策是什么?”_
- 但它在以下问题上表现不佳
_“X发生了多少次?”_
原因很简单:RAG检索 文本块,不 数据行. 计数、聚合、排名和过滤需要对数据进行结构化访问,而不是语义相似性。
______________________________________________________________________
MCP如何改进InsightHubAI
MCP允许将结构化数据视为 可查询系统,而不是一堆被动的文本。
而不是AI:
- 根据检索到的片段猜测答案,或
- 试图从散文中推断数字,
它可以:
- 调用 显式工具
- 应用 确定性逻辑
- 并返回 准确、可验证的结果
简而言之,MCP将您的数据转化为 LLM的功能数据库接口.
______________________________________________________________________
数据准备
下载数据
以下数据集已下载为JSON文件:
- 事件
- 条款
- 博客文章
原始数据集存储在本地 /data 文件夹,即 不致力于GitHub.
要保留结构而不暴露真实数据,请执行以下操作:
- 一
/data_dummy包含文件夹 - 它包含具有代表性的文件 虚拟值 匹配原始模式
备注:为简单起见,这是一次性下载,而不是连续的摄入管道。
纯净数据
下载后,数据被清理和规范化,以确保:
- 一致的日期格式
- 结构化类别和标签
- 可靠的数字字段
(出席人数、浏览量、点赞、候补名单计数)
数据准备使用 Jupyter笔记本和Pandas.
📂 请参阅: /data_prepare 此文件夹记录了完整的数据准备过程,包括清理、规范化和模式验证。
已清理的数据集保存在本地 /data_prepared,它被排除在GitHub之外。 相反,a /data_prepared_dummy 文件夹中包含反映最终结构的已清理虚拟数据。
______________________________________________________________________
MCP工具开发
MCP工具的设计和开发是逐步记录的。
📂 请参阅: /mcp_tools_development 特别是,请查看 README.md 在该目录中:
- 问题表述
- 工具分类设计
- 聚合器、分析工具和主题查找工具背后的推理
本节重点介绍 如何看待MCP工具不仅仅是如何实施它们。
______________________________________________________________________
MCP服务器设置
📂 请参阅: /mcp_server
server.py--MCP服务器实现client.py--位于项目根目录中的简单客户端,用于测试和交互
此设置演示了如何以编程方式公开和调用开发的MCP工具。
______________________________________________________________________
______________________________________________________________________
技术细节
该项目采用本地优先的方法构建,优先考虑开源工具和数据隐私。
📦 先决条件
- Python 3.10或更高版本
- LLM运行时: 奥拉玛 (跑步
qwen2.5:7b)
🖥️ 使用的操作系统
- Linux Mint 21.2(使用的开发环境)
🤖 MCP堆栈概述
- 协议框架: FastMCP (基于Python)
- 智能层: 奥拉玛 运行Qwen 2.5(7B)模型。
- 数据处理: Pandas和Jupyter.
🐍 Python虚拟环境
最好的做法是使用虚拟环境来隔离项目依赖关系。
1.初始化环境
在项目根目录中创建虚拟环境:
python3 -m venv .venv2.激活环境
# macOS/Linux:
source .venv/bin/activate
# Windows (Command Prompt):
.venv\Scripts\activate.bat
# Windows (PowerShell):
.venv\Scripts\Activate.ps1您的命令提示符现在将显示环境名称,如下所示 (.venv) user@host:~/project$,表示它处于活动状态。
3.安装项目依赖项
这将安装端到端探索整个项目所需的所有依赖项。
# Update pip
python -m pip install --upgrade pip
# Install dependencies
pip install -r requirements.txt⚠️ 重要: 您是否已安装 整个存储库 或者只想使用 它的一部分,你 必须查阅专门的自述文件 了解每项服务如何 设置它 和 运行它 正确地:
- MCP服务器:
/mcp_server/README.md - 智威汤逊微服务:
/data_get/jwt_microservice/README.md - Jupyter笔记本:
/data_prepare/README.md
4.关机
完成工作后,只需运行:
deactivate命令提示符将返回其默认状态,环境名称(.venv)将消失。
🧹 Jupyter清理和Git卫生
此项目使用nbstripout使笔记本输出不受版本控制pre-commit钩子以确保所有文件的格式一致。
配置详细信息可以在中找到 .pre-commit-config.yaml.
要在提交之前检查所有文件并自动清理笔记本输出,请运行:
pre-commit run --all-files______________________________________________________________________
______________________________________________________________________
摘要
该存储库记录了对以下内容的实际探索:
- 为什么仅靠RAG不足以进行结构化分析
- MCP如何对真实世界的数据进行确定性推理
- 以及如何设计符合明确分析意图的MCP工具
其目的是:
- 学习项目,以及
- 为设计超越语义搜索的基于MCP的人工智能系统提供了参考。
