Marvel MCP Server

by DanWahlin
Verified

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Azure Functions を使用した Marvel MCP サーバー

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

Marvel Developer API用のMCPサーバー。キャラクターやコミックデータとのインタラクションを可能にします。このプロジェクトの主な目的は、Azure Functionsでホストされた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 ホストで MCP サーバーを直接使用する場合は、 「GitHub Copilot での使用」または「Claude Desktop での使用」セクションに進んでください。

ローカルでサーバーを実行する

  1. Azure ストレージ エミュレーターが必要です。次の 2 つのオプションがあります。
    • Docker コンテナで Azurite を起動します。
      docker run -p 10000:10000 -p 10001:10001 -p 10002:10002 \ mcr.microsoft.com/azure-storage/azurite
    • Azurite VS Code拡張機能を使用できます。拡張機能をインストールしたら、VS CodeコマンドパレットからAzurite: Startを実行してください。
  2. このリポジトリをクローンします:
    git clone https://github.com/DanWahlin/marvel-mcp-azure-functions
  3. .env.templateの名前を.envに変更します。
  4. Marvel API の公開キーと秘密キーを.envファイルに追加します。
    MARVEL_PUBLIC_KEY=YOUR_PUBLIC_KEY MARVEL_PRIVATE_KEY=YOUR_PRIVATE_KEY MARVEL_API_BASE=https://gateway.marvel.com/v1/public
  5. 必要な依存関係をインストールし、プロジェクトをビルドします。
    npm install npm run build
  6. Azure Functions ホストをローカルで起動します。
    npm start
  7. (オプション) MCP Inspector を使用して MCP サーバーを試すには、次のコマンドを実行します。
    # Start the MCP Inspector npx @modelcontextprotocol/inspector node build/index.js
    ブラウザのコンソールに表示されている MCP Inspector URL にアクセスします。
    • Transport TypeSSEに変更します。
    • URL にhttp://0.0.0.0:7071/runtime/webhooks/mcp/sse入力します。
    • ボタンConnect選択します。
    • List Toolsを選択します。
    • 試すにはツールを選択してください。

MCPホストの構成

Claude Desktop で使用する

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

{ "mcpServers": { "marvel-mcp": { "type": "sse", "url": "http://0.0.0.0:7071/runtime/webhooks/mcp/sse" } } }

VS CodeでGitHub Copilotを使用する

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

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

{ "inputs": [], "servers": { "marvel-mcp": { "type": "sse", "url": "http://0.0.0.0:7071/runtime/webhooks/mcp/sse" } } }

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

"mcp": { "servers": { "marvel-mcp": { "type": "sse", "url": "http://0.0.0.0:7071/runtime/webhooks/mcp/sse" } } }

リモート MCP 用に Azure にデプロイする

次のazdコマンドを実行して、必要な Azure リソースを使用して関数アプリをプロビジョニングし、コードをデプロイします。

azd up

サンプルで使用されているVNetにオプトインできます。これを行うには、 azd upの前に実行してください。

azd env set VNET_ENABLED true

さらに、 API Management を使用して MCP サーバーのセキュリティとポリシーを強化でき、App Service の組み込み認証を使用して Entra などのお気に入りの OAuth プロバイダーを設定することもできます。

GitHub Copilotのツールの使用

  1. mcp サーバーが検出可能になったので、GitHub Copilot を開いて、 Agentモード ( AskまたはEditはない) を選択します。
  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 によってフィルター処理されました。」と表示された場合は、もう一度実行するか、プロンプトを言い換えてください。

-
security - not tested
A
license - permissive license
-
quality - not tested

公式の Marvel Developer API を通じて Marvel のキャラクターやコミック データとのやり取りを可能にする、Azure Functions ベースの MCP サーバーです。

  1. 🔧 Features
    1. 🧰 Tools
      1. 1. get_characters 🔍🦸‍♂️
      2. 2. get_character_by_id 🆔🧑‍🎤
      3. 3. get_comics_for_character 📚🎭
      4. 4. get_comics 📖🕵️‍♂️
      5. 5. get_comic_by_id 🆔📘
      6. 6. get_characters_for_comic 🦸‍♀️📖
    2. 🛠️ Setup
      1. Run the Server Locally
    3. Configuring an MCP Host
      1. Use with Claude Desktop
      2. Use with GitHub Copilot in VS Code
    4. Deploy to Azure for Remote MCP
      1. Using Tools in GitHub Copilot
    ID: p5d4gqdv40