mcpField
C
coingecko-mcp-server

coingecko-mcp-server

ローカル
github.com/cyanheads金融データ12 週間前に更新

coingecko-mcp-server について

coingecko-mcp-serverは、暗号資産の調査向けにCoinGeckoの価格、履歴データ、トレンド、コイン情報を提供します。名称やティッカーをCoinGecko IDに変換し、価格、マーケット、チャートの検索につなげられます。

主な機能

  1. 01コインを検索してCoinGecko IDを特定
  2. 02価格とマーケットデータを一括取得
  3. 03時価総額や取引量順のマーケット一覧
  4. 04コイン情報と過去のチャートを確認
  5. 05トレンドコインと世界市場の概況を取得

活用シーン

  1. 01複数コインの現在価格と市場指標を比較
  2. 02コインの過去価格、取引量、時価総額を確認
  3. 0324時間のトレンドコインと市場全体の変化を追跡

MCP 対応

STDIOとStreamable HTTPに対応し、MCP経由で8つのツール、2つのリソース、1つのプロンプトを提供します。クライアントはCoinGeckoの市場データを照会でき、調査プロンプトでコイン検索、情報、チャート、世界市場データを連携できます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"cyanheads-coingecko": {
"command": "npx",
"args": [
"-y",
"@cyanheads/coingecko-mcp-server"
],
"env": {
"COINGECKO_API_KEY": "<COINGECKO_API_KEY>",
"MCP_LOG_LEVEL": "<MCP_LOG_LEVEL>",
"MCP_TRANSPORT_TYPE": "<MCP_TRANSPORT_TYPE>",
"MCP_HTTP_HOST": "<MCP_HTTP_HOST>",
"MCP_HTTP_PORT": "<MCP_HTTP_PORT>",
"MCP_HTTP_ENDPOINT_PATH": "<MCP_HTTP_ENDPOINT_PATH>",
"MCP_AUTH_MODE": "<MCP_AUTH_MODE>"
}
}
}
}
起動コマンドnpx -y @cyanheads/coingecko-mcp-server
設定が必要な環境変数
COINGECKO_API_KEYシークレットOptional CoinGecko Demo API key. Present → sent as the x-cg-demo-api-key header for the dedicated Demo tier (10k/mo, 100 rpm). Absent → keyless public tier.
MCP_LOG_LEVELSets the minimum log level for output (e.g., 'debug', 'info', 'warn').
MCP_TRANSPORT_TYPESelects the HTTP transport.
MCP_HTTP_HOSTThe hostname for the HTTP server.
MCP_HTTP_PORTThe port to run the HTTP server on.
MCP_HTTP_ENDPOINT_PATHThe endpoint path for the MCP server.
MCP_AUTH_MODEシークレットAuthentication mode to use: 'none', 'jwt', or 'oauth'.

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@cyanheads/coingecko-mcp-server0.2.0

ツール

8

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
querystringはい解決するコイン名またはティッカーシンボル(例:"bitcoin"、"ETH"、"solana")。

詳細

@cyanheads/coingecko-mcp-server

15,000 種以上の暗号資産の市場データ — CoinGecko 経由で価格、履歴、トレンド、詳細なコインのメタデータを取得できます。

8 個のツール • 2 個のリソース • 1 個のプロンプト

Version License Docker MCP SDK npm TypeScript Bun

Install in Claude Desktop Install in Cursor Install in VS Code

Framework


概要

CoinGecko の暗号資産市場データ — 15,000 種以上のコインの価格、ランキング、過去のチャート、詳細なプロフィールを取得できます。名前またはティッカーを CoinGecko のスラッグ形式の ID に解決し、価格の照会、ランキング付き市場データ、トレンドチャートへと続けてアクセスできます。

