DAG-文档增强生成
用于版本软件库文档和API检索的MCP服务器
DAG是一个模型上下文协议(MCP)服务器,通过语义搜索、API验证和版本比较工具,提供对npm库文档的智能版本软件访问。
特性
- 语义搜索:跨库文档和源代码的基于矢量的搜索
- API验证:根据索引签名实时验证API使用情况
- 版本比较:显示版本之间添加/删除的API的差异分析
- 混合搜索:将向量相似性与关键字匹配相结合,以提高准确性
- 多生态系统:专为Python、Ruby、Java等的可扩展性而设计。
建筑
┌──────────────────────────────────────────────────────────────┐
│ MCP Server (Stdio) │
├──────────────────────────────────────────────────────────────┤
│ Resources │ Tools │
│ • library-docs/{lib}/{ver} │ • search_library │
│ • api-signature/{lib}/{fn} │ • validate_api │
│ • library-versions/{lib} │ • compare_versions │
├──────────────────────────────────────────────────────────────┤
│ Indexing Pipeline (Orchestrator) │
│ NPM → Parse AST → Chunk → Embed → Qdrant Store │
├──────────────────────────────────────────────────────────────┤
│ Services Layer │
│ • NPM Crawler • AST Parser • Chunker │
│ • Embedder • Qdrant • Orchestrator │
└──────────────────────────────────────────────────────────────┘包裹
此monorepo包含三个包:
1. @vamfi/dag-shared
整个系统使用的核心类型和接口。
覆盖: 98.01% | 测试:6/6传球
2. @vamfi/dag-indexer
npm包的索引管道。
组件:
- NPM爬虫(下载tarball,提取源代码)
- AST解析器(Types/JavaScript的树形图)
- 语义块(按函数/类拆分代码)
- 嵌入器(Voyage AI嵌入)
- Qdrant服务(矢量数据库操作)
- 索引编排器(端到端管道)
覆盖: 98.57% | 测试:48/48传球
3. @vamfi/dag-mcp-server
MCP服务器实现。
组件:
- MCP服务器(stdio传输)
- 资源提供者(3种资源类型)
- 工具提供商(3个工具)
- 健康监测
覆盖: 58.65% | 测试:28/28传球
安装
先决条件
- Node.js≥18.0.0
- npm≥9.0.0
- Qdrant云帐户(或本地Qdrant实例)
设置
- 克隆存储库:
git clone https://github.com/VAMFI/DAG.git
cd DAG- 安装依赖项:
npm install- 构建所有包:
npm run build- 运行测试:
npm test配置
创建一个 .env 项目根目录中的文件:
# Qdrant Configuration
QDRANT_URL=https://your-cluster.qdrant.tech
QDRANT_API_KEY=your_api_key_here
# MCP Server Configuration
MCP_SERVER_NAME=dag-mcp-server
MCP_SERVER_VERSION=0.1.0用法
为图书馆编制索引
import { IndexingOrchestrator } from '@vamfi/dag-indexer';
import {
NPMCrawlerService,
ASTParserService,
ChunkerService,
EmbedderService,
QdrantService
} from '@vamfi/dag-indexer';
// Initialize services
const crawler = new NPMCrawlerService();
const parser = new ASTParserService();
const chunker = new ChunkerService();
const embedder = new EmbedderService({
qdrantUrl: process.env.QDRANT_URL,
apiKey: process.env.QDRANT_API_KEY
});
const qdrant = new QdrantService({
url: process.env.QDRANT_URL,
apiKey: process.env.QDRANT_API_KEY
});
// Create orchestrator
const orchestrator = new IndexingOrchestrator(
crawler,
parser,
chunker,
embedder,
qdrant
);
// Index a package
const result = await orchestrator.indexPackage('express', '4.18.2');
console.log(`Indexed ${result.chunksIndexed} chunks in ${result.duration}ms`);运行MCP服务器
# Start the server
npm start --workspace=@vamfi/dag-mcp-server
# Or use the CLI directly
./packages/mcp-server/dist/index.js使用资源
资源提供对文档的结构化访问:
dag://library-docs/express/4.18.2
dag://api-signature/express/Router
dag://library-versions/express使用工具
工具支持与文档的智能交互:
1.搜索库:
{
"tool": "search_library",
"arguments": {
"query": "how to create middleware",
"library": "express",
"version": "4.18.2",
"limit": 5
}
}2.验证API:
{
"tool": "validate_api",
"arguments": {
"library": "express",
"apiCall": "app.use(express.json())",
"version": "4.18.2"
}
}3.比较版本:
{
"tool": "compare_versions",
"arguments": {
"library": "express",
"version1": "4.17.0",
"version2": "4.18.2"
}
}MCP客户端集成
克劳德桌面
添加到 claude_desktop_config.json:
{
"mcpServers": {
"dag": {
"command": "node",
"args": ["/path/to/DAG/packages/mcp-server/dist/index.js"],
"env": {
"QDRANT_URL": "https://your-cluster.qdrant.tech",
"QDRANT_API_KEY": "your_api_key"
}
}
}
}Continue.dev
添加到 .continue/config.json:
{
"experimental": {
"modelContextProtocolServers": [
{
"transport": {
"type": "stdio",
"command": "node",
"args": ["/path/to/DAG/packages/mcp-server/dist/index.js"]
},
"env": {
"QDRANT_URL": "https://your-cluster.qdrant.tech",
"QDRANT_API_KEY": "your_api_key"
}
}
]
}
}质量门
所有质量门均已通过:
质量关卡1:编排器集成✓
- 需求要求
- 规格:完整的管道集成和全面的测试
- 结果:48项测试通过,覆盖率98.57%
状态
- :通过质量门2:工具性能✓
- 需求要求
- 规格:搜索延迟\<2秒
结果
- :平均延迟\<100ms状态
- :通过质量门3:完成MVP✓
- 需求要求
规格
- :所有组件都已集成、记录和测试结果
- :所有软件包中有82/82个测试通过状态
- :通过演出
- 索引:每个包装约100-500ms(取决于尺寸)
搜索
- :平均延迟\<100ms
- API验证
- :平均\<50ms
- 版本比较
- :平均\<200ms
- 路线图
- \[\]Python生态系统支持(PyPI)
\[\]Ruby生态系统支持(RubyGems)
\[\]Java生态系统支持(Maven)
- \[\]实时软件包更新
- \[\]增强的缓存层
git checkout -b feature/amazing-feature\[\]多租户支持 - \[\]GraphQL API
- 贡献
git push origin feature/amazing-feature欢迎投稿!请遵循以下指南: - 分叉存储库
创建要素分支(
)
用常规提交方式提交更改
- 推到分支(
- )
- 打开拉取请求
______________________________________________________________________
许可证
