Skip to main content
Glama
DanWahlin

Marvel MCP Server

by DanWahlin

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

GitHub Codespacesでプロジェクトを開く ノードバージョン ライセンス

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

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

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

🔧 機能

  • マーベルキャラクターの一覧: nameStartsWith 、 limit 、 comics 、 seriesなどのフィルターをサポートします。

  • ID で Marvel キャラクターを取得: キャラクターcharacterIdを使用して、任意のキャラクターの詳細情報を取得します。

  • キャラクターのコミック取得: format 、 dateRangeなどのさまざまなフィルターを使用して、特定のキャラクターが登場するコミックのリストを取得します。

  • ツールベースの MCP 統合: このサーバーをモデル コンテキスト プロトコル (MCP) ツール (VS Code、Claude など) に登録します。

  • 環境設定: .envファイルを使用して、 MARVEL_PUBLIC_KEY 、 MARVEL_PRIVATE_KEY 、 MARVEL_API_BASEなどの環境変数を管理します。

Related MCP server: Jokes MCP Server

🧰 ツール

1. get_characters 🔍🦸‍♂️

  • 説明: オプションのフィルターを使用して Marvel キャラクターを取得します。

  • 入力:

    • name (オプションの文字列): 完全なキャラクター名。

    • nameStartsWith (オプションの文字列): 指定された文字列で始まる名前の文字。

    • modifiedSince (オプションの文字列): この日付以降に変更された文字をフィルターする ISO 8601 日付文字列。

    • comics 、 series 、 events 、 stories (オプションの文字列):関連エンティティでフィルタリングするためのIDのコンマ区切りリスト。

    • orderBy (オプションの文字列): nameや-modifiedなど、結果を並べ替えるフィールド。

    • limit (オプションの数値): 返される結果の最大数 (1~100)。

    • offset (オプションの数値): ページ区切りでスキップする結果の数。

  • 戻り値: 一致する文字を含むJSONレスポンス。詳細はsrc/schemas.tsのCharacterDataWrapperSchema参照してください。

2. get_character_by_id 🆔🧑‍🎤

  • 説明: 一意の ID で Marvel キャラクターを取得します。

  • 入力:

    • characterId (数値): キャラクターの一意の ID。

  • 戻り値:キャラクターの詳細を含むJSONレスポンス。詳細はsrc/schemas.tsのCharacterDataWrapperSchemaを参照してください。

3. get_comics_for_character 📚🎭

  • 説明: オプションのフィルターを使用して、特定のキャラクターが登場するコミックを取得します。

  • 入力:

    • characterId (数値): キャラクターの一意の ID。

    • オプションのフィルター:

      • format 、 formatType (文字列):コミック形式(例: comic 、 hardcover )でフィルタリングします。

      • noVariants 、 hasDigitalIssue (ブール値): バリアントを除外するか、デジタル版のみを含めるかを指定するフラグ。

      • dateDescriptor (文字列): thisWeek 、 nextWeekなどの定義済みの日付範囲。

      • dateRange (文字列): YYYY-MM-DD,YYYY-MM-DD形式のカスタム日付範囲。

      • title 、 titleStartsWith (文字列): タイトルまたはタイトルプレフィックスでフィルタリングします。

      • startYear 、 issueNumber 、 digitalId (数値): 数値フィルター。

      • diamondCode 、 upc 、 isbn 、 ean 、 issn (文字列): 識別子フィルター。

      • creators 、 series 、 events 、 stories 、 sharedAppearances 、 collaborators (文字列): 関連するエンティティ ID のコンマ区切りリスト。

      • orderBy (文字列): titleや-modifiedなど、結果を並べ替えるフィールド。

      • limit 、 offset (数値):ページ区切りオプション。

  • 戻り値:指定されたキャラクターが登場するコミックを含むJSONレスポンス。詳細はsrc/schemas.tsのComicDataWrapperSchemaを参照してください。

