使用说明
通用MCP网关
一个高性能的模型上下文协议服务器,通过智能缓存和实时监控,将Claude Desktop与多个API连接起来
一个全面的MCP服务器,提供对包括GitHub在内的多个流行API的统一访问,具备企业级功能,如智能缓存、性能监控和高级错误处理。该服务器采用现代Node.js实践构建,展示了具备生产就绪的开发技能。
特点/功能
第一阶段:核心基础 ✅
- GitHub API 集成完整的用户、仓库和问题管理
- 强大的错误处理全面的错误管理,支持重试
- 速率限制内置速率限制,同时尊重API限制
- 身份验证管理支持多种认证策略
- 输入验证对所有输入进行严格验证
- 配置系统基于环境的配置管理
第二阶段:高级功能 ✅
- 智能缓存带有TTL的LRU缓存,以实现最佳性能
- 性能指标实时监控与分析
- 内存管理自动缓存清理和优化
- 高级监控请求追踪、成功率及错误分析
可用工具
github-get-user- 获取详细的用户资料信息github-list-repos- 列出用户仓库,并支持过滤和分页github-get-repo- 获取完整的存储库详细信息github-search-repos- 使用高级选项搜索存储库github-get-issues- 根据过滤条件检索仓库问题mcp-get-metrics- 查看服务器性能指标和缓存统计信息mcp-clear-cache- 清除响应缓存以获取最新数据
先决条件
- Node.js 18及以上版本
- npm 或 yarn
- GitHub 个人访问令牌(用于认证请求)
安装
快速入门(5分钟)
-
安装依赖项
npm install -
获取GitHub令牌 (可选,但建议)
- 快速链接:https://github.com/settings/tokens
- 所需范围:
public_repo或者repo
-
配置环境
# Edit .env and add your GITHUB_TOKEN GITHUB_TOKEN=your_github_personal_access_token_here -
运行服务器
npm start
你将会看到什么
Starting Universal API Gateway MCP v1.0.0...
GitHub API: Configured ✅
Universal API Gateway MCP Server is running!
提示: 即使没有GitHub令牌,您也可以访问公共仓库(但会受到速率限制)
📊 性能与监控
缓存系统
- **智能TTL(传输门逻辑/三态逻辑,具体含义根据上下文确定)**根据数据类型自动调整缓存时长
- LRU(最近最少使用)驱逐策略将大部分相关数据保留在内存中
- 内存优化通过自动清理防止内存泄漏
- 命中率追踪实时监控缓存效率
性能指标
使用 mcp-get-metrics 查看工具:
- 总请求次数和成功率
- 平均响应时间
- 缓存命中率和内存使用情况
- 误差分布和模式
- 服务器运行时间统计
缓存管理
- 使用
mcp-clear-cache强制获取最新数据 - 自动清理过期条目
- 内存使用监控和警报
- 性能影响追踪
配置
环境变量
| 变量 | 必需 | 描述 |
|---|---|---|
GITHUB_TOKEN |
推荐 | GitHub 个人访问令牌,用于认证请求 |
WEATHER_API_KEY 未来 |
OpenWeatherMap API密钥 | |
NEWS_API_KEY |
未来 | NewsAPI密钥 |
LOG_LEVEL |
可选 | 日志级别(info,debug,error) |
CACHE_TTL |
可选 | 缓存存活时间(毫秒) |
API配置
服务器使用 src/config/apis.json 配置API端点、速率限制和重试策略:
{
"github": {
"baseUrl": "https://api.github.com",
"authType": "token",
"rateLimit": {
"requests": 5000,
"window": 3600000
},
"timeout": 10000,
"retries": 3
}
}
使用示例
获取用户资料
// Tool: github-get-user
{
"username": "octocat"
}
列出用户仓库
// Tool: github-list-repos
{
"username": "microsoft",
"type": "owner",
"sort": "stars",
"direction": "desc",
"perPage": 10
}
搜索存储库
// Tool: github-search-repos
{
"query": "language:javascript topic:react",
"sort": "stars",
"order": "desc",
"perPage": 20
}
获取仓库详细信息
// Tool: github-get-repo
{
"repository": "microsoft/vscode"
}
获取仓库问题
// Tool: github-get-issues
{
"repository": "facebook/react",
"state": "open",
"labels": "bug,help wanted",
"sort": "created",
"direction": "desc"
}
建筑学
项目结构
src/
├── apis/ # API integration modules
│ └── github.js # GitHub API implementation
├── auth/ # Authentication strategies (future)
├── config/ # Configuration management
│ ├── apis.json # API endpoint configurations
│ └── settings.js # Environment and app settings
├── utils/ # Utility modules
│ ├── httpClient.js # HTTP client with retries
│ ├── errorHandler.js # Error handling utilities
│ └── validator.js # Input validation
└── index.js # Main MCP server
关键组件
HttpClient
- 自动重试,采用指数退避策略
- 速率限制执行
- 多重认证策略
- 请求/响应日志记录
错误处理
- 为不同场景定制错误类型
- 优雅降级
- 详细的错误信息
- API特定错误映射
验证
- 输入净化(或输入验证与清理)
- 类型检查
- 格式验证(GitHub用户名、仓库名等)
- 以安全为重点的验证
发展
在开发模式下运行
npm run dev
测试
npm test
代码检查(或代码格式化、代码规范检查)
npm run lint
安全考虑因素
- API令牌存储在环境变量中
- 输入验证可防止注入攻击
- 速率限制防止滥用
- 错误信息不会泄露敏感信息
- 请求超时可防止连接挂起
性能特点
- 内置缓存层(可配置TTL)
- HTTP请求的连接池
- 高效的分页处理
- 注重内存的数据结构
- 请求去重
路线图
第二阶段 - 额外的API
- 天气API集成(OpenWeatherMap)
- 新闻API集成(NewsAPI)
- [ ] JSONPlaceholder(用于测试/演示)
第三阶段 - 高级功能
- [ ] Redis 缓存
- [ ] 指标与监控
- [ ] 健康检查端点
- [ ] 插件架构
第四阶段 - DevOps(开发与运维)
- [ ] Docker 容器化
- [ ] CI/CD流水线
- [ ] 性能基准
- [ ] 负载测试
贡献;做出贡献
- 为仓库创建分支(或“克隆仓库”)
- 创建一个特性分支(
git checkout -b feature/amazing-feature) - 提交您的更改(
git commit -m 'Add amazing feature') - 推送到分支(
git push origin feature/amazing-feature) - 提交一个拉取请求
许可证
这个项目遵循MIT许可证授权——详见 许可证 文件中详述。
致谢
- 模型上下文协议 针对MCP SDK(MCP软件开发工具包)
- GitHub API 用于全面的API文档
- 借鉴OpenAI的灵感与最佳实践
支持
如果您遇到任何问题或有任何疑问:
- 检查一下 问题 页面
- 创建一个包含详细信息的新问题
- 联系维护者
由……建造/创建 Shanky0007(这个名字或用户名在中文中没有直接对应的翻译,通常保持原样或根据具体语境稍作调整,这里直接保留原样)
