加密货币市场数据服务

一个基于CoinGecko API的加密货币市场数据服务,提供实时价格、历史图表、市场排名和交互式UI组件,适用于加密货币分析和交易场景。

  • by SergioDeIscarValera
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 SergioDeIscarValera/coingeko-mcp-server

使用说明

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访问的互联网连接

地方发展

  1. 克隆存储库

    git clone https://github.com/SergioDeIscarValera/coingeko-mcp-server.git
    cd coingeko-mcp-server
    
  2. 安装依赖项

    npm install
    
  3. 构建UI组件

    npm run build:ui
    
  4. 启动开发服务器

    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次通话
  • 考虑升级以供生产使用

🤝 贡献

  1. 分叉存储库
  2. 创建要素分支(git checkout -b feature/amazing-feature)
  3. 提交您的更改(git commit -m 'Add amazing feature')
  4. 推到分支(git push origin feature/amazing-feature)
  5. 打开拉取请求

开发指南

  • 遵循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社区