开心果MCP服务器
一个使用Node.js和TypeScript构建的远程MCP(模型上下文协议)服务器,用于移动应用程序开发。此服务器为远程项目管理、测试和资产搜索提供工具和提示。
先决条件
在设置此存储库之前,请确保已安装以下内容:
- Node.js (v20或更高)
- 纱线 (v4.10.3或兼容版本)
- Git
安装说明
1.克隆存储库
git clone
cd pistachio-mcp2.安装Yarn(如果尚未安装)
本项目使用Yarn 4.10.3作为包管理器。如果您没有安装Yarn或需要升级:
# Install Yarn globally (if needed)
npm install -g yarn
# Or use Corepack (recommended for Node.js 16.10+)
corepack enable
corepack prepare yarn@4.10.3 --activate3.安装依赖项
使用Yarn安装所有项目依赖项:
yarn install这将安装中列出的所有依赖项 package.json,包括:
@modelcontextprotocol/sdk-MCP-SDKfirebase-用于Firestore和Auth的Firebase SDK@google-cloud/storage-谷歌云存储客户端zod-架构验证- TypeScript和开发依赖关系
4.配置环境变量
创建 .env 根目录中的文件(如果需要自定义配置):
# Optional: Set custom port (default: 3001)
PORT=3001
# Optional: Set number of worker threads (default: 2)
NUM_WORKERS=2
# Optional: Set Node environment
NODE_ENV=development
# Optional: Set log level (default: info)
# Options: trace, debug, info, warn, error, fatal
LOG_LEVEL=info
# Optional: Firebase emulator configuration (for development)
FIREBASE_AUTH_EMULATOR_HOST=localhost:9099
FIRESTORE_EMULATOR_HOST=localhost:8080
# Optional: Google Cloud Storage bucket for weekly expiring assets
GCS_BUCKET_WEEKLY_EXPIRING=dev-pistachio-assets-weekly-expiring注: 该项目在中使用硬编码的Firebase配置 src/utils/ServerStorageUtils.ts。对于生产,您可能希望将其移动到环境变量中。
5.配置谷歌云存储(可选)
如果您计划使用Google Cloud Storage功能(图像上传),则需要设置身份验证:
- 创建服务帐户 在谷歌云控制台中
- 下载服务帐户密钥 作为JSON文件
- 设置环境变量:
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/service-account-key.json"或者,如果在Google Cloud Platform上运行,则会自动处理身份验证。
6.建设项目
将TypeScript编译为JavaScript:
yarn build这将生成 dist/ 包含已编译JavaScript文件的目录。
7.验证安装
运行测试以验证所有设置是否正确:
yarn test:run运行服务器
发展模式
在热重载的开发模式下运行服务器:
yarn dev默认情况下,服务器将从端口3001(或由指定的端口)启动 PORT 环境变量)。
生产模式
使用PM2
PM2是一个进程管理器,提供自动重启、日志轮换和进程监控。要使用PM2:
- 安装PM2日志旋转模块 (仅限第一次):
pm2 install pm2-logrotate
pm2 set pm2-logrotate:max_size 10M
pm2 set pm2-logrotate:retain 30
pm2 set pm2-logrotate:compress true
pm2 set pm2-logrotate:rotateInterval "0 0 * * *"注: PM2使用 pm2-logrotate 自动原木轮换模块。上述配置设置:
- max_size:旋转前的最大日志文件大小(10M) - retain:要保留的轮换日志文件数(30天) - compress:压缩旧日志文件以节省空间 - rotateInterval:使用cron格式的基于时间的轮换计划 "0 0 * * *" (每天午夜)
- 构建并启动服务器:
yarn build
yarn pm2:start- 监控服务器:
# View logs
yarn pm2:logs
# Check status
yarn pm2:status- 管理服务器:
# Restart
yarn pm2:restart
# Stop
yarn pm2:stop
# Remove from PM2
yarn pm2:delete日志文件:
- 组合日志:
logs/combined.log(所有stdout和stderr) - 错误日志:
logs/error.log(仅错误级别日志) - 日志每天午夜轮换,保留30天
- 旧日志会自动压缩
直接节点执行
直接构建并运行编译后的服务器:
yarn build
node dist/index.js直接执行(开发)
直接运行TypeScript而无需构建:
yarn start服务器配置
默认设置
- 端口:3001(可通过以下方式配置
PORT环境变量) - 工人:2(可通过配置
NUM_WORKERS环境变量) - 主机:
0.0.0.0(可从远程客户端访问)
MCP端点
服务器在以下位置公开MCP端点 /message 接受:
- 获取:建立SSE流以接收消息
- 发布:发送MCP请求
- 选项:CORS飞行前请求
示例端点: http://localhost:3001/message
管理代理
首先构建项目以确保代理已编译:
yarn build然后通过PM2管理流程:
# Start all services (MCP, rclone, and Proxy)
yarn mcp:start
# Manage only the proxy
yarn proxy:start
yarn proxy:logs
yarn proxy:status
yarn proxy:restart
yarn proxy:stopRclone
客户端配置
配置本地rclone客户端时,将其指向代理端口(8080),而不是原始rclone端口:
# Example client setup
rclone config create pistachio-server webdav url=http://:8080
rclone bisync ./local-folder pistachio-server:
--resync发展
运行测试
# Run tests in watch mode
yarn test
# Run tests once
yarn test:run代码检查
# Check for linting errors
yarn lint
# Fix linting errors automatically
yarn lint:fixTypeScript编译错误
如果你遇到TypeScript错误:
# Clean and rebuild
rm -rf dist
yarn build许可证
麻省理工学院
