API网关服务

高性能模型上下文协议服务器,通过智能缓存和实时监控桥接Claude Desktop与多个API,提供统一访问、性能监控和高级错误处理。

  • by Shanky0007
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 Shanky0007/MCP-server

使用说明

通用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分钟)

  1. 安装依赖项

    npm install
    
  2. 获取GitHub令牌 (可选,但建议)

    • 快速链接:https://github.com/settings/tokens
    • 所需范围: public_repo 或者 repo
  3. 配置环境

    # Edit .env and add your GITHUB_TOKEN
    GITHUB_TOKEN=your_github_personal_access_token_here
    
  4. 运行服务器

    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流水线
  • [ ] 性能基准
  • [ ] 负载测试

贡献;做出贡献

  1. 为仓库创建分支(或“克隆仓库”)
  2. 创建一个特性分支(git checkout -b feature/amazing-feature)
  3. 提交您的更改(git commit -m 'Add amazing feature')
  4. 推送到分支(git push origin feature/amazing-feature)
  5. 提交一个拉取请求

许可证

这个项目遵循MIT许可证授权——详见 许可证 文件中详述。

致谢

支持

如果您遇到任何问题或有任何疑问:

  1. 检查一下 问题 页面
  2. 创建一个包含详细信息的新问题
  3. 联系维护者

由……建造/创建 Shanky0007(这个名字或用户名在中文中没有直接对应的翻译,通常保持原样或根据具体语境稍作调整,这里直接保留原样)