4. get_comics 📖🕵️‍♂️

  • 説明: オプションのフィルターを使用して、マーベルコミックのリストを取得します。

  • 入力:

    • format (オプションの文字列): 発行形式 (例: comic 、 digital comic 、 hardcover ) でフィルタリングします。

    • formatType (オプションの文字列): 発行形式の種類 ( comicまたはcollection ) でフィルタリングします。

    • noVariants (オプションのブール値): 結果セットからバリエーション (代替カバー、二次印刷、ディレクターズカットなど) を除外します。

    • dateDescriptor (オプションの文字列): 定義済みの日付範囲 ( lastWeek 、 thisWeek 、 nextWeek 、 thisMonth ) 内のコミックを返します。

    • dateRange (オプションの文字列): 指定した日付範囲内のコミックを返します。日付はYYYY-MM-DD,YYYY-MM-DDの形式で指定する必要があります。

    • title (オプションの文字列): 入力と一致するタイトルを持つシリーズの問題のみを返します。

    • titleStartsWith (オプションの文字列): 入力で始まるタイトルのシリーズの問題のみを返します。

    • startYear (オプションの数値): 入力と一致する開始年を持つシリーズの問題のみを返します。

    • issueNumber (オプションの数値): 入力と一致する問題番号を持つシリーズの問題のみを返します。

    • diamondCode 、 digitalId 、 upc 、 isbn 、 ean 、 issn (オプションの文字列):さまざまな識別子でフィルタリングします。

    • hasDigitalIssue (オプションのブール値): デジタルで利用可能な結果のみを含めます。

    • modifiedSince (オプションの文字列): 指定された日付以降に変更されたコミックのみを返します (ISO 8601 形式)。

    • creators 、 characters 、 series 、 events 、 stories 、 sharedAppearances 、 collaborators (オプションの文字列): 関連エンティティでフィルタリングする ID のコンマ区切りリスト。

    • orderBy (オプションの文字列): 結果セットをフィールドで並べ替えます。降順で並べ替えるには、値に「-」を追加します(例: title 、 -modified )。

    • limit (オプションの数値): 結果セットを指定されたリソース数に制限します (デフォルト: 20、最大: 100)。

    • offset (オプションの数値): 結果セット内の指定された数のリソースをスキップします。

  • 戻り値:一致するコミックを含むJSONレスポンス。詳細はsrc/schemas.tsのComicDataWrapperSchemaを参照してください。

5. get_comic_by_id 🆔📘

  • 説明: 一意の ID で単一の Marvel コミックを取得します。

  • 入力:

    • comicId (数値): コミックの一意の ID。

  • 戻り値:コミックの詳細を含むJSONレスポンス。詳細はsrc/schemas.tsのComicDataWrapperSchemaを参照してください。

6. get_characters_for_comic 🦸‍♀️📖

  • 説明: 特定のコミックに登場するマーベルキャラクターを取得します。

  • 入力:

    • comicId (数値): コミックの一意の ID。

    • オプションのフィルター:

      • name (オプションの文字列): フルネームで文字をフィルタリングします。

      • nameStartsWith (オプションの文字列): 指定された文字列で始まる名前の文字をフィルターします。

      • modifiedSince (オプションの文字列): この日付以降に変更された文字をフィルターする ISO 8601 日付文字列。

      • series 、 events 、 stories (オプションの文字列): フィルタリングする関連エンティティ ID のコンマ区切りリスト。

      • orderBy (オプションの文字列): nameや-modifiedなど、結果を並べ替えるフィールド。

      • limit (オプションの数値): 返される結果の最大数 (1~100)。

      • offset (オプションの数値): ページ区切りでスキップする結果の数。

  • 戻り値:指定されたコミックに登場するキャラクターを含むJSONレスポンス。詳細はsrc/schemas.tsのCharacterDataWrapperSchema参照してください。

🛠️ セットアップ

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 TypeをSSEに変更します。

    • 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 によってフィルター処理されました。」と表示された場合は、もう一度実行するか、プロンプトを言い換えてください。

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    F
    maintenance
    MCP Server for the Marvel Developer API, enabling interaction with characters and comics data.
    7
    24 npm
    14
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A humor-focused MCP server that delivers jokes through Microsoft Copilot Studio. Demonstrates how to deploy an MCP server on Azure and integrate it with Power Platform connectors for AI-powered agents.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that exposes core Azure services as read-mostly tools any MCP client can call, including Blob Storage, Key Vault, Service Bus, and Resource Manager.
    1
    MIT