使用说明
带API集成的MCP服务器
一个极简主义的模型上下文协议(MCP)服务器,提供与Supabase、Cal.com、Gmail和Twilio API的集成。
特点/特性
- Supabase 集成通过REST API进行数据库操作(CRUD)
- Cal.com 集成活动日程安排与管理
- Gmail 集成发送电子邮件并收取消息
- Twilio集成发送短信、WhatsApp消息,并进行通话
- MCP协议支持标准化工具定义和终点指标
- 安全速率限制、CORS(跨域资源共享)和Helmet安全头部设置
- 记录日志基于Winston的日志记录,支持文件和控制台输出
先决条件
- Node.js 18.0.0 或更高版本
- npm 或 yarn 包管理器
- 账户和API密钥用于:
- Supabase(可译为“超级数据库”或根据具体语境保持原名)
- Cal.com(注:这个域名可能代表某个特定的在线日历或日程管理服务,但直接翻译时,我们通常保留其原样,因为域名没有固定的中文翻译。)
- Gmail/Google 云端控制台
- Twilio
安装
-
克隆仓库
git clone <your-repo-url> cd mcp-server-integrations -
安装依赖项
npm install -
设置环境变量
cp env.example .env编辑
.env使用您实际的API凭据(见下文“配置”部分)。 -
创建日志目录
mkdir logs
配置
环境变量
复制 env.example 到;对于;给;向 .env 并进行以下配置:
服务器配置
PORT服务器端口(默认:3000)NODE_ENV环境(开发/生产)LOG_LEVEL日志级别(错误/警告/信息/调试)ALLOWED_ORIGINS逗号分隔的允许的CORS来源列表
Supabase(可译为“苏帕斯数据库”或直接保留原名,根据上下文判断是否需要具体翻译)
- 首选 Supabase 并创建一个新项目
- 从“设置”>“API”中获取您的项目URL和匿名密钥
- 设置
SUPABASE_URL并且SUPABASE_ANON_KEY
Cal.com(注:这通常是一个假设或特定上下文中的域名,直接翻译为“卡尔点康”并无实际意义,因此保持原样作为专有名词)
- 首选 Cal.com(可译为“日历网”或保持原名,根据上下文决定是否需要具体翻译) 并创建一个账户
- 在“设置”>“开发者”中生成API密钥
- 设置
CAL_API_KEY
Gmail/谷歌
- 首选 Google 云控制台
- 创建一个新项目或选择现有项目
- 启用Gmail API
- 创建OAuth 2.0凭据
- 设定;套装;一套
GOOGLE_CLIENT_ID,GOOGLE_CLIENT_SECRET,和GOOGLE_REDIRECT_URI - 使用OAuth流程获取刷新令牌(参见Gmail设置部分)
Twilio(注:Twilio是一个提供通信服务的云平台,常用于开发应用程序中的电话、短信和视频功能,其直接翻译为“特威利奥”或保持原名使用较为常见,具体根据语境和习惯选择。)
- 首选 Twilio 控制台
- 从仪表板获取账户SID和身份验证令牌
- 购买一个电话号码
- 设定
TWILIO_ACCOUNT_SID,TWILIO_AUTH_TOKEN,以及TWILIO_PHONE_NUMBER
Gmail OAuth 设置
要使用Gmail API,您需要完成OAuth流程:
-
启动服务器
npm run dev -
获取授权URL
curl http://localhost:3000/api/gmail/auth-url -
访问该网址 并授权该应用程序
-
用代币兑换代码
curl -X POST http://localhost:3000/api/gmail/token \ -H "Content-Type: application/json" \ -d '{"code": "YOUR_AUTHORIZATION_CODE"}' -
更新
.env带有刷新令牌
使用方法
启动服务器
# Development mode with auto-reload
npm run dev
# Production mode
npm start
健康检查
curl http://localhost:3000/health
MCP 工具
获取可用工具:
curl http://localhost:3000/api/mcp/tools
API 端点
Supabase(可译为“苏帕巴斯”或根据具体语境保留原名,因其是一个特定的技术或服务名称)
# Query database
curl -X POST http://localhost:3000/api/supabase/query \
-H "Content-Type: application/json" \
-d '{
"table": "users",
"operation": "select",
"filters": {"active": true}
}'
Cal.com(注:这个网址或应用名直接翻译为中文并无特定含义,通常保留原样或根据上下文进行意译,如“日历.com”或“Cal应用”等,但在此直接给出原样翻译以保持一致性)
# Schedule event
curl -X POST http://localhost:3000/api/cal/schedule \
-H "Content-Type: application/json" \
-d '{
"title": "Meeting",
"startTime": "2024-01-15T10:00:00Z",
"endTime": "2024-01-15T11:00:00Z",
"attendees": ["user@example.com"]
}'
# Get events
curl http://localhost:3000/api/cal/events
Gmail(谷歌邮箱)
# Send email
curl -X POST http://localhost:3000/api/gmail/send \
-H "Content-Type: application/json" \
-d '{
"to": "recipient@example.com",
"subject": "Test Email",
"body": "<h1>Hello World</h1>"
}'
# Get messages
curl http://localhost:3000/api/gmail/messages
Twilio
# Send SMS
curl -X POST http://localhost:3000/api/twilio/sms \
-H "Content-Type: application/json" \
-d '{
"to": "+1234567890",
"message": "Hello from MCP Server!"
}'
发展
项目结构
src/
├── server.js # Main server file
├── services/ # API service integrations
│ ├── supabase.js # Supabase service
│ ├── cal.js # Cal.com service
│ ├── gmail.js # Gmail service
│ └── twilio.js # Twilio service
└── utils/
└── logger.js # Winston logger configuration
添加新服务
- 在(指定位置)创建一个新的服务文件
src/services/ - 实现包含所需方法的服务类
- 添加终端节点到
src/server.js - 更新MCP工具定义
- 添加环境变量到
env.example
测试
# Run tests
npm test
# Run tests with coverage
npm run test:coverage
部署
Docker
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
RUN mkdir logs
EXPOSE 3000
CMD ["npm", "start"]
生产环境的环境变量
确保在您的生产环境中设置所有必需的环境变量:
- 为所有API密钥使用强且唯一的值
- 设定
NODE_ENV=production - 配置适当
ALLOWED_ORIGINS - 设置适当的日志记录和监控
GitHub仓库设置
-
初始化Git仓库
git init git add . git commit -m "Initial commit: MCP Server with API integrations" -
创建GitHub仓库
- 前往GitHub并创建一个新仓库
- 不要用 README 初始化(我们已经有了一个)
-
将本地仓库连接到GitHub
git remote add origin https://github.com/yourusername/your-repo-name.git git branch -M main git push -u origin main -
设置 GitHub Actions (可选) 创造
.github/workflows/ci.yml:name: CI on: [push, pull_request] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: node-version: '18' - run: npm ci - run: npm test
安全考虑因素
- 永远不要承诺
.env文件提交到版本控制系统 - 使用特定环境的API密钥
- 实施适当的速率限制
- 验证所有输入数据
- 在生产环境中使用HTTPS
- 定期轮换API密钥
故障排除
常见问题
-
端口已被使用
# Change PORT in .env or kill existing process lsof -ti:3000 | xargs kill -9 -
API认证错误
- 验证API密钥是否正确
- 检查API配额和限制
- 确保Gmail的OAuth流程正确无误
-
CORS 错误
- 将您的前端URL添加到
ALLOWED_ORIGINS - 检查浏览器开发者工具以查找具体错误
- 将您的前端URL添加到
日志
检查日志中的 logs/ 目录:
combined.log所有日志error.log仅错误日志
做出贡献
- 为仓库创建分支
- 创建一个特性分支
- 进行你的更改
- 如适用,请添加测试
- 提交一个拉取请求
许可证
MIT 许可证 - 详见 LICENSE 文件。
支持
对于问题和疑问:
- 查看故障排除部分
- 审查每个服务的API文档
- 在GitHub上打开一个议题(或问题)