策略文档处理服务器

一个用于处理PDF、Word和Markdown格式的策略文档,并将其暴露给AI助手的Model Context Protocol(MCP)服务器。

  • by Horizon-Digital-Engineering
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 Horizon-Digital-Engineering/policymcp

使用说明

政策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”按钮,或:

  1. 分叉此存储库
  2. 在中创建新应用程序 数字海洋应用平台
  3. 连接您的分叉存储库
  4. 这 .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/ 目录:

  • 建筑 -系统设计、组件概述和未来路线图
  • 授权指南 -全面的身份验证设置(API密钥、JWT、OAuth 2.1)
  • 代理商指南 -AI代理和开发人员使用代码库的参考

贡献

欢迎投稿!请阅读我们的 贡献指南 有关我们的开发过程、代码风格以及如何提交pull请求的详细信息。在贡献之前,一定要查看许可条款。

许可证

本项目根据商业源许可证1.1(BUSL-1.1)获得许可。看 许可证 了解详情。

许可证允许免费用于非生产目的。如需生产使用,请联系 地平线数字工程.