仓库分析MCP(或:MCP仓库分析)
一个利用repomix和LLM工作流程全面分析MCP(模型上下文协议)服务器和工具的系统。
概述
这个系统处理包含MCP服务器和工具的存储库,生成repomix输出,将其存储在SQLite数据库中,并利用大型语言模型(LLM)工作流来:
- 按功能对仓库进行分类
- 提取并列出可用工具
- 在功能类别内比较服务器
- 根据分析生成建议
特点/功能
- 🔄 翻译成中文可以是“🔄(循环/重复)”。不过,这个符号本身并没有直接对应的中文词汇,它通常用来表示循环、重复或刷新的动作。在中文语境中,我们可能会根据上下文用“循环”、“重复”或“刷新”等词汇来表达这个符号的含义。 自动化处理GitHub工作流:用于计划和按需处理存储库
- 📊 表格 Repomix 集成使用repomix生成全面的仓库输出结果
- 💾 代表软盘的符号,可翻译为“软盘”或根据上下文简化为“磁盘”等,具体含义需结合语境理解。 SQLite 数据库存储所有输出、分析结果和元数据
- 🤖 机器人 大语言模型(LLM)分析使用OpenAI API进行智能分类和比较
- 🏷️(标签) 分类自动将仓库分类到功能类别中
- 🔍 翻译为中文是:“🔍”(注:这个符号本身在中文中没有特定的含义,通常用于表示放大镜或搜索,因此直接保留原样或根据上下文解释为“放大镜/搜索”的意思。)不过,如果仅从符号本身来看,它在中文网络语境中常被用来表示“搜索”或“放大镜”的意思,类似于英文中的“🔍”。所以,也可以理解为“放大镜/搜索”。 工具提取识别并列出所有工具和功能
- 📈 表示“上升趋势”或“增长”的图表符号。 比较在同一类别内比较仓库
- 💡(这个符号本身在中文里没有直接对应的翻译,但通常表示“灯泡”或“灵感”的意思,可以理解为“灵光一闪”或“想到主意了”) 建议基于分析生成建议
安装
# Clone the repository
git clone https://github.com/odenizo/repository-analysis-mcp.git
cd repository-analysis-mcp
# Install dependencies
npm install
# Install repomix globally (optional but recommended)
npm install -g repomix
# Set up environment variables
cp .env.example .env
# Edit .env and add your OPENAI_API_KEY (optional)使用方法
命令行界面
# Show help
node src/index.js help
# Process a single repository
node src/index.js process [description]
node src/index.js process https://github.com/user/repo my-repo "A great MCP server"
# Process multiple repositories from JSON file
node src/index.js batch repositories.json
# Analyze all repositories and generate report
node src/index.js analyze
node src/index.js analyze --needs "web scraping tools"
# List all repositories
node src/index.js list
# List all categories
node src/index.js categories
# Get all tools
node src/index.js tools
# Get report for specific category
node src/index.js category web-scrapingGitHub 工作流
过程存储库
这个(或:该) process-repositories.yml 工作流可以被触发:
- 手动地使用 workflow_dispatch 处理单个仓库
- 按计划进行每周运行一次以处理来自(某处)的存储库
repositories.json - 在推进中自动运行于
repositories.json已更新
要使用手动触发器:
- 在GitHub中转到“Actions”选项卡
- 选择“处理和分析存储库”
- 点击“运行工作流”
- 输入仓库详细信息
比较仓库
这个 compare-repositories.yml 工作流程:
- 手动地比较特定类别中的存储库
- 按计划进行每月运行以生成对比报告
配置
repositories.json
创建一个 repositories.json 根目录中包含要处理的存储库的文件:
[
{
"name": "mcp-server-example",
"url": "https://github.com/user/mcp-server",
"description": "An example MCP server"
}
]见 repositories.json.example 作为模板。
建筑学
组件
- 数据库层 (
src/database/db.js)
- 包含仓库、工具、类别、分析结果和比较等表的SQLite数据库 - 所有实体的CRUD操作
- Repomix处理器 (
src/utils/repomix.js)
- 克隆仓库并生成repomix输出 - 如果 repomix 不可用,则回退到基本输出生成
- LLM 分析器 (
src/analysis/llm-analyzer.js)
- 使用OpenAI API进行分类 - 从存储库内容中提取工具 - 类别内的仓库比较 - 推荐生成 - API不可用时的模拟模式
- 处理流水线 (
src/process-repository.js)
- 单一仓库的端到端处理 - 所有组件的集成
- 分析流程 (
src/analyze-repositories.js)
- 多仓库分析 - 基于类别的比较 - 报告生成
- 主要应用 (
src/index.js)
- 命令行界面(CLI) - 批处理 - 编曲;管弦乐编排
数据库模式
仓库
- ID,名称,URL,描述,处理时间,repomix输出,类别,元数据
工具
- id(标识符)、repository_id(仓库标识符)、name(名称)、description(描述)、type(类型)、metadata(元数据)
类别
- id,名称,描述,创建时间
分析结果
- ID,仓库ID,分析类型,结果,分数,分析时间
比较
- ID,类别,仓库ID列表,对比结果,建议,对比时间
类别
该系统将存储库分类为:
web-scraping网页抓取和爬虫工具data-processing数据转换和ETL(抽取、转换、加载)api-integrationREST/GraphQL API客户端database数据库集成file-management文件系统操作cloud-servicesAWS、Azure、GCP 集成ai-ml人工智能和机器学习工具developer-tools开发实用工具communication消息和通知other未分类
示例
处理一个存储库
node src/process-repository.js \
https://github.com/modelcontextprotocol/servers \
mcp-servers \
"Official MCP servers collection"输出:
================================================================================
Processing repository: mcp-servers
URL: https://github.com/modelcontextprotocol/servers
================================================================================
Step 1: Adding repository to database...
✓ Repository added with ID: 1
Step 2: Processing with repomix...
✓ Repomix output saved (15234 bytes)
Step 3: Categorizing repository with LLM...
✓ Category: developer-tools
Step 4: Extracting tools and functionalities...
✓ Extracted 12 tools
Step 5: Storing analysis results...
✓ Analysis complete
================================================================================
Successfully processed: mcp-servers
================================================================================分析所有仓库
node src/analyze-repositories.js这将会:
- 按类别分组存储库
- 比较每个类别内的仓库
- 生成推荐建议
- 输出一份全面的分析报告
程序化使用
import { RepositoryAnalysisMCP } from './src/index.js';
const app = new RepositoryAnalysisMCP();
// Process a repository
await app.process(
'https://github.com/user/repo',
'my-repo',
'Description'
);
// Process multiple repositories
await app.processBatch([
{ name: 'repo1', url: 'https://github.com/user/repo1' },
{ name: 'repo2', url: 'https://github.com/user/repo2' }
]);
// Analyze all repositories
const analysis = await app.analyze({ userNeeds: 'web scraping' });
// Get tools list
const tools = await app.getAllTools();
// Close database connection
app.close();GitHub 密钥(或:GitHub 秘密)
在GitHub工作流中使用LLM进行分析时,请添加以下秘密:
OPENAI_API_KEY你的OpenAI API密钥
如果没有这个密钥,系统将使用基于关键词的分析以模拟模式运行。
人工制品;遗物;文物
工作流生成以下工件:
- 存储库数据库包含所有数据的SQLite数据库
- repomix-outputs 翻译为中文是“repomix 输出”生成的repomix输出文件
- 分析报告综合分析报告
- 对比报告类别对比报告
工件保留90天。
发展
项目结构
repository-analysis-mcp/
├── .github/
│ └── workflows/ # GitHub workflow definitions
├── src/
│ ├── analysis/ # LLM analysis components
│ ├── database/ # Database layer
│ ├── utils/ # Utility functions
│ ├── index.js # Main application
│ ├── process-repository.js # Single repository processor
│ └── analyze-repositories.js # Multi-repository analyzer
├── repositories.json # List of repositories to process
├── package.json
└── README.md添加新功能
- 新的分析类型添加方法到
LLMAnalyzer班级;类别 - 新数据库表更新
RepositoryDatabase.initSchema() - 新工作流程创建新的工作流程于
.github/workflows/
故障排除
未找到Repomix
如果未安装repomix,系统将生成基本输出。安装方法如下:
npm install -g repomixOpenAI API错误
如果你没有OpenAI API密钥,系统将使用模拟模式。要启用完整的LLM功能:
- 从https://platform.openai.com/获取API密钥
- 将其添加到
.env或者 GitHub 密钥
数据库被锁定
如果您遇到数据库锁定错误,请确保没有其他进程正在使用该数据库:
# Check for locks
lsof repositories.db
# If needed, remove the database and reprocess
rm repositories.db贡献
欢迎投稿!请:
- 克隆该仓库
- 创建一个特性分支
- 进行你的更改
- 提交拉取请求
许可证
ISC(互联网服务提供商)
致谢
- Repomix(注:这是一个专有名词或品牌名,直接翻译可能无法准确传达其含义,但根据音译原则,可译为“瑞波米克斯”或保持原样使用,具体取决于上下文和使用场景。) - 仓库到单个文件转换器
- 模型上下文协议 - MCP规范和工具
- OpenAI(一家人工智能研究实验室) - 用于分析的大型语言模型(LLM)应用程序编程接口(API)
