MCP服务器目的验证器

一个验证系统,用于验证MCP服务器的实际实现是否与其README文件中记录的目的相匹配。

  • by kickbell
  • Svelte
  • 本地部署
  • 更新于
在 GitHub 查看 kickbell/mcp-server-purpose-verifier

使用说明

MCP服务器用途验证器

一个全面的验证系统,用于验证MCP(模型上下文协议)服务器的实际实现是否与README文件中记录的目的相匹配。

📋 概述

本项目分析包含MCP服务器的GitHub存储库,以验证以下内容之间的一致性:

  • 记录目的:README.md声称服务器做什么
  • 实际实现:代码实际实现了什么

🎯 目的

MCP服务器通常在其文档中声明特定的功能,但实际实现可能有所不同。该工具通过以下方式提供自动验证:

  1. 分析存储库的README.md以提取所述目的
  2. 嵌入并索引实际源代码
  3. 使用LLM驱动的分析来验证一致性
  4. 提供详细的验证报告

🏗️ 建筑

┌─────────────┐
│  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

🔄 工作流程

  1. 输入:用户通过web UI提交GitHub存储库URL
  2. 克隆和解析:后端克隆存储库并提取README目的
  3. 代码分段:LangChain将代码拆分为语义块
  4. 嵌入:代码块使用句子转换器嵌入
  5. 存储:在Qdrant中嵌入元数据
  6. 查询:用户查询与相关代码块相结合
  7. 分析:LLM分析目的和实施之间的一致性
  8. 报告:详细的验证结果返回UI

🚦 入门指南

先决条件

  • Node.js 18+(用于前端)
  • Python 3.11+(用于后端)
  • Docker和Docker Compose(适用于Qdrant)
  • Anthropic API密钥(用于Claude)

安装

  1. 克隆存储库

    git clone https://github.com/yourusername/mcp-server-purpose-verifier.git
    cd mcp-server-purpose-verifier
    
  2. 设置环境变量

    cp .env.example .env
    # Edit .env with your API keys
    
  3. 启动Qdrant

    docker-compose up -d
    
  4. 设置后端

    cd backend
    python -m venv venv
    source venv/bin/activate  # On Windows: venv\Scripts\activate
    pip install -r requirements.txt
    uvicorn main:app --reload
    
  5. 设置前端

    cd frontend
    npm install
    npm run dev
    
  6. 访问应用程序

    • 前端:http://localhost:5173
    • 后端API:http://localhost:8000
    • API文件:http://localhost:8000/docs

📝 用法示例

  1. 打开web界面
  2. 输入GitHub存储库URL(例如。, https://github.com/anthropics/context7)
  3. 问:“此MCP服务器实现是否与其记录的目的相匹配?”
  4. 接收详细分析,包括:
    • 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之前阅读我们的投稿指南。

  1. 分叉存储库
  2. 创建功能分支(git checkout -b feature/amazing-feature)
  3. 提交您的更改(git commit -m 'Add amazing feature')
  4. 推到分支(git push origin feature/amazing-feature)
  5. 打开拉取请求

📄 许可证

此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。

🙏 致谢

  • Claude API的无烟煤
  • LangChain用于LLM编排
  • Qdrant用于矢量存储
  • Svelte团队负责反应式框架

📮 联系


内置❤️ 对于MCP社区