一个用于爬取、处理和查询文档的系统,具备AI驱动的嵌入生成和语义搜索功能。
克隆仓库:
git clone https://github.com/visheshd/docmcp.git
cd docmcp
配置环境:
cp .env.example .env
.env文件:
DATABASE_URL设置为postgresql://postgres:postgres@localhost:5433/docmcpAWS_REGION设置为您的AWS区域(例如,us-east-1)AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEYLOG_LEVEL启动开发环境:
# 使脚本可执行
chmod +x dev-start.sh
# 启动开发环境
./dev-start.sh
此脚本将:
添加文档:
使用add-docs脚本来爬取和处理文档:
# 基本用法
npm run add-docs -- --url https://example.com/docs --max-depth 3
# 带附加选项
npm run add-docs -- \
--url https://example.com/docs \
--max-depth 3 \
--tags react,frontend \
--package react \
--version 18.0.0 \
--wait
可用选项:
--url:要爬取的文档URL(必需)--max-depth:最大爬取深度(默认值:3)--tags:用于分类的逗号分隔标签--package:此文档对应的包名--version:包版本(默认为“最新”)--wait:等待处理完成--verbose:启用详细日志记录npm run add-docs -- --help查询文档: 添加文档后,您可以使用MCP工具对其进行查询。请参阅下面的“查询文档”部分。
停止开发环境:
docker-compose -f docker-compose.dev.yml down
此设置提供了一个轻量级的开发环境,仅包含所需的PostgreSQL数据库和预加载的种子数据。对于生产部署或如果您希望完全容器化设置,请参阅下面的“生产Docker设置”部分。
要将DocMCP与Cursor IDE一起使用,您需要配置MCP传输。在您的Cursor设置中添加以下配置:
{
"docmcp-local-stdio": {
"transport": "stdio",
"command": "node",
"args": [
"<DOCMCP_DIR>/dist/stdio-server.js"
],
"clientInfo": {
"name": "cursor-client",
"version": "1.0.0"
}
}
}
将<DOCMCP_DIR>替换为您DocMCP安装目录的绝对路径。
例如,如果DocMCP安装在/home/user/projects/docmcp,则您的配置应为:
"args": ["/home/user/projects/docmcp/dist/stdio-server.js"]
添加此配置后,重启Cursor以使更改生效。
该系统由几个核心服务组成:
DocMCP系统通过以下流水线处理文档:
文档输入
add_documentationMCP工具提供一个URL网络爬取(CrawlerService)
文档处理(DocumentProcessorService)
分块及嵌入(ChunkService)
作业最终化(JobService)
查询及检索
query_documentationMCP工具发送查询此流水线实现了文档的高效存储、处理和检索,具备语义理解能力。所有步骤都通过作业系统跟踪,允许详细进度监控和错误处理。
docmcp/
├── prisma/ # 数据库模式和迁移
│ └── schema.prisma # Prisma模型定义和数据库配置
├── src/
│ ├── config/ # 应用程序配置
│ │ └── database.ts # 数据库连接设置
│ ├── generated/ # 生成的代码(Prisma客户端)
│ ├── services/ # 核心服务模块
│ │ ├── crawler.service.ts # 网站爬取功能
│ │ ├── document.service.ts # 文档管理
│ │ ├── document-processor.service.ts # 文档处理和转换
│ │ ├── job.service.ts # 异步作业管理
│ │ ├── chunk.service.ts # 文档分块和向量操作
│ │ └── mcp-tools/ # MCP集成工具
│ │ ├── add-documentation.tool.ts # 添加新文档的工具
│ │ ├── get-job-status.tool.ts # 检查作业状态的工具
│ │ ├── list-documentation.tool.ts # 列出可用文档的工具
│ │ ├── query-documentation.tool.ts # 查询文档的工具
│ │ ├── sample.tool.ts # 示例工具实现
│ │ └── index.ts # 工具注册和导出
│ ├── types/ # TypeScript类型定义
│ │ └── mcp.ts # MCP工具接口定义
│ ├── utils/ # 实用函数
│ │ ├── logger.ts # 日志实用工具
│ │ └── prisma-filters.ts # 可重用的Prisma过滤模式
│ └── __tests__/ # 测试文件
│ └── utils/ # 测试实用工具
│ └── testDb.ts # 测试数据库设置和拆卸
├── .env # 环境变量
└── package.json # 项目依赖项和脚本