MCP 1 Office Server
一个使用TypeScript和Express.js构建的模型上下文协议(MCP)服务器实现,为办公自动化和文档处理提供安全的API端点。
🚀 功能
- MCP协议支持全面实施模型上下文协议
- 认证基于JWT的令牌认证,结合客户端密钥验证
- 多种运输类型:
- 可流式传输的HTTP传输 - 服务器发送事件(SSE)传输
- 健康监测内置健康检查端点
- TypeScript全面的类型安全性和现代JavaScript特性
- Express.js快速且可靠的网络框架
📋 先决条件
- Node.js 20+(版本)
- npm 或 yarn
- TypeScript 5.9及以上版本
🛠️ 安装
- 克隆仓库
git clone
cd mcp-1offfice- 安装依赖项
npm install- 环境设置
cp env.example .env配置您的 .env 文件:
MCP_PRIVATE_KEY=your-secret-key
MCP_SERVER_NAME=1office-server
MCP_TOKEN_SECRET=your-jwt-secret
MCP_TOKEN_EXPIRES_IN=1h
MCP_SERVER_VERSION=1.0.0
PORT=3000🏃♂️ 快速入门
开发模式
npm run dev生产构建(或生产版本)
npm run build
npm start干净构建
npm run clean
npm run build📡 API 端点
健康检查
GET /health回答:
{
"status": "ok",
"timestamp": "2025-01-22T13:46:33.623Z"
}认证
POST /auth/login
Headers:
x-client-key: your-client-key回答:
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}MCP端点
可流式传输的HTTP传输
POST /mcp
Headers:
Authorization: Bearer
Content-Type: application/json服务器发送事件
GET /sse
Headers:
Authorization: Bearer 遗留信息
POST /messages?sessionId=
Headers:
Authorization: Bearer
Content-Type: application/json🔧 配置
服务器可以通过环境变量进行配置:
| 变量 | 默认值 | 描述 |
|---|---|---|
MCP_PRIVATE_KEY | default-key | 客户端认证密钥 |
MCP_SERVER_NAME | default-server | MCP的服务器名称 |
MCP_TOKEN_SECRET | supersecret | JWT 签名密钥 |
MCP_TOKEN_EXPIRES_IN | 1h JWT令牌过期 | |
MCP_SERVER_VERSION | 0.0.1 | 服务器版本 |
PORT | 3000 | 服务器端口 |
🏗️ 项目结构
src/
├── auth/ # Authentication routes
│ └── auth.route.ts
├── config/ # Configuration
│ └── index.ts
├── middlewares/ # Express middlewares
│ ├── checkClientKey.ts
│ └── checkToken.ts
├── resources/ # MCP resources
│ ├── greeting.ts
│ └── index.ts
├── routes/ # API routes
│ └── health.ts
├── tools/ # MCP tools
│ ├── add.ts
│ └── index.ts
├── transports/ # Transport implementations
│ ├── sse.ts
│ └── streamableHttp.ts
├── utils/ # Utility functions
│ └── fetchJSON.ts
└── server.ts # Main server file🔒 安全
- 客户端密钥认证所有终端点均需要有效的客户端密钥
- JWT令牌验证受保护的终端需要有效的JWT令牌
- 环境变量存储在环境变量中的敏感数据
- 类型安全完整的 TypeScript 类型检查
🧪 测试
# Health check
curl http://localhost:3000/health
# Authentication
curl -X POST http://localhost:3000/auth/login \
-H "x-client-key: your-client-key"
# MCP endpoint (with token)
curl -X POST http://localhost:3000/mcp \
-H "Authorization: Bearer " \
-H "Content-Type: application/json" \
-d '{"method": "ping"}'📦 脚本
| 脚本 | 描述 |
|---|---|
npm run dev | 启动开发服务器并启用热重载 |
npm run build | 将TypeScript编译为JavaScript |
npm start | 启动生产服务器 |
npm run clean | 删除构建目录 |
npm run lint | 运行 ESLint |
🛠️ 开发
添加新工具
- 在(某处)创建工具
src/tools/ - 从...导出
src/tools/index.ts - 在MCP服务器上注册
添加新资源
- 在(某处)创建资源
src/resources/ - 从(某处)导出
src/resources/index.ts - 在MCP服务器上注册
添加新路线
- 在适当的目录中创建路由文件
- 导入并在其中使用
src/server.ts
📝 许可证
ISC许可证
对于问题和疑问,请在仓库中创建一个议题。
______________________________________________________________________
使用 TypeScript、Express.js 和 MCP SDK 用心打造
