Crypto Price Tracker MCP Server について
暗号資産の価格を追跡する、Python と FastMCP 製のサーバーです。ウォッチリストの管理や Google Sheets でのデータ活用を行う利用者向けで、CoinGecko から価格を取得し、シート共有や値上がり・値下がり分析にも対応します。Docker で実行できます。
主な機能
- 01暗号資産のウォッチリスト管理
- 02CoinGecko から最新価格を取得
- 03Google Sheets への出力と共有
- 04シート内の値上がり・値下がり分析
- 05プロンプト生成ツールの提供
- 06Docker コンテナで実行
活用シーン
- 01追跡する暗号資産の登録と確認
- 02ウォッチリスト銘柄の価格更新
- 03価格データの出力と共有
- 04シート内の最大上昇・下落銘柄の特定
MCP 対応
ウォッチリスト管理、価格取得、Google Sheets への出力、実績分析の MCP ツールとプロンプトを stdio 経由で公開します。GitHub Copilot などの MCP クライアントから利用できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
暗号資産価格トラッカー MCP サーバー
暗号資産の価格を追跡し、ウォッチリストを管理し、データを Google Sheets にエクスポートできる Python ベースのサーバーアプリケーションです。このサーバーは FastMCP フレームワークを使用して構築されており、Docker を使用してコンテナー化アプリケーションとして実行するように設計されています。
目次
機能
- ウォッチリスト管理:
- 暗号資産を個人用ウォッチリストに追加します。
- ウォッチリストから暗号資産を削除します。
- 現在のウォッチリストを表示します。
- 価格追跡:
- ウォッチリスト内のすべてのコインの最新価格を取得します(CoinGecko API を使用)。
- Google Sheets との統合:
- ウォッチリストと価格データを Google スプレッドシートにエクスポートします。
- 指定したユーザーと Google スプレッドシートを共有します。
- Google スプレッドシート内のデータからパフォーマンス(最大の上昇/下落)を分析します。
- MCP との連携:
- stdio 経由の MCP(Model Context Protocol)による連携のためのツールとプロンプトを提供します。
技術スタック
- Python 3.12+
- Docker: コンテナー化に使用します。
- FastMCP(
mcp[cli]): サーバーとそのツールを構築するためのフレームワークです。 - uv: Docker ビルド内での Python パッケージ管理に使用します。
- httpx: 暗号資産 API への HTTP リクエストに使用します。
- Google API クライアントライブラリ: Google Sheets との連携に使用します。
google-api-python-clientgoogle-authgoogle-auth-oauthlibgoogle-auth-httplib2
前提条件
- Docker: インストールされ、実行されている必要があります。Docker をインストールしてください。
- Google Cloud プロジェクトとサービスアカウント: Google Sheets との統合に必要です。
- Google Cloud Platform プロジェクト。
- プロジェクトで Google Sheets API が有効になっていること。
- Google スプレッドシートを編集する権限を持つサービスアカウント。
- サービスアカウントの JSON キーファイル(
google_credentials.jsonと呼びます)。
インストール
1. リポジトリをクローンする
まず、このリポジトリをローカルマシンにクローンします。
git clone [email protected]:RoystonDAlmeida/crypto-price-tracker-mcp.git
cd crypto-price-tracker-mcp/
2. Python 仮想環境を作成して有効化する
プロジェクトの依存関係を分離するため、仮想環境の使用を強くおすすめします。このプロジェクトでは Python 3.12+ が必要です。
# Navigate to your project directory if you aren't already there
# cd crypto-price-tracker-mcp/
# Create a virtual environment (e.g., named .venv)
python3.12 -m venv .venv
# Activate the virtual environment:
# On macOS and Linux:
source .venv/bin/activate
# On Windows (Git Bash or WSL):
# source .venv/Scripts/activate
# On Windows (Command Prompt):
# .venv\Scripts\activate.bat
# On Windows (PowerShell):
# .venv\Scripts\Activate.ps1
有効化すると、シェルプロンプトに有効な環境が表示されます(例:(.venv))。
3. 依存関係をインストールする
このプロジェクトでは Python パッケージ管理に uv を使用します(「技術スタック」に記載されており、Dockerfile でも使用されています)。依存関係は pyproject.toml で定義されています。仮想環境が有効で、プロジェクトのルートディレクトリにいることを確認してから、次を実行します。
# Ensure uv is installed (e.g., pip install uv, or follow uv's installation guide)
# Then, install the project in editable mode with its dependencies:
uv pip install -e .
これにより、crypto-price-tracker-mcp パッケージと必要なライブラリが仮想環境にインストールされます。
4. Google Sheets API の認証情報を取得する
- Google Cloud Console にアクセスします。
- 新しいプロジェクトを作成するか、既存のプロジェクトを選択します。
- プロジェクトで「Google Sheets API」を有効にします。
- サービスアカウントを作成します。
- 「IAM & Admin」>「Service Accounts」に移動します。
- 「Create Service Account」をクリックします。
- 名前(例:「crypto-sheets-editor」)を入力します。
- 「Done」をクリックします。
- サービスアカウントの JSON キーを作成します。
- リストから、作成したサービスアカウントを見つけます。
- サービスアカウントの横にある三点リーダー(Actions)をクリックし、「Manage keys」を選択します。
- 「Add Key」>「Create new key」をクリックします。
- キーの種類として「JSON」を選択し、「Create」をクリックします。
- JSON ファイルがダウンロードされます。このファイルの名前を
google_credentials.jsonに変更します。このファイルをプロジェクトフォルダーのルートに追加します。
5. Docker イメージをビルドする
仮想環境でプロジェクトのルートディレクトリ(Dockerfile がある場所)に移動し、次を実行します。
docker build -t crypto-price-tracker .
6. Docker コンテナーを実行する
サーバーを実行するには、google_credentials.json ファイルをコンテナーにマウントする必要があります。
Docker を直接使用する
docker run -it --rm \
-v /path/to/your/local/google_credentials.json:/app/google_credentials.json \
crypto-price-tracker
/path/to/your/local/google_credentials.json を、ホストマシン上にある google_credentials.json ファイルの実際の絶対パスに置き換えてください。
設定パラメーター
-it:TTY を使用した対話モードでコンテナーを実行します。stdio 通信に必要です。
--rm:コンテナーの終了時に自動的に削除します。
-v ...:ローカルの認証情報ファイルを、コンテナー内の /app/google_credentials.json にマウントします。アプリケーションはデフォルトでこの場所のファイルを参照します。
MCP クライアントとの連携(GitHub Copilot)
MCP クライアント(GitHub Copilot)で入力したプロンプトを通じて、このコンテナー化された MCP サーバーを操作するため、VSCode の settings.json(ユーザー設定を開く)に次の設定を追加します。
{
"mcpServers": {
"crypto-price-tracker": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-v",
"<local_path>/google_credentials.json:/app/google_credentials.json",
"-e",
"GOOGLE_CREDENTIALS_PATH=/app/google_credentials.json",
"crypto-price-tracker-mcp"
]
}
}
}
GitHub Copilot を Agent モードで起動すると、settings.json で指定されたサーバーが起動します。コンソール出力を確認し、ツールが正常に検出されたことを確認してください。
前提条件
まず、正しいタグを付けて Docker イメージをビルドしてください。
docker build -t crypto-price-tracker-mcp .
設定
重要な注意事項:
<local_path>を、ホストマシン上にあるgoogle_credentials.jsonファイルの実際の絶対パスに置き換えてください。- MCP クライアントとの連携では、通常、完全な TTY ではなく標準入力(stdin)のみが必要なため、
-itではなく-iフラグを使用します。 - コンテナー内のアプリケーションが認証情報ファイルの場所を認識できるよう、例では環境変数
GOOGLE_CREDENTIALS_PATHを明示的に設定しています。 - **通信方法:**サーバーは stdio(標準入力/標準出力)で通信するため、GitHub Copilot などの MCP クライアントとシームレスに連携できます。
動作の仕組み
サーバーは stdio(標準入力/標準出力)で通信するため、GitHub Copilot などの MCP クライアントと互換性があります。これにより、自然言語のプロンプトを通じてコンテナー化された MCP サーバーを操作でき、サーバーはバックグラウンドで暗号資産の価格追跡と Google Sheets との連携を処理します。
/path/to/your/local/google_credentials.json を、ホストマシン上にある google_credentials.json ファイルの実際の絶対パスに置き換えてください。
-it:TTY を使用した対話モードでコンテナーを実行します。stdio 通信に必要です。--rm:コンテナーの終了時に自動的に削除します。-v ...:ローカルの認証情報ファイルを、コンテナー内の/app/google_credentials.jsonにマウントします。アプリケーションはデフォルトでこの場所のファイルを参照します。
サーバーは stdio(標準入力/標準出力)で通信します。MCP クライアント(GitHub Copilot)を使って操作できます。
設定
- Google 認証情報:
- アプリケーションは、デフォルトでコンテナ内の
/app/google_credentials.jsonにある Google Sheets API の認証情報を探します。 - コンテナの実行時に
GOOGLE_CREDENTIALS_PATH環境変数を設定すると、このパスを上書きできます(例:-e GOOGLE_CREDENTIALS_PATH=/custom/path/creds.json)。
- アプリケーションは、デフォルトでコンテナ内の
使用方法
サーバーは stdio 経由で MCP プロトコルを使用して動作します。コンテナを起動すると、MCP リクエストを受け付ける準備が整います。
利用可能なツール
サーバーでは、次のツールを呼び出せます。
get_watchlist:追跡対象の暗号資産の現在のウォッチリストを取得します。add_to_watchlist(id: str):暗号資産(例:「bitcoin」)をウォッチリストに追加します。remove_from_watchlist(id: str):暗号資産をウォッチリストから削除します。fetch_prices:ウォッチリスト内のすべてのコインの最新価格を取得します。export_to_sheets(sheet_name: str, user_email: str):追跡対象の価格データをすべて、指定したsheet_nameの Google Sheet にエクスポートし、user_emailと共有します。get_sheet_performance_leaders(sheet_name: str):指定した Google Sheet の「Change_24h」列に基づいて、最も上昇した暗号資産と最も下落した暗号資産を特定します。
プロンプト生成ツールの使用
MCP クライアント(GitHub Copilot など)がリクエストの作成やユーザーへのアクションの提案を行えるように、サーバーはいくつかの「プロンプト生成」ツールも提供しています。これらのツールを呼び出すと、自然言語の文字列が返されます。以下に、これらのツールと生成されるプロンプト、その目的を説明します。
-
get_watchlist_prompt()- 生成されるプロンプト(返されるレスポンス):
"Please fetch the watchlist." - 呼び出されるツール(確認後):
get_watchlist - 目的: ユーザーの現在のウォッチリストの取得と表示を提案、または開始します。
- 生成されるプロンプト(返されるレスポンス):
-
add_coin_prompt(coin_id: str)- 入力例:
coin_id="ethereum" - 生成されるプロンプト(返されるレスポンス):
"Please add ETHEREUM to my watchlist." - 呼び出されるツール(確認後):
add_to_watchlist(指定されたcoin_idを使用) - 目的: 特定の暗号資産をウォッチリストに追加するリクエストの作成を支援します。
- 入力例:
-
remove_coin_prompt(coin_id: str)- 入力例:
coin_id="bitcoin" - 生成されるプロンプト(返されるレスポンス):
"Please remove bitcoin from my watchlist." - 呼び出されるツール(確認後):
remove_from_watchlist(指定されたcoin_idを使用) - 目的: 特定の暗号資産をウォッチリストから削除するリクエストの作成を支援します。
- 入力例:
-
get_prices_prompt()- 生成されるプロンプト(返されるレスポンス):
"Please fetch the latest prices for all cryptocurrencies in my watchlist." - 呼び出されるツール(確認後):
fetch_prices - 目的: ウォッチリスト内のすべてのコインの現在の市場価格を更新して表示するリクエストを開始します。
- 生成されるプロンプト(返されるレスポンス):
-
export_prompt(sheet_name: str, user_email: str)- 入力例:
sheet_name="Crypto Portfolio"、user_email="[email protected]" - 生成されるプロンプト(返されるレスポンス):
"Please export all tracked price data to my Google Sheet 'Crypto Portfolio' and share it with [email protected]." - 呼び出されるツール(確認後):
export_to_sheets(sheet_nameとuser_emailを使用) - 目的: ウォッチリストと価格データを Google Sheet にエクスポートして共有するリクエストを容易にします。
- 入力例:
-
get_sheet_performance_leaders_prompt(sheet_name: str)- 入力例:
sheet_name="Crypto Analysis" - 生成されるプロンプト(返されるレスポンス):
"From the Google Sheet named 'Crypto Analysis', can you tell me which crypto had the highest gain and which one had the biggest loss recently?" - 呼び出されるツール(確認後):
get_sheet_performance_leaders(sheet_nameを使用) - 目的: 指定された Google Sheet からパフォーマンス分析(最大の上昇・下落)を依頼する際に役立ちます。
- 入力例:
MCP クライアントは通常、生成されたプロンプトを使ってユーザーを案内するか、ユーザーの確認後に主要なアクションツール(add_to_watchlist(id: str)、get_watchlist() など)のいずれかへの呼び出しを直接作成します。
データの永続化
watchlist.json:- ユーザーのウォッチリストは、
watchlist.jsonという名前のファイルに保存されます。 - Docker コンテナ内では、このファイルは
/app/watchlist.jsonに作成されます。
- ユーザーのウォッチリストは、
貢献
貢献を歓迎しており、大変ありがたく思います!このプロジェクトに貢献する場合は、以下の一般的な手順に従ってください。
-
リポジトリをフォークする: まず、メインリポジトリを自分の GitHub アカウントにフォークします。
-
フォークをクローンする: フォークしたリポジトリをローカルマシンにクローンします:
git clone https://github.com/YOUR_USERNAME/crypto-price-tracker-mcp.git cd crypto-price-tracker-mcp -
開発環境をセットアップする: インストールの手順に従って、仮想環境の作成や依存関係のインストールなど、ローカルの開発環境をセットアップします。
-
新しいブランチを作成する: 機能追加またはバグ修正用に新しいブランチを作成します。内容がわかる名前を付けてください(例:
feature/add-new-exchangeまたはfix/price-fetch-error)。git checkout -b your-branch-name -
変更を加える: 機能を実装するか、バグを修正します。コードがプロジェクトのコーディングスタイルと規約に準拠していることを確認してください。
-
変更をテストする: (該当する場合)変更内容に対するテストを追加または更新し、すべてのテストが成功することを確認します。
-
変更をコミットする: 明確で簡潔なコミットメッセージを付けて、変更をコミットします。
git add . git commit -m "feat: Describe your feature or fix"(コミットメッセージには Conventional Commits の使用を検討してください。)
-
フォークにプッシュする: 変更を GitHub 上のフォークしたリポジトリにプッシュします。
git push origin your-branch-name -
プルリクエスト(PR)を作成する: GitHub で元のリポジトリを開き、フォークしたブランチからメインリポジトリの
main(またはmaster)ブランチに対するプルリクエストを作成します。PR には変更内容を明確に説明してください。
ライセンス
このプロジェクトはMIT Licenseのライセンスに基づいています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。