MCP服务器用途验证器
一个全面的验证系统,用于验证MCP(模型上下文协议)服务器的实际实现是否与README文件中记录的目的相匹配。
📋 概述
本项目分析包含MCP服务器的GitHub存储库,以验证以下内容之间的一致性:
- 记录目的:README.md声称服务器做什么
- 实际实现:代码实际实现了什么
🎯 目的
MCP服务器通常在其文档中声明特定的功能,但实际实现可能有所不同。该工具通过以下方式提供自动验证:
- 分析存储库的README.md以提取所述目的
- 嵌入并索引实际源代码
- 使用LLM驱动的分析来验证一致性
- 提供详细的验证报告
🏗️ 建筑
┌─────────────┐
│ Web UI │ Svelte-based chat interface
│ (Svelte) │
└──────┬──────┘
│
▼
┌─────────────┐
│ Backend │ FastAPI REST API
│ (FastAPI) │
└──────┬──────┘
│
├──────────────┐
▼ ▼
┌─────────────┐ ┌──────────────┐
│ LangChain │ │ Qdrant │
│ Pipeline │ │ Vector DB │
└──────┬──────┘ └──────────────┘
│
▼
┌─────────────┐
│ LLM Model │ Claude (configurable)
│ (Claude) │
└─────────────┘🚀 特性
- GitHub存储库分析:输入任何GitHub存储库URL进行验证
- 智能代码解析:LangChain驱动的代码分段和嵌入
- 矢量存储器:使用Qdrant矢量数据库进行高效代码检索
- LLM验证:基于克劳德的目的与实施语义分析
- 聊天界面:用户友好的对话式用户界面,用于查询和结果
- 模块化LLM支持:易于在不同LLM提供商之间交换
🛠️ 技术栈
前端
- 斯维尔特:响应式UI框架
- TypeScript:类型安全开发
- 维特:快速构建工具
后端
- 快速API:高性能Python web框架
- LangChain:LLM编排和代码处理
- 派丹蒂克:数据验证
数据库
- Qdrant:用于嵌入的高性能矢量数据库
AI/ML
- 克劳德:初级LLM模型(Anthropic)
- 句子转换器:代码嵌入生成
- LangChain:文本拆分器和文档加载器
📦 项目结构
mcp-server-purpose-verifier/
├── frontend/ # Svelte application
│ ├── src/
│ │ ├── components/ # UI components
│ │ ├── lib/ # Utilities and API clients
│ │ ├── routes/ # SvelteKit routes
│ │ └── App.svelte # Main app component
│ ├── package.json
│ └── vite.config.ts
│
├── backend/ # FastAPI application
│ ├── app/
│ │ ├── api/ # API endpoints
│ │ ├── core/ # Configuration and settings
│ │ ├── services/ # Business logic
│ │ │ ├── github.py # GitHub integration
│ │ │ ├── embedder.py # Code embedding service
│ │ │ ├── verifier.py # Verification logic
│ │ │ └── llm.py # LLM provider abstraction
│ │ └── models/ # Pydantic models
│ ├── requirements.txt
│ └── main.py
│
├── docker-compose.yml # Qdrant and services
├── .env.example # Environment variables template
└── README.md # This file🔄 工作流程
- 输入:用户通过web UI提交GitHub存储库URL
- 克隆和解析:后端克隆存储库并提取README目的
- 代码分段:LangChain将代码拆分为语义块
- 嵌入:代码块使用句子转换器嵌入
- 存储:在Qdrant中嵌入元数据
- 查询:用户查询与相关代码块相结合
- 分析:LLM分析目的和实施之间的一致性
- 报告:详细的验证结果返回UI
🚦 入门指南
先决条件
- Node.js 18+(用于前端)
- Python 3.11+(用于后端)
- Docker和Docker Compose(适用于Qdrant)
- Anthropic API密钥(用于Claude)
安装
- 克隆存储库
git clone https://github.com/yourusername/mcp-server-purpose-verifier.git
cd mcp-server-purpose-verifier- 设置环境变量
cp .env.example .env
# Edit .env with your API keys- 启动Qdrant
docker-compose up -d- 设置后端
cd backend
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -r requirements.txt
uvicorn main:app --reload- 设置前端
cd frontend
npm install
npm run dev- 访问应用程序
- 前端:http://localhost:5173 - 后端API:http://localhost:8000 - API文件:http://localhost:8000/docs
📝 用法示例
- 打开web界面
- 输入GitHub存储库URL(例如。,
https://github.com/anthropics/context7) - 问:“此MCP服务器实现是否与其记录的目的相匹配?”
- 接收详细分析,包括:
- README中声明的目的 - 主要实施结果 - 一致性得分 - 具体差异(如有)
🔧 配置
LLM提供程序(后端/app/core/config.py)
# Default: Claude
LLM_PROVIDER = "anthropic"
ANTHROPIC_API_KEY = "your-key"
# Alternative: OpenAI
# LLM_PROVIDER = "openai"
# OPENAI_API_KEY = "your-key"嵌入模型
EMBEDDING_MODEL = "sentence-transformers/all-MiniLM-L6-v2"矢量数据库设置
QDRANT_HOST = "localhost"
QDRANT_PORT = 6333
COLLECTION_NAME = "mcp_code_chunks"🧪 测试
# Backend tests
cd backend
pytest
# Frontend tests
cd frontend
npm run test🤝 贡献
欢迎投稿!请在提交PR之前阅读我们的投稿指南。
- 分叉存储库
- 创建功能分支(
git checkout -b feature/amazing-feature) - 提交您的更改(
git commit -m 'Add amazing feature') - 推到分支(
git push origin feature/amazing-feature) - 打开拉取请求
📄 许可证
此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。
🙏 致谢
- Claude API的无烟煤
- LangChain用于LLM编排
- Qdrant用于矢量存储
- Svelte团队负责反应式框架
📮 联系
- GitHub问题: 报告错误或请求功能
- 电子邮件:your.email@example.com
______________________________________________________________________
内置❤️ 对于MCP社区
