my-mcp-server について
my-mcp-serverは、READMEではMCP Crypto Serverと呼ばれ、取引所の市場データ、履歴データ、暗号資産ニュースをもとに分析を提供します。暗号資産市場の調査向けに、CCXT、TimescaleDB、RSSを組み合わせ、市場・ニュース関連のツール、リソース、プロンプトを公開します。
主な機能
- 01複数取引所のリアルタイムデータ取得
- 02価格と出来高の履歴検索
- 03市場動向とテクニカル指標の分析
- 04暗号資産RSSニュースの集約
- 05ニュースのセンチメントと影響の分析
活用シーン
- 01特定の暗号資産のリアルタイムデータを確認
- 02価格や出来高の推移を調査
- 03最近のニュースを要約し市場への影響を評価
MCP 対応
このMCPサーバーは、市場分析、価格データ、LLM分析、ニュース分析のツールをクライアントに提供します。市場、履歴、シンボル、ニュースのリソースと、事前定義されたプロンプトも公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP Crypto Server
FastMCP、CCXT、TimescaleDB、RSS フィードとの連携により構築された、高性能な暗号資産の市場データ・分析プラットフォームです。
概要
MCP Crypto Server は、リアルタイムの暗号資産市場データ、高度な分析、LLM を活用したインサイト、暗号資産ニュースの集約機能を提供する強力なプラットフォームです。Model Context Protocol(MCP)を基盤とし、AI アプリケーションとのシームレスな連携を可能にするとともに、CCXT による堅牢な暗号資産取引所との接続、TimescaleDB を使用した時系列データの保存、RSS フィードを通じたリアルタイムのニュース更新を提供します。
主な機能
- リアルタイムの市場データ:複数の取引所から暗号資産のライブ市場データにアクセスできます
- 履歴データの分析:過去の価格や出来高データを照会・分析できます
- LLM との連携: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 パッケージマネージャー
セットアップ
-
リポジトリをクローンします:
git clone https://github.com/yourusername/mcp-crypto-server.git cd mcp-crypto-server -
まだインストールしていない場合は、uv をインストールします:
curl -LsSf https://astral.sh/uv/install.sh | sh -
仮想環境を作成し、依存関係をインストールします:
uv venv uv pip sync -
Docker を使用して TimescaleDB をセットアップします:
docker-compose up -d timescaledb -
環境変数を設定します:
cp .env.example .env # Edit .env with your configuration settings
設定
config/settings.py ファイルを編集して、アプリケーションをカスタマイズします:
- データベース接続パラメーター
- 取引所の API キーと設定
- MCP サーバーの設定
- LLM サービスの設定
- 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)
開発
新しい取引所の追加
services/exchange_service.pyファイルを更新し、新しい取引所の設定を追加します- 必要な取引所固有の処理を実装します
resources/symbols.py内の利用可能なシンボルを更新します
新しい RSS フィードソースの追加
config/settings.pyファイルを更新し、新しいフィードの設定を追加します- フィードに特別な解析が必要な場合は、
services/news_service.pyを拡張してカスタムハンドラーを追加します - (任意)
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
カスタムツールの作成
tools/ディレクトリに新しいファイルを追加します- FastMCP デコレーターを使用して、ツールのロジックを実装します:
@mcp.tool() def your_tool_name(param1: str, param2: int) -> dict: """Tool description""" # Implementation return result
新しいリソースの追加
- 適切なリソースファイルにリソース関数を作成します:
@mcp.resource("resource://{parameter}") def get_resource(parameter: str) -> str: """Resource description""" # Implementation return data
uv での依存関係の管理
このプロジェクトでは、依存関係をすばやく効率的に管理するために uv を使用しています:
-
新しい依存関係を追加します:
uv add package_name -
すべての依存関係を更新します:
uv pip sync -
ロックファイルを生成します:
uv pip compile -o uv.lock
パフォーマンスに関する考慮事項
- アプリケーションでは、TimescaleDB の時系列最適化を活用し、履歴データのクエリを効率化しています
- データ量に応じて適切なチャンク間隔を設定し、TimescaleDB のハイパーテーブルを使用することを検討してください
- 頻繁にアクセスされるデータには、適切なキャッシュ戦略を実装してください
- RSS フィードでは、不要なリクエストを最小限に抑えるため、ソースの更新頻度に応じてポーリング間隔を調整してください
- メインアプリケーションのスレッドがブロックされないよう、RSS フィードの更新にバックグラウンドタスクスケジューラーを導入することを検討してください
- ロードバランサーの背後に複数のインスタンスをデプロイし、水平スケーリングを行ってください
ライセンス
謝辞
- FastMCP - Model Context Protocol サーバーの実装
- Model Context Protocol - AI アプリケーション向けの効率的なプロトコル
- CCXT - 暗号資産取引所向けの取引ライブラリ
- TimescaleDB - PostgreSQL 向けの時系列データベース
- uv - 高性能な Python パッケージマネージャー
- feedparser - Python RSS フィード解析ライブラリ
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。