mcpField
M
MCP Crypto Server

MCP Crypto Server

本地服务
github.com/yanqinghao金融数据148 周前更新

关于 MCP Crypto Server

MCP Crypto Server 为 AI 应用提供加密货币行情、分析和新闻功能,结合 CCXT 交易所连接、TimescaleDB 历史数据存储及可配置的 RSS 新闻源。

主要功能

  1. 01实时和历史行情数据
  2. 02通过 CCXT 连接多个交易所
  3. 03市场趋势与技术分析
  4. 04加密新闻聚合与情绪分析
  5. 05可配置的 RSS 订阅

适用场景

  1. 01查询币种当前或历史价格
  2. 02分析市场趋势和指标
  3. 03查看某种币的新闻情绪
  4. 04汇总近期加密货币新闻

MCP 相关

向 MCP 客户端提供行情与新闻相关的工具、资源和提示词,包括价格数据、分析、新闻摘要及加密货币符号列表。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

MCP Crypto Server

基于 FastMCP、CCXT、TimescaleDB 和 RSS 订阅源集成构建的高性能加密货币市场数据与分析平台。

概述

MCP Crypto Server 是一个功能强大的平台,可提供实时加密货币市场数据、高级分析、大模型驱动的洞察和加密货币新闻聚合。它基于 Model Context Protocol(MCP)构建,能够与 AI 应用无缝集成,同时借助 CCXT 提供稳健的加密货币交易所连接能力,使用 TimescaleDB 存储时间序列数据,并通过 RSS 订阅源实时更新新闻。

主要功能

  • 实时市场数据:获取来自多个交易所的实时加密货币市场数据
  • 历史数据分析:查询和分析历史价格与成交量数据
  • 大模型集成:利用 AI 分析市场趋势并获取洞察
  • MCP 协议支持:使用 Model Context Protocol 轻松集成 AI 应用
  • 可扩展架构:凭借优化的性能处理大量请求
  • TimescaleDB 存储:高效存储和查询时间序列数据
  • 多交易所支持:通过 CCXT 连接各种加密货币交易所
  • 加密货币新闻聚合:收集并分析来自多个加密货币 RSS 订阅源的新闻
  • 新闻情绪分析:由 AI 驱动的加密货币新闻情绪分析
  • 自定义 RSS 订阅源订阅:配置和管理新闻来源

架构

┌─────────────────────────────────────────────────────────────────┐
│                      MCP Client Applications                     │
│   (Claude Desktop, Custom AI Applications, Analysis Tools)       │
└───────────────────────────────┬─────────────────────────────────┘
                                │
                                ▼
┌─────────────────────────────────────────────────────────────────┐
│                        FastMCP Server                            │
├─────────────┬─────────────────────┬────────────────┬────────────┤
│  Resources  │        Tools        │    Prompts     │  Schemas   │
│             │                     │                │            │
│ Market Data │  Market Analysis    │ Trading Rec.   │ Input/     │
│ Symbols     │  Price Data         │ Market Trend   │ Output     │
│ Historical  │  LLM Analysis       │ Analysis       │ Validation │
│ News Feed   │  News Analysis      │ News Impact    │            │
└─────────────┴─────────────────────┴────────────────┴────────────┘
                    │                      │
       ┌────────────┼──────────────────────┘
       │            │                │
       ▼            ▼                ▼
┌─────────────┐ ┌────────────┐ ┌────────────────────┐
│  Exchange   │ │    RSS     │ │  Database Service  │
│  Service    │ │  Service   │ │                    │
│             │ │            │ │    TimescaleDB     │
│     CCXT    │ │ Feed Parser│ │    Time-series     │
└─────────────┘ └────────────┘ └────────────────────┘

技术栈

  • FastMCP:基于 Model Context Protocol 的服务框架
  • CCXT:用于连接加密货币交易所的库
  • TimescaleDB:PostgreSQL 的时间序列数据库扩展
  • Python:核心编程语言
  • uv:用于依赖管理的高性能 Python 包管理器
  • feedparser:RSS 订阅源解析库
  • NLTK/spaCy:用于新闻分析的自然语言处理工具

项目结构

mcp-crypto-server/
├── main.py                   # Main entry point with FastMCP server definition
├── config/                   # Configuration directory
│   ├── __init__.py
│   ├── settings.py           # Application settings and configuration
│   └── logging_config.py     # Logging configuration
├── resources/                # MCP resources
│   ├── __init__.py
│   ├── market_data.py        # Market data resources
│   ├── symbols.py            # Cryptocurrency symbols resources
│   ├── schemas.py            # Schema resources for the client
│   └── news.py               # News feed resources and endpoints
├── tools/                    # MCP tools
│   ├── __init__.py
│   ├── market_analysis.py    # Market analysis tools
│   ├── price_data.py         # Price retrieval tools
│   ├── llm_analysis.py       # LLM integration for data analysis
│   └── news_analysis.py      # News analysis and sentiment tools
├── services/                 # Service integrations
│   ├── __init__.py
│   ├── exchange_service.py   # Exchange API integration
│   ├── database_service.py   # Database service for storing data
│   ├── llm_service.py        # LLM service integration
│   └── news_service.py       # RSS feed management and processing
├── models/                   # Data models
│   ├── __init__.py
│   ├── market_data.py        # Data models for market data
│   ├── analysis.py           # Models for analysis results
│   └── news.py               # Models for news data and analysis
├── utils/                    # Utility functions
│   ├── __init__.py
│   ├── formatters.py         # Data formatting utilities
│   ├── validators.py         # Input validation utilities
│   └── feed_utils.py         # RSS feed utility functions
├── prompts/                  # MCP prompts
│   ├── __init__.py
│   ├── analysis_prompts.py   # Prompt templates for analysis
│   └── news_prompts.py       # Prompt templates for news analysis
├── pyproject.toml            # Project configuration and dependencies
└── uv.lock                   # Lock file for dependencies managed by uv