ツール
ツール説明
coingecko_search_coinsコイン名またはティッカーシンボルを CoinGecko ID(スラッグ)に解決します。ID を指定するすべてのツールで、最初に実行する必要があります。
coingecko_get_prices複数のコイン/通貨をまとめて、現在の価格と主要な市場統計を取得します。
coingecko_list_markets時価総額、取引量、または ID 順の市場ランキング表です。カテゴリまたは指定した ID に絞り込むこともできます。
coingecko_get_coin単一コインの詳細なプロフィール — 説明、リンク、市場データ、開発者の活動、コミュニティ、センチメントを取得します。sections を指定すると、大きなレコードの内容を絞り込めます。
coingecko_get_market_chart過去の価格、時価総額、取引量の系列データを取得します。recent(直近 N 日、自動粒度)または range(Unix 秒で期間を明示)のモードを使用できます。
coingecko_get_trending過去 24 時間の CoinGecko での検索ボリュームに基づく、トレンド上位のコインを取得します。
coingecko_get_global暗号資産市場全体のスナップショット — 時価総額と取引量の合計、BTC/ETH のドミナンス、アクティブ数、進行中の ICO、24 時間の変動率を取得します。
coingecko_list_categoriesコインカテゴリ(category_id と表示名)を取得します。coingecko_list_markets の category フィルターで使用できる有効なスラッグを確認できます。
リソース
リソース説明
coingecko://coin/{id}スラッグによる詳細なコイン情報です。coingecko_get_coin と同じデータ(完全なレコード、USD建ての市場データ)を返します。
coingecko://global暗号資産市場全体のスナップショットです。coingecko_get_global と同じデータを返します。

すべてのリソースデータはツールからも取得できます。リソースは coingecko_get_coin と coingecko_get_global をそのまま反映しているため、ツールのみを使うクライアントでもデータが欠けることはありません。大規模なコレクション(市場、カテゴリー)はリソースとして公開されていません。代わりに coingecko_list_markets と coingecko_list_categories を使用してください。

プロンプト
プロンプト説明
coingecko_coin_research検索 → get_coin → get_market_chart → get_global の流れで、単一コインの調査を一通り進める手順を案内します。

機能リファレンス

coingecko_search_coins ツール
  • ティッカーは一意ではありません(ETH/USDCを共有するコインが多数あります)。id、symbol、name、marketCapRankを含む、順位付けされた候補を返して区別できるようにします
  • 関連度順に上位25件を返します。リストが上限に達した場合は、enrichment.truncatedとshown/capでその旨を示します
  • 結果が空でも正常な結果であり、エラーではありません。enrichment.noticeでクエリの範囲を広げるよう提案します

coingecko_get_prices ツール
  • 最大500件の生IDを受け付け(前後の空白を除去し、小文字化して重複を排除)、先頭から最大250件の一意なスラッグを処理します。残りはskippedIdsに、解決できなかったIDはmissingに記載します。不明なスラッグに対して上流はエラーではなく空の応答を返すためです
  • 価格が返された(id, currency)の組み合わせごとに1行を返します。時価総額、24時間の取引高、24時間の変動率は行ごとに省略可能です。価格情報のない通貨はenrichment.noticeに記載されます
  • lastUpdatedAtUnixSecはUnix秒です。coingecko_get_market_chartの各データポイントのタイムスタンプはミリ秒です
  • リクエストしたIDが1つも解決されない場合はall_missingを、IDは解決されたものの、リクエストした通貨のいずれにも数値の価格がない場合はno_price_dataをスローします

coingecko_list_markets ツール
  • orderで時価総額、取引高、IDの昇順または降順に並べ替えます。pageとper_pageでページネーションを行います(デフォルトは50行、最大250行)
  • ids(価格バッチと同じく、生IDは最大500件、一意なIDは最大250件。選択内容はappliedIdsとskippedIdsで確認できます)またはcategory(coingecko_list_categoriesが返すcategoryId)で絞り込みます。両方は指定できません。併用するとconflicting_filtersを返します
  • コインごとのフィールドには、価格、時価総額、取引高、1時間/24時間/7日の変動率、供給量、ATH/ATLが含まれます。全ページに達した場合はenrichment.truncatedで示します
  • カテゴリーで絞り込んだリクエストに対してCoinGeckoがHTTP 404を返した場合はunknown_categoryをスローします

