Marvel MCP

by DanWahlin
Verified

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

Integrations

  • Supports environment configuration through .env files to manage Marvel API credentials and base URL.

  • Allows GitHub Copilot to access Marvel characters and comics data through the Marvel Developer API, supporting various filters and search capabilities.

Marvel MCP サーバー

機能ツールセットアップMCPホストの構成

Marvel Developer API用のMCPサーバー。キャラクターやコミックデータとのインタラクションを可能にします。このプロジェクトの主な目的は、MCPサーバーを使用してAPIとインタラクションする方法を示すことです。

:このMCPサーバーで使用されるすべてのデータは、 Marvel公式APIから取得され、Marvelが所有しています。このプロジェクトはMarvelとは一切関係ありません。

🔧 機能

  • マーベルキャラクターの一覧: nameStartsWithlimitcomicsseriesなどのフィルターをサポートします。
  • ID で Marvel キャラクターを取得: キャラクターcharacterIdを使用して、任意のキャラクターの詳細情報を取得します。
  • キャラクターのコミック取得: formatdateRangeなどのさまざまなフィルターを使用して、特定のキャラクターが登場するコミックのリストを取得します。
  • ツールベースの MCP 統合: このサーバーをモデル コンテキスト プロトコル (MCP) ツール (VS Code、Claude など) に登録します。
  • 環境設定: .envファイルを使用して、 MARVEL_PUBLIC_KEYMARVEL_PRIVATE_KEYMARVEL_API_BASEなどの環境変数を管理します。

🧰 ツール

1. get_characters 🔍🦸‍♂️

  • 説明: オプションのフィルターを使用して Marvel キャラクターを取得します。
  • 入力:
    • name (オプションの文字列): 完全なキャラクター名。
    • nameStartsWith (オプションの文字列): 指定された文字列で始まる名前の文字。
    • modifiedSince (オプションの文字列): この日付以降に変更された文字をフィルターする ISO 8601 日付文字列。
    • comicsserieseventsstories (オプションの文字列):関連エンティティでフィルタリングするためのIDのコンマ区切りリスト。
    • orderBy (オプションの文字列): name-modifiedなど、結果を並べ替えるフィールド。
    • limit (オプションの数値): 返される結果の最大数 (1~100)。
    • offset (オプションの数値): ページ区切りでスキップする結果の数。
  • 戻り値: 一致する文字を含むJSONレスポンス。詳細はsrc/schemas.tsCharacterDataWrapperSchema参照してください。

2. get_character_by_id 🆔🧑‍🎤

  • 説明: 一意の ID で Marvel キャラクターを取得します。
  • 入力:
    • characterId (数値): キャラクターの一意の ID。
  • 戻り値:キャラクターの詳細を含むJSONレスポンス。詳細はsrc/schemas.tsCharacterDataWrapperSchemaを参照してください。

3. get_comics_for_character 📚🎭

  • 説明: オプションのフィルターを使用して、特定のキャラクターが登場するコミックを取得します。
  • 入力:
    • characterId (数値): キャラクターの一意の ID。
    • オプションのフィルター:
      • formatformatType (文字列):コミック形式(例: comichardcover )でフィルタリングします。
      • noVariantshasDigitalIssue (ブール値): バリアントを除外するか、デジタル版のみを含めるかを指定するフラグ。
      • dateDescriptor (文字列): thisWeeknextWeekなどの定義済みの日付範囲。
      • dateRange (文字列): YYYY-MM-DD,YYYY-MM-DD形式のカスタム日付範囲。
      • titletitleStartsWith (文字列): タイトルまたはタイトルプレフィックスでフィルタリングします。
      • startYearissueNumberdigitalId (数値): 数値フィルター。
      • diamondCodeupcisbneanissn (文字列): 識別子フィルター。
      • creatorsserieseventsstoriessharedAppearancescollaborators (文字列): 関連するエンティティ ID のコンマ区切りリスト。
      • orderBy (文字列): title-modifiedなど、結果を並べ替えるフィールド。
      • limitoffset (数値):ページ区切りオプション。
  • 戻り値:指定されたキャラクターが登場するコミックを含むJSONレスポンス。詳細はsrc/schemas.tsComicDataWrapperSchemaを参照してください。

4. get_comics 📖🕵️‍♂️

  • 説明: オプションのフィルターを使用して、マーベルコミックのリストを取得します。
  • 入力:
    • format (オプションの文字列): 発行形式 (例: comicdigital comichardcover ) でフィルタリングします。
    • formatType (オプションの文字列): 発行形式の種類 ( comicまたはcollection ) でフィルタリングします。
    • noVariants (オプションのブール値): 結果セットからバリエーション (代替カバー、二次印刷、ディレクターズカットなど) を除外します。
    • dateDescriptor (オプションの文字列): 定義済みの日付範囲 ( lastWeekthisWeeknextWeekthisMonth ) 内のコミックを返します。
    • dateRange (オプションの文字列): 指定した日付範囲内のコミックを返します。日付はYYYY-MM-DD,YYYY-MM-DDの形式で指定する必要があります。
    • title (オプションの文字列): 入力と一致するタイトルを持つシリーズの問題のみを返します。
    • titleStartsWith (オプションの文字列): 入力で始まるタイトルのシリーズの問題のみを返します。
    • startYear (オプションの数値): 入力と一致する開始年を持つシリーズの問題のみを返します。
    • issueNumber (オプションの数値): 入力と一致する問題番号を持つシリーズの問題のみを返します。
    • diamondCodedigitalIdupcisbneanissn (オプションの文字列):さまざまな識別子でフィルタリングします。
    • hasDigitalIssue (オプションのブール値): デジタルで利用可能な結果のみを含めます。
    • modifiedSince (オプションの文字列): 指定された日付以降に変更されたコミックのみを返します (ISO 8601 形式)。
    • creatorscharactersserieseventsstoriessharedAppearancescollaborators (オプションの文字列): 関連エンティティでフィルタリングする ID のコンマ区切りリスト。
    • orderBy (オプションの文字列): 結果セットをフィールドで並べ替えます。降順で並べ替えるには、値に「-」を追加します(例: title-modified )。
    • limit (オプションの数値): 結果セットを指定されたリソース数に制限します (デフォルト: 20、最大: 100)。
    • offset (オプションの数値): 結果セット内の指定された数のリソースをスキップします。
  • 戻り値:一致するコミックを含むJSONレスポンス。詳細はsrc/schemas.tsComicDataWrapperSchemaを参照してください。

5. get_comic_by_id 🆔📘

  • 説明: 一意の ID で単一の Marvel コミックを取得します。
  • 入力:
    • comicId (数値): コミックの一意の ID。
  • 戻り値:コミックの詳細を含むJSONレスポンス。詳細はsrc/schemas.tsComicDataWrapperSchemaを参照してください。

6. get_characters_for_comic 🦸‍♀️📖

  • 説明: 特定のコミックに登場するマーベルキャラクターを取得します。
  • 入力:
    • comicId (数値): コミックの一意の ID。
    • オプションのフィルター:
      • name (オプションの文字列): フルネームで文字をフィルタリングします。
      • nameStartsWith (オプションの文字列): 指定された文字列で始まる名前の文字をフィルターします。
      • modifiedSince (オプションの文字列): この日付以降に変更された文字をフィルターするための ISO 8601 日付文字列。
      • serieseventsstories (オプションの文字列): フィルタリングする関連エンティティ ID のコンマ区切りリスト。
      • orderBy (オプションの文字列): name-modifiedなど、結果を並べ替えるフィールド。
      • limit (オプションの数値): 返される結果の最大数 (1~100)。
      • offset (オプションの数値): ページ区切りでスキップする結果の数。
  • 戻り値:指定されたコミックに登場するキャラクターを含むJSONレスポンス。詳細はsrc/schemas.tsCharacterDataWrapperSchema参照してください。

🛠️ セットアップ

Marvel Developer APIアカウントにサインアップして、公開 API キーと秘密 API キーを取得します。

MCP ホストで直接実行する場合は、 「Claude Desktop での使用」または「GitHub Copilot での使用」セクションに進んでください。

MCP Inspector を使用してサーバーをローカルで実行する