安装

先决条件
  • Python 3.9+
  • Docker 和 Docker Compose
  • uv 包管理器
设置
  1. 克隆仓库:

    git clone https://github.com/yourusername/mcp-crypto-server.git
    cd mcp-crypto-server
    
  2. 如果尚未安装 uv,请先安装:

    curl -LsSf https://astral.sh/uv/install.sh | sh
    
  3. 创建虚拟环境并安装依赖:

    uv venv
    uv pip sync
    
  4. 使用 Docker 设置 TimescaleDB:

    docker-compose up -d timescaledb
    
  5. 配置环境变量:

    cp .env.example .env
    # Edit .env with your configuration settings
    

配置

编辑 config/settings.py 文件以自定义应用:

  • 数据库连接参数
  • 交易所 API 密钥和设置
  • MCP 服务配置
  • 大模型服务设置
  • RSS 订阅源订阅设置
  • 新闻来源配置
  • 日志级别和输出
配置 RSS 订阅源

系统预置了加密货币新闻来源,但你可以自定义这些来源:

# In config/settings.py

RSS_FEEDS = [
    {
        "name": "CoinDesk",
        "url": "https://www.coindesk.com/arc/outboundfeeds/rss/",
        "update_interval": 900,  # 15 minutes
        "categories": ["news", "markets", "business"]
    },
    {
        "name": "Cointelegraph",
        "url": "https://cointelegraph.com/rss",
        "update_interval": 600,  # 10 minutes
        "categories": ["news", "analysis"]
    },
    # Add your custom RSS feeds here
]

用法

启动服务
uv run python main.py

服务默认启动后,可通过 MCP 客户端连接。

MCP 功能

该服务提供以下 MCP 功能:

工具
  • market_analysis - 分析市场趋势并提供技术指标
  • price_data - 获取特定加密货币的实时或历史价格数据
  • llm_analysis - 生成由 AI 驱动的市场洞察和预测
  • news_analysis - 分析新闻情绪及其对特定币种的影响
  • news_summary - 生成近期加密货币新闻摘要
资源
  • symbols://list - 获取所有可用的加密货币符号
  • market_data://{symbol} - 获取特定符号的实时市场数据
  • historical_data://{symbol}?timeframe={timeframe}&start={start}&end={end} - 根据参数获取历史数据
  • news://recent - 获取所有来源的最新新闻
  • news://{source} - 获取特定来源的新闻
  • news://by-coin/{symbol} - 获取与特定加密货币相关的新闻
提示词
  • analyze_market_trend - 用于分析市场趋势的预定义提示词
  • generate_trading_recommendation - 根据当前市场数据生成交易建议
  • analyze_news_impact - 分析近期新闻可能对加密货币价格造成的影响
在 MCP 客户端中使用新闻功能
from mcp import Client

# Get recent news for a specific cryptocurrency
client = Client("http://localhost:8000")
news_response = await client.query(
    inputs=[{"symbol": "BTC/USD"}],
    resources=["news://by-coin/BTC"]
)
print(news_response.outputs)

# Analyze news sentiment and potential market impact
analysis_response = await client.query(
    inputs=[{"symbol": "BTC/USD", "timeframe": "24h"}],
    tools=["news_analysis"]
)
print(analysis_response.outputs)

开发

添加新的交易所
  1. 更新 services/exchange_service.py 文件,添加新交易所的配置
  2. 实现所需的交易所专属处理逻辑
  3. 更新 resources/symbols.py 中的可用交易对
添加新的 RSS 源
  1. 更新 config/settings.py 文件,添加新的源配置
  2. 如果该源需要特殊解析,请扩展 services/news_service.py,添加自定义处理器
  3. (可选)在 resources/news.py 中添加源专属端点
# Example of adding a custom parser in services/news_service.py

def parse_custom_feed(feed_data, source_config):
    """Custom parser for a specific news source"""
    articles = []
    for entry in feed_data.entries:
        # Custom parsing logic
        articles.append({
            "title": entry.title,
            "url": entry.link,
            "published": parse_date(entry.published),
            "summary": entry.summary,
            "source": source_config["name"]
        })
    return articles
创建自定义工具
  1. 在 tools/ 目录中添加新文件
  2. 使用 FastMCP 装饰器实现工具逻辑:
    @mcp.tool()
    def your_tool_name(param1: str, param2: int) -> dict:
        """Tool description"""
        # Implementation
        return result
    
添加新资源
  1. 在相应的资源文件中创建资源函数:
    @mcp.resource("resource://{parameter}")
    def get_resource(parameter: str) -> str:
        """Resource description"""
        # Implementation
        return data
    
使用 uv 管理依赖项

该项目使用 uv 进行快速高效的依赖项管理:

  1. 添加新依赖项:

    uv add package_name
    
  2. 更新所有依赖项:

    uv pip sync
    
  3. 生成锁定文件:

    uv pip compile -o uv.lock
    

性能注意事项

  • 应用利用 TimescaleDB 的时间序列优化,高效查询历史数据
  • 根据数据量考虑使用具有适当分块间隔的 TimescaleDB 超表
  • 为频繁访问的数据实施适当的缓存策略
  • 对于 RSS 源,请根据源的更新频率调整轮询间隔,以尽量减少不必要的请求
  • 考虑为 RSS 源更新实现后台任务调度器,避免阻塞主应用线程
  • 通过在负载均衡器后部署多个实例实现横向扩展

许可证

MIT 许可证

致谢

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。