coingecko_get_coin ツール
  • 6つのセクション(profile、market、links、developer、community、sentiment)があります。sectionsを指定すると必要な部分だけに絞って応答を返します(完全なレコードは大容量です)
  • 価格と変動率の期間はvs_currencyを使用します(デフォルトはusd)。上流に存在しないフィールドは捏造せず、省略されます
  • profile.categoriesは表示名(例:"Layer 1 (L1)")であり、coingecko_list_categoriesが返すcategoryIdのスラッグとは異なります
  • 上流がスラッグを認識しない場合はcoin_not_foundを、指定された市場通貨がサポート対象外の場合はunsupported_currencyをスローします

coingecko_get_market_chart ツール
  • recent モードでは 1~365 日を指定します("max" は 365 日の期間を表し、通知が出力されます)。range モードでは from/to に Unix 秒を指定します
  • interval では auto(上流のデフォルト)、daily、hourly を選択します。利用できる値は上流のプランと期間によって異なります
  • point_offset(デフォルトは 0)と point_limit(デフォルトは 100、上限は 250)でページを指定します。系列ごとの合計と nextPointOffset により続きを取得でき、各ページで上流データを再取得します
  • granularity は系列の間隔を 5-minute、hourly、daily、irregular、unknown のいずれかで示します。ポイントのタイムスタンプは Unix ミリ秒ですが、coingecko_get_prices の lastUpdatedAtUnixSec は秒です
  • モードとパラメーターが一致しない場合は invalid_range、スラッグが認識されない場合は coin_not_found をスローします

coingecko_get_trending ツール
  • パラメーターはありません。検索ボリュームに基づく 24 時間のトレンドコインを返します。利用可能な場合、各コインには marketCapRank、priceUsd、priceBtc、priceChangePercentage24hUsd が含まれます
  • 上流では時価総額と出来高が数値ではなく、書式設定済みの表示文字列として返されるため、これらのフィールドは数値データとして提示せず、省略します
  • nftCount は、上流からあわせて返されるトレンド NFT の数を示します。NFT の詳細は公開されません

coingecko_get_global ツール
  • コイン ID は不要です。マクロのスナップショットを 1 回の呼び出しで取得できます
  • vs_currency(デフォルトは usd)は時価総額と出来高の合計にのみ適用されます。ドミナンスと 24 時間の変動率は、上流では常に USD 建てです
  • 指定した通貨が上流の通貨別マップに存在しない場合は unsupported_currency をスローします。/global では上流による通貨検証が行われないため、不明なコードを指定すると合計値が返されません
  • アクティブな暗号通貨数と市場数、進行中の ICO 数、Unix 秒単位のスナップショットのタイムスタンプを返します

coingecko_list_categories ツール
  • 任意の name_contains では、空白区切りのトークンで絞り込みます。大文字と小文字、句読点は区別されず、すべてのトークンが名前に含まれている必要があります
  • enrichment.totalCount は、絞り込み前のカテゴリ総数を示します。一致するカテゴリがない場合は enrichment.notice を返します
  • 返される categoryId の値は、coingecko_list_markets の category パラメーターで使用します

coingecko://coin/{id} リソース
  • coingecko_get_coin の完全なレコードと同じデータを返します。通貨単位は常に USD です
  • {id} は CoinGecko のスラッグ(例:"bitcoin")です。ティッカーは coingecko_search_coins で解決してください
  • 上流でスラッグが認識されない場合は coin_not_found をスローします

coingecko://global リソース
  • coingecko_get_global と同じデータを返します。通貨単位は常に USD です
  • パラメーターはありません

coingecko_coin_research プロンプト
  • 引数:coin は必須です。名前、ティッカー、または CoinGecko のスラッグを指定します
  • アシスタントの導入メッセージと、search → get_coin → get_market_chart → get_global の流れを案内するユーザーメッセージを返します

主な機能

@cyanheads/mcp-ts-core を基盤とし、stdio および Streamable HTTP トランスポート、差し替え可能な認証(none/jwt/oauth)、交換可能なストレージ(in-memory、filesystem、Supabase、Cloudflare KV/R2/D1)、オプションの OpenTelemetry トレースに対応した構造化ロギングを備えています。

CoinGecko 固有の機能:

  • CoinGecko v3 REST API 用の型安全なクライアントを備え、各エンドポイントにサービスメソッドを用意しています
  • パブリックティアでは API キーなしで動作します。オプションの Demo API キー(x-cg-demo-api-key)を設定すると、ほかの構成を変更せずにレート上限を引き上げられます
  • レート制限、一時的な上流障害、タイムアウトに対する再試行とバックオフに対応します。Retry-After を尊重し、恒久的な拒否は直ちに失敗します
  • 復旧のヒントを含む、ステータス固有のエラー理由を返します。過去の期間に関する制限では、対象期間を狭める方法も案内します

エージェントに使いやすい出力:

  • 説明文によって検索してからクエリするよう徹底します。ID を使うすべてのツールで、ティッカーではなくスラッグを指定することを明記し、coingecko_search_coins を案内します
  • 部分的な読み取りに対応します。価格の結果では価格情報がない未解決の ID と通貨を明示し、エンリッチメントでは時価総額と適用したフィルターを開示します
  • 単位を明確にします。タイムスタンプのフィールドでは、秒とミリ秒のどちらかを説明します
  • 必須の CoinGecko 表記をすべてのツールおよびリソースの出力に含めています。リサーチ用プロンプトでは、エージェントに同じ方法で調査結果を表記するよう指示します

はじめに

次の内容を MCP クライアントの構成ファイルに追加してください。API キーは不要です。CoinGecko Demo の上位ティアを利用する場合に限り、COINGECKO_API_KEY を設定してください(構成を参照)。

{
  "mcpServers": {
    "coingecko-mcp-server": {
      "type": "stdio",
      "command": "bunx",
      "args": ["@cyanheads/coingecko-mcp-server@latest"],
      "env": {
        "MCP_TRANSPORT_TYPE": "stdio",
        "MCP_LOG_LEVEL": "info"
      }
    }
  }
}

または npx を使用する場合(Bun は不要です):

{
  "mcpServers": {
    "coingecko-mcp-server": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@cyanheads/coingecko-mcp-server@latest"],
      "env": {
        "MCP_TRANSPORT_TYPE": "stdio",
        "MCP_LOG_LEVEL": "info"
      }
    }
  }
}

または Docker を使用する場合:

{
  "mcpServers": {
    "coingecko-mcp-server": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-e", "MCP_TRANSPORT_TYPE=stdio",
        "ghcr.io/cyanheads/coingecko-mcp-server:latest"
      ]
    }
  }
}

CoinGecko Demo キーを設定するには、env ブロックに "COINGECKO_API_KEY": "your-demo-key" を追加してください(Docker の場合は -e COINGECKO_API_KEY=your-demo-key を指定します)。

Streamable HTTP を使用するには、トランスポートを設定してサーバーを起動してください。

MCP_TRANSPORT_TYPE=http MCP_HTTP_PORT=3010 bun run start:http
# Server listens at http://localhost:3010/mcp
前提条件
  • Bun v1.4.0 以上(または Node.js v24+)。
  • 実行にアカウントや API キーは不要です。共有の API キー不要なパブリックプールより高いレート上限(毎月 10k 回、毎分 100 リクエスト)を利用する場合は、無料の CoinGecko Demo API キーを任意で使用できます。
インストール
  1. リポジトリをクローンします:
git clone https://github.com/cyanheads/coingecko-mcp-server.git
  1. ディレクトリに移動します:
cd coingecko-mcp-server
  1. 依存関係をインストールします:
bun install
  1. 環境を構成します(任意):
cp .env.example .env
# the server runs with no .env at all; edit only to set COINGECKO_API_KEY

構成

サーバーは構成なしで実行できます。サーバー固有の環境変数は次の1つだけで、設定は任意です。

変数説明デフォルト
COINGECKO_API_KEYCoinGecko のオプションの Demo API キーです。x-cg-demo-api-key ヘッダーとして送信されます(毎月 10k 回、毎分 100 リクエスト)。未設定の場合は API キー不要のパブリックティアを使用します。—
MCP_TRANSPORT_TYPEトランスポート:stdio または http。stdio
MCP_HTTP_PORTHTTP サーバーのポート。3010
MCP_HTTP_ENDPOINT_PATHHTTP エンドポイントのパス。/mcp
MCP_SESSION_MODEHTTP セッションモード:stateless、stateful、または auto。stateless
MCP_AUTH_MODE認証モード:none、jwt、または oauth。none
MCP_LOG_LEVELログレベル(RFC 5424)。info
LOGS_DIRログファイルのディレクトリ(Node.js のみ)。<project-root>/logs
STORAGE_PROVIDER_TYPEストレージバックエンド。in-memory
OTEL_ENABLEDOpenTelemetry instrumentation(スパン、メトリクス、完了ログ)を有効にします。false

任意のオーバーライド設定の全一覧は .env.example を参照してください。

レート制限とデータの鮮度。 API キー不要のパブリックティアは、IP アドレスごとに制限されるプールを共有しているため、軽い負荷でも複数のツールを使う頻度の高いワークフローでは 429 が発生することがあります。サーバーはバックオフして再試行しますが、上限を引き上げることはできません。無料の Demo キーを使うと上限が引き上げられます。CoinGecko のデータはおよそ 60 秒ごとに更新され、ティック単位のデータではありません。

サーバーの実行

ローカル開発
  • ビルドして実行:

    # One-time build
    bun run rebuild
    
    # Run the built server
    bun run start:stdio
    # or
    bun run start:http
    
  • チェックとテストを実行:

    bun run devcheck   # Lint, format, typecheck, security
    bun run test       # Vitest test suite
    bun run lint:mcp   # Validate MCP definitions against spec
    
Docker
docker build -t coingecko-mcp-server .
docker run --rm -e MCP_TRANSPORT_TYPE=http -p 3010:3010 coingecko-mcp-server

Dockerfile は、HTTP トランスポート、ステートレスセッションモード、および /var/log/coingecko-mcp-server へのログ出力をデフォルトで設定します。OpenTelemetry のピア依存関係はデフォルトでインストールされます。これらを省略するには、--build-arg OTEL_ENABLED=false を指定してビルドしてください。

プロジェクト構成

ディレクトリ用途
src/index.tscreateApp() のエントリーポイントです。ツール、リソース、プロンプトを登録し、CoinGecko サービスを初期化します。
src/configサーバー固有の環境変数を Zod で解析・検証します。
src/mcp-server/toolsツールの定義(*.tool.ts)。
src/mcp-server/resourcesリソースの定義(*.resource.ts)。
src/mcp-server/promptsプロンプトの定義(*.prompt.ts)。
src/services/coingeckoCoinGecko v3 REST API サービスです。HTTP クライアント、再試行とエラーマッピング、レスポンスの正規化、ドメイン型を含みます。
tests/src/ に対応する単体テストと統合テスト。

開発ガイド

開発ガイドラインとアーキテクチャルールについては、CLAUDE.md/AGENTS.md を参照してください。要点は次のとおりです。

  • ハンドラーは例外をスローし、フレームワークが捕捉します。ツールのロジックでは try/catch を使用しないでください。
  • リクエスト単位のログには ctx.log、テナント単位のストレージには ctx.state を使用してください。
  • 新しいツールとリソースは、src/index.ts の createApp() 配列を通じて登録してください。
  • 外部 API 呼び出しはラップしてください。生データを検証し、ドメイン型に正規化してから、出力スキーマを返してください。不足しているフィールドを捏造してはいけません。

貢献

Issue を歓迎します。提出する前にチェックとテストを実行してください。

bun run devcheck
bun run test

ライセンス

Apache-2.0。詳細は LICENSE を参照してください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。