使用说明
CoinGecko MCP服务器🚀
全面 模型上下文协议(MCP) 服务器,通过CoinGecko API提供加密货币市场数据和交互式UI组件。该项目演示了遵循OpenAI SDK标准的图形界面的高级MCP开发。
🌟 特性
📊 核心工具
- 价格数据:实时加密货币价格和24小时变化
- 历史图表:具有可定制时间范围的历史价格数据
- 市场排名:市值最高的加密货币
- 趋势分析:当前流行的加密货币
- 全球统计:总体市场指标和统计数据
- 硬币搜索:查找特定加密货币的搜索功能
- 详细分析:全面的硬币信息和指标
- 汇率:各种货币的当前汇率
- 硬币比较:多种加密货币的并排比较
🎨 交互式UI组件
- 市场概述:包含关键指标的完整市场仪表板
- 热门旋转木马:热门加密货币的交互式旋转木马
- 加密货币图表:具有多个时间框架的动态价格图表
- 硬币比较:多种加密货币的可视化比较工具
- 响应式设计:支持深色/浅色主题的移动友好界面
🛠️ 技术特性
- 完全符合OpenAI SDK标准的MCP
- 带有Express.js服务器的RESTful API
- 基于React的交互式小部件
- TypeScript用于类型安全
- Zod模式验证
- 内置错误处理和验证
- Vercel部署就绪
🚀 快速开始
先决条件
- Node.js(v18或更高版本)
- npm或纱线
- CoinGecko API访问的互联网连接
地方发展
-
克隆存储库
git clone https://github.com/SergioDeIscarValera/coingeko-mcp-server.git cd coingeko-mcp-server -
安装依赖项
npm install -
构建UI组件
npm run build:ui -
启动开发服务器
npm run dev
服务器将在以下时间可用 http://localhost:3000/mcp
生产部署
Vercel部署
npm install
npm run build:ui
npm run build
vercel --prod
手动构建
npm run build
npm start
📡 API终点
MCP工具
| 工具 | 说明 | 参数 |
|---|---|---|
get_crypto_price |
获取加密货币的当前价格 | coin: string |
get_crypto_historical_chart |
获取历史价格数据 | coin: string, days: number |
get_trending_coins |
获取当前流行的加密货币 | 无 |
get_market_cap_rankings |
按市值获取顶级加密货币 | limit?: number, page?: number |
get_global_stats |
获取全球市场统计数据 | 无 |
search_coins |
搜索加密货币 | query: string |
get_coin_details |
获取详细的硬币信息 | coinId: string |
get_exchange_rates |
获取当前汇率 | 无 |
market_overview |
生成市场概览小部件 | 无 |
trending_dashboard |
生成趋势仪表板小部件 | 无 |
coin_comparison |
生成硬币比较小部件 | coins: string[] |
用户界面资源
| 资源 | URI | 描述 |
|---|---|---|
crypto-dashboard |
ui://widget/crypto-dashboard.html |
主加密仪表板 |
market-overview |
ui://widget/market-overview.html |
市场概览小部件 |
trending-dashboard |
ui://widget/trending-dashboard.html |
趋势硬币小部件 |
coin-comparison |
ui://widget/coin-comparison.html |
硬币比较小部件 |
🏗️ 建筑
项目结构
coingeko-mcp-server/
├── src/
│ ├── core/
│ │ └── types.ts # TypeScript interfaces
│ ├── services/
│ │ └── CoinGeckoService.ts # API service layer
│ ├── tools/ # MCP tools implementation
│ │ ├── GetCryptoPriceTool.ts
│ │ ├── GetCryptoHistoricalChartTool.ts
│ │ ├── MarketOverviewTool.ts
│ │ └── ... (11 total tools)
│ ├── resources/ # UI resource providers
│ │ ├── CryptoDashboardResource.ts
│ │ ├── MarketOverviewResource.ts
│ │ └── ... (4 total resources)
│ ├── prompts/
│ │ └── CryptoPrompts.ts # MCP prompts
│ ├── ui/ # React frontend
│ │ ├── src/
│ │ │ ├── main.tsx # App router
│ │ │ ├── MarketOverview.tsx
│ │ │ ├── TrendingCarousel.tsx
│ │ │ ├── CoinComparison.tsx
│ │ │ └── CryptoChart.tsx
│ │ └── package.json
│ └── server.ts # Main MCP server
├── package.json
└── tsconfig.json
技术栈
- 后端:Node.js、Express.js、TypeScript
- 前端:React 18、TypeScript、Vite
- 图表:Recharts
- 验证:佐德
- 主控程序:@modelcontextprotocol/sdk
- API:CoinGecko API v3
- 部署:Vercel
🔧 配置
环境变量
PORT=3000 # Server port (optional, defaults to 3000)
CoinGecko API
该项目使用CoinGecko API的免费层。不需要API密钥,但适用速率限制:
- 免费套餐每分钟10-30次通话
- 考虑升级以供生产使用
🤝 贡献
- 分叉存储库
- 创建要素分支(
git checkout -b feature/amazing-feature) - 提交您的更改(
git commit -m 'Add amazing feature') - 推到分支(
git push origin feature/amazing-feature) - 打开拉取请求
开发指南
- 遵循TypeScript的最佳实践
- 维护全面的类型定义
- 为新功能添加测试
- 遵循现有代码样式
- 根据需要更新文档
📄 脚本
| 脚本 | 描述 |
|---|---|
npm run dev |
使用UI构建启动开发服务器 |
npm run build |
为生产构建UI和服务器 |
npm run build:ui |
仅构建UI组件 |
npm start |
启动生产服务器 |
npm run vercel-build |
为Vercel部署构建 |
🐛 故障排除
常见问题
服务器无法启动
- 确保端口3000可用
- 检查Node.js版本(需要v18+)
- 验证是否已安装所有依赖项
UI组件未加载
- 跑
npm run build:ui启动服务器之前 - 检查浏览器控制台是否有错误
- 确保安装了React依赖项
API错误
- 检查互联网连接
- 验证CoinGecko API是否可访问
- 检查速率限制(免费层:30次通话/分钟)
📚 API文档
工具响应格式
所有工具都以以下格式返回响应:
{
"content": [
{
"type": "text",
"text": "AI-readable response"
}
],
"structuredContent": {
// Structured data for UI components
}
}
小部件集成
小部件根据以下内容自动检测其组件类型:
_meta.component刀具输出中的字段- 数据结构分析
- 回退到默认图表组件
🔐 安全
- 使用Zod模式进行输入验证
- 类型安全API响应
- 用于小部件安全的CSP标头
- 无敏感数据存储
- 限速意识
📈 演出
- 使用最少的API调用实现高效的数据获取
- 响应式UI组件
- 优化构建输出
- 使用Vite进行资产优化
- CDN就绪静态资产
📝 许可证
该项目根据MIT许可证获得许可。看 许可证 文件以获取详细信息。
🙏 致谢
🔗 链接
由以下材料制成❤️ 对于MCP社区