🧠 MCP服务器——物理模型上下文协议
一个物理感知推理服务器,从书本中学习,将方程存储为内存,并通过预测和应用正确的公式来解决问题——就像LLM一样,但有逻辑。
______________________________________________________________________
📌 概述
这 MCP(模型上下文协议) 服务器是一个智能系统,旨在通过构建物理方程、定义和概念的结构化内存来解决物理问题。它使用Google Gemini语言模型从书籍(PDF或文本)中学习,以提取、消除重复和互连关键知识。
当给出一个物理问题时,MCP服务器:
- 从记忆中预测相关公式和概念。
- 使用符号方程求解引擎(SymPy)检索并应用它们。
- 通过MCP生成精确、可解释的解决方案。
与逐个生成文本令牌的传统LLM不同,此MCP服务器结合了:
- LLM支持的语义理解(Google Gemini),
- 结构化知识库(最初在内存中,以后可能基于向量检索),以及
- 逻辑驱动符号数学(SymPy)。
______________________________________________________________________
🚀 特性
- 📚 从书本中学习:摄取教科书(PDF/text)并提取有意义的公式、定义和概念。
- 🧠 知识库:结构化、可查询的物理知识存储。
- 🔍 LLM动力分析:使用谷歌双子座来解释输入问题并提取新知识。
- 🧮 符号方程求解:使用
SymPy用于精确解决问题(单位处理Pint可以集成)。 - 🤖 MCP接口:将功能作为MCP工具和资源公开。
- 🗣️ 可解释的解决方案:为已解决的问题提供逐步推理。
- *(未来)* 基于嵌入的检索:使用向量搜索将新问题与已知方程相匹配。
- *(未来)* 人在循环编辑:用于查看和编辑提取的知识的UI。
______________________________________________________________________
🏗️ 项目结构
MCP服务器-物理问题求解器/ │ ├── .venv/#虚拟环境(通常在.gitignore中) ├── server.py#主MCP服务器逻辑、工具和资源定义 ├── sample_physics.txt#摄入输入文件示例 ├── README.md#此文件 ├── .env#环境变量(例如GEMINI_API_KEY) ├── requirements.txt#Python依赖项(待创建/更新) └── .instructions.md#复制项目说明(如果使用)
______________________________________________________________________
⚙️ 入门指南
1.设置环境
如果你还没有,创建并激活一个Python虚拟环境:
# Navigate to your project directory
# cd "MCP Server - Physics Problem Solver"
python -m venv .venv
# On Windows
.venv\Scripts\activate
# On macOS/Linux
# source .venv/bin/activate2.安装依赖项
创建一个 requirements.txt 包含以下内容的文件:
python-dotenv
google-generativeai
fastmcp
sympy
# Add other dependencies like PyPDF2 if you implement PDF parsing然后安装它们:
pip install -r requirements.txt3.配置API密钥
创建一个 .env 文件在项目根目录中,并添加您的Google Gemini API密钥:
GEMINI_API_KEY="your-gemini-api-key-here"4.运行MCP服务器
执行 server.py 脚本:
python server.py服务器将通过标准输入/输出(stdio)启动并监听MCP消息。您可以使用MCP客户端(如MCP检查器)与它进行交互。
______________________________________________________________________
🧪 交互示例
工具: ingest_document
- 参数:
{
"document_content": "Newton's second law states that Force = mass * acceleration. F=m*a.",
"source_identifier": "Newton's Second Law Note"
}- 服务器将:
- 使用Gemini解析文本。 - 提取方程式 F=m*a 以及“牛顿第二定律”的概念。 - 将它们存储在内存知识库中。
工具: solve_physics_problem
- 参数:
{
"question": "An object of mass 2 kg accelerates at 3 m/s². What is the force?"
}- 服务器将:
- 使用Gemini分析问题并确定相关概念/方程(例如。, F=m*a). - (概念上)使用SymPy替换值并求解。 - 返回结构化响应,包括识别的概念、方程、步骤和最终答案(例如。, F = 6 N).
______________________________________________________________________
🛠️ Roadmap
- \[x\] 基本问题解析和LLM驱动分析。
- \[x\] 初始文档摄取(基于文本)。
- \[\]强大的PDF教科书摄取能力。
- \[\]使用SymPy增强符号求解,以解决更广泛的问题。
- \[\]基于嵌入的检索,可实现更可扩展的知识查找。
- \[\]开发概念依赖图。
- \[\]所有组件的单元和集成测试。
- \[ \] *(可选)* 用于知识库编辑的人机交互界面。
- \[ \] *(未来)* 精通多种语言的物理知识。
______________________________________________________________________
📄 许可证
MIT许可证
______________________________________________________________________
🤝 贡献
欢迎拉取请求!对于重大更改,请先打开一个问题来讨论您想要更改的内容。
______________________________________________________________________
✨ 鸣谢
- 由Reison Gjaci创建
- 由谷歌Gemini、SymPy、FastMCP和Python提供支持