MCP Inspector をローカルで実行してサーバーをテストする場合は、次の手順に従います。

  1. このリポジトリをクローンします:
    git clone https://github.com/DanWahlin/marvel-mcp-server
  2. .env.templateの名前を.envに変更します。
  3. Marvel API の公開キーと秘密キーを.envファイルに追加します。
    MARVEL_PUBLIC_KEY=YOUR_PUBLIC_KEY MARVEL_PRIVATE_KEY=YOUR_PRIVATE_KEY MARVEL_API_BASE=https://gateway.marvel.com/v1/public
  4. 必要な依存関係をインストールし、プロジェクトをビルドします。
    npm install npm run build
  5. (オプション) MCP Inspector を使用してサーバーを試すには、次のコマンドを実行します。
    # Start the MCP Inspector npx @modelcontextprotocol/inspector node build/index.js
    ブラウザのコンソールに表示されているMCP InspectorのURLにアクセスします。Arguments Arguments``dist/index.jsに変更し、 Connectを選択します。 List Toolsを選択して利用可能なツールを確認します。

MCPホストの構成

Claude Desktop で使用する

claude_desktop_config.jsonに以下を追加します。

{ "mcpServers": { "marvel-mcp": { "type": "stdio", "command": "npx", // "command": "node", "args": [ "-y", "@codewithdan/marvel-mcp" // "/PATH/TO/marvel-mcp/dist/index.js" ], "env": { "MARVEL_PUBLIC_KEY": "YOUR_PUBLIC_KEY", "MARVEL_PRIVATE_KEY": "YOUR_PRIVATE_KEY", "MARVEL_API_BASE": "https://gateway.marvel.com/v1/public" } } } }

Smithery経由でインストール

Smithery経由で Claude Desktop 用の Marvel MCP Server を自動的にインストールするには:

npx -y @smithery/cli install @DanWahlin/marvel-mcp --client claude

GitHub Copilot と併用する (VS Code Insiders)

: Claude Desktop ですでに MCP サーバーが有効になっている場合は、VS Code 設定にchat.mcp.discovery.enabled: trueを追加すると、既存の MCP サーバー リストが検出されます。

MCP サーバーを特定のリポジトリに関連付ける場合は、次の内容を含む.vscode/mcp.jsonファイルを作成します。

{ "inputs": [], "servers": { "marvel-mcp": { "command": "npx", // "command": "node", "args": [ "-y", "@codewithdan/marvel-mcp" // "/PATH/TO/marvel-mcp/dist/index.js" ], "env": { "MARVEL_PUBLIC_KEY": "YOUR_PUBLIC_KEY", "MARVEL_PRIVATE_KEY": "YOUR_PRIVATE_KEY", "MARVEL_API_BASE": "https://gateway.marvel.com/v1/public" } } } }

MCP サーバーをすべてのリポジトリに関連付ける場合は、VS Code ユーザー設定 JSON に以下を追加します。

"mcp": { "servers": { "marvel-mcp": { "command": "npx", // "command": "node", "args": [ "-y", "@codewithdan/marvel-mcp" // "/PATH/TO/marvel-mcp/dist/index.js" ], "env": { "MARVEL_PUBLIC_KEY": "YOUR_PUBLIC_KEY", "MARVEL_PRIVATE_KEY": "YOUR_PRIVATE_KEY", "MARVEL_API_BASE": "https://gateway.marvel.com/v1/public" } }, } }, "chat.mcp.discovery.enabled": true,

GitHub Copilotのツールの使用

  1. mcp サーバーが検出可能になったので、GitHub Copilot を開いて、 Agentモード ( ChatEditsはない) を選択します。
  2. Copilot チャット テキスト フィールドの「更新」ボタンを選択して、サーバー リストを更新します。
  3. 「🛠️」ボタンを選択すると、このリポジトリのツールも含め、使用可能なすべてのツールが表示されます。
  4. チャットに、ツールの 1 つが自然に呼び出されるような質問を投稿します。たとえば、次のようになります。
    List 10 marvel characters. Include images. What comics is Wolverine in? Which characters appear in the Avengers comics? What characters are in the Hedge Knight II: Sworn Sword (2007) comic?

    : 「申し訳ありません。応答は Responsible AI Service によってフィルター処理されました。」と表示された場合は、もう一度実行するか、プロンプトを言い換えてください。

ID: 3f8e47gp7v