pk中央mcp
一个MCP(模型上下文协议)服务器,它公开了与以下对象交互的工具 PK中央 -个人API,用于管理文档、笔记、航班、访问等。
设计用于GitHub Copilot、Claude Desktop或任何其他MCP兼容客户端等AI助手。支持两者 标准 和 HTTP(流式HTTP) 运输。
依赖项
- Node.js v22+
- @模型上下文协议/sdk --MCP服务器框架
- 黄道带 --工具输入的模式验证
- 表达 --HTTP传输模式的HTTP服务器
设置
npm install
npm run buildnpm脚本
| 脚本 | 描述 |
|---|---|
npm run build | 将TypeScript编译为 dist/ |
npm run dev | 监视模式——文件更改时重新编译 |
npm run start | 运行已编译的服务器(stdio) |
npm run dev:http | 在HTTP模式下运行服务器,从加载变量 .env |
npm run lint | 运行ESLint |
npm run lint:fix | 运行ESLint并自动修复 |
npm run format | 使用Prettier格式化源文件 |
npm run deploy | Bump补丁版本,构建TS,构建并推送Docker镜像 |
运输方式
服务器支持由控制的两种传输模式 MCP_TRANSPORT 环境变量。
stdio(默认)
标准输入/输出传输。MCP客户端启动服务器进程,并通过stdin/stdout进行通信。 API_BASE_URL 和 API_KEY 由客户端注入。
HTTP(流式HTTP)
服务器作为独立的HTTP服务器运行。需要通过承载令牌进行身份验证。启动前必须设置所有环境变量(例如通过 .env).
npm run dev:http # loads .env, sets MCP_TRANSPORT=http, starts server环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
API_BASE_URL | http://localhost:5500/central/v2 | PK-中央API的基本URL(stdio模式) |
API_KEY | - | PK-中央API的API密钥(stdio模式) |
MCP_TRANSPORT | stdio | 运输方式: stdio 或 http |
MCP_PORT | 4999 | 要侦听的端口(HTTP模式) |
MCP_HOST | 0.0.0.0 | 要绑定的主机名(HTTP模式) |
MCP_AUTH_TOKEN | -- | HTTP身份验证的承载令牌-- 必需的 在HTTP模式下 |
在HTTP模式下MCP_AUTH_TOKEN必须设置,否则服务器将拒绝所有请求500.
MCP客户端配置
stdio——同一系统
{
"servers": {
"pk-central": {
"type": "stdio",
"command": "node",
"args": ["/path/to/central-mcp/dist/index.js"],
"env": {
"API_BASE_URL": "https://your-api-host/central/v2",
"API_KEY": ""
}
}
}
}stdio——Windows MCP客户端→ WSL Node.js
如果MCP客户端安装在Windows上,但Node.js和服务器位于WSL内,则必须通过Linux注入env变量 env 命令,Node.js二进制文件必须通过其绝对路径引用(例如,如果通过nvm安装):
{
"servers": {
"pk-central": {
"type": "stdio",
"command": "wsl",
"args": [
"env",
"API_BASE_URL=http://localhost:5500/central/v2",
"API_KEY=",
"/home/peter/.nvm/versions/node/v22.5.1/bin/node",
"/home/peter/code/central-mcp/dist/index.js"
]
}
}
}HTTP(流式HTTP)
服务器支持两种传递身份验证令牌的方式:
承载头 (首选):
{
"servers": {
"pk-central": {
"type": "streamable-http",
"url": "https://your-domain.com/central-mcp/mcp",
"headers": {
"Authorization": "Bearer "
}
}
}
}查询参数 (适用于不支持自定义标头的客户端):
{
"servers": {
"pk-central": {
"type": "streamable-http",
"url": "https://your-domain.com/central-mcp/mcp?api_key="
}
}
}注: 使用查询参数时,考虑禁用nginx访问日志记录 /central-mcp/ 位置,以避免令牌出现在日志文件中。注: 在任何代码更改后,运行 npm run build 并在客户端中重新启动MCP服务器。码头工人
生产图片
生产 Dockerfile 构建一个自包含的Node.js映像,以HTTP模式运行MCP服务器。它发布到Docker Hub作为 kinp/pk-central-mcp.
npm run deploy # bumps patch version in package.json, builds TS, builds & pushes Docker image生产 docker-compose.yml 引用已发布的图像并从中加载所有变量 .env 服务器上的文件:
| 变量 | 描述 |
|---|---|
API_BASE_URL | PK-中央API的基本URL |
API_KEY | PK-中央API的API密钥 |
MCP_AUTH_TOKEN | HTTP身份验证的承载令牌 |
nginx反向代理
当在nginx后面托管时 /mcp 端点需要SSE友好配置:
location /central-mcp/ {
proxy_pass http://localhost:4999/;
proxy_http_version 1.1;
proxy_buffering off;
proxy_cache off;
proxy_set_header Connection '';
proxy_read_timeout 24h;
proxy_send_timeout 24h;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}