使用说明
政策MCP
模型上下文协议(MCP)服务器,用于接收策略文档(PDF、Word、Markdown)并将其暴露给AI助手。
特性
- 多格式支持:上传PDF、Word(.docx)和Markdown(.md)策略文档
- 元数据抽取:自动从文档属性中提取标题、版本、日期和作者
- 全文检索:使用相关性评分搜索所有已加载的策略
- MCP协议:通过AI助手的模型上下文协议公开策略
- 网页用户界面:用于上传和管理策略的基于浏览器的界面
- 远程部署:作为具有流式HTTP MCP传输的HTTP服务器运行
快速开始
本地开发
# Install dependencies
npm install
# Build the project
npm run build
# Start the server
npm start
服务器将在以下时间启动 http://localhost:3000:
- 网页用户界面:
http://localhost:3000-用于上传和管理策略文档的浏览器界面 - MCP端点:
http://localhost:3000/mcp-用于AI助手集成 - 健康检查:
http://localhost:3000/health-服务器状态和指标
打开浏览器 http://localhost:3000 访问web界面并开始上传策略文档。
环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
PORT |
3000 |
服务器端口 |
HOST |
0.0.0.0 |
服务器主机绑定 |
CORS_ORIGIN |
* |
CORS允许的来源 |
MCP_AUTH_MODE |
none |
MCP端点身份验证: none, api-key,或 jwt |
MCP_AUTH_API_KEY |
- | MCP端点的API密钥(如果 MCP_AUTH_MODE=api-key) |
MCP_AUTH_JWT_SECRET |
- | 用于令牌验证的JWT密钥(如果 MCP_AUTH_MODE=jwt) |
WEB_AUTH_MODE |
none |
Web/API端点身份验证: none, api-key,或 jwt |
WEB_AUTH_API_KEY |
- | web终结点的API密钥(如果 WEB_AUTH_MODE=api-key) |
WEB_AUTH_JWT_SECRET |
- | 用于令牌验证的JWT密钥(如果 WEB_AUTH_MODE=jwt) |
看 .env.example 有关完整配置选项和 文档/授权.md 用于身份验证设置。
MCP工具
| 工具 | 说明 |
|---|---|
scan_document |
扫描文档(PDF、Word或Markdown)并提取政策信息 |
search_policies |
按关键字搜索已加载的策略 |
list_policies |
列出所有已加载的策略及其摘要 |
get_policy |
按ID获取特定策略的完整内容 |
API 参考
Web API
| 方法 | 路径 | 描述 |
|---|---|---|
GET |
/api/policies |
列出所有策略(可选 ?category= 过滤器) |
GET |
/api/policies/:id |
按ID获取单一策略 |
POST |
/api/policies |
上传文档(多部分表单 file 字段,支持PDF/DOCX/MD) |
DELETE |
/api/policies/:id |
删除策略 |
GET |
/api/search |
搜索策略(?query= 必修的, ?category= 可选) |
GET |
/api/categories |
获取独特类别列表 |
MCP协议(流式HTTP)
| 方法 | 路径 | 描述 |
|---|---|---|
POST |
/mcp |
MCP请求处理(初始化、工具调用) |
GET |
/mcp |
服务器到客户端通知(SSE) |
DELETE |
/mcp |
会话终止 |
健康与探头
| 路径 | 描述 |
|---|---|
/health |
使用状态、版本、策略计数进行健康检查 |
/ready |
Kubernetes就绪性探测 |
/live |
Kubernetes活性探测 |
部署
数字海洋应用平台
单击上面的“部署到DO”按钮,或:
- 分叉此存储库
- 在中创建新应用程序 数字海洋应用平台
- 连接您的分叉存储库
- 这
.do/deploy.template.yaml将自动配置部署
手动部署
# Build for production
npm ci
npm run build
# Start the server
node dist/index.js
确保 HOST=0.0.0.0 已为云部署设置。
建筑
┌─────────────────────────────────────────────────────────┐
│ HTTP Server (Express) │
│ │
│ ┌────────────┐ ┌────────────┐ ┌──────────────────┐ │
│ │ /mcp │ │ /api/* │ │ / (static) │ │
│ │ MCP Proto │ │ REST API │ │ Web UI │ │
│ └─────┬──────┘ └─────┬──────┘ └──────────────────┘ │
│ │ │ │
│ └───────┬───────┘ │
│ ▼ │
│ ┌──────────────────────────────────────────────────┐ │
│ │ PolicyStore (in-memory) │ │
│ │ │ │
│ │ • addPolicy() • searchPolicies() │ │
│ │ • getPolicy() • listPolicies() │ │
│ │ • removePolicy() • getAllPolicies() │ │
│ └──────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────┘
发展
脚本
| 命令 | 描述 |
|---|---|
npm run build |
编译TypeScript并复制静态文件 |
npm start |
运行生产服务器 |
npm run dev |
开发观看模式 |
npm run lint |
运行ESLint |
npm run format |
使用Prettier格式化代码 |
项目结构
src/
├── index.ts # Express server, MCP setup, API routes
├── policy-store.ts # In-memory policy storage with search
├── auth-manager.ts # Authentication middleware (API key, JWT)
├── types.ts # TypeScript interfaces
├── parsers/
│ ├── index.ts # Unified document parser router
│ ├── pdf-parser.ts # PDF text extraction and metadata
│ ├── docx-parser.ts # Word document parsing with mammoth
│ ├── markdown-parser.ts # Markdown parsing with gray-matter
│ └── shared.ts # Shared parsing utilities
└── public/
└── index.html # Web UI (single-page app)
已知限制
- 内存存储:服务器重新启动时策略丢失
- 无OCR:不支持带图像的扫描PDF
- 基本断面检测:复杂的文档格式可能无法正确解析
- 单词格式丢失:Word文档转换为纯文本,失去格式
- Markdown限制:高级标记功能(表、代码块)被扁平化为文本
文档
其他文件可在 docs/ 目录:
贡献
欢迎投稿!请阅读我们的 贡献指南 有关我们的开发过程、代码风格以及如何提交pull请求的详细信息。在贡献之前,一定要查看许可条款。
许可证
本项目根据商业源许可证1.1(BUSL-1.1)获得许可。看 许可证 了解详情。
许可证允许免费用于非生产目的。如需生产使用,请联系 地平线数字工程.
