mcpField
M
Marvel MCP Server using Azure Functions

Marvel MCP Server using Azure Functions

ローカル
github.com/DanWahlinクラウド・インフラ180 週間前に更新

Marvel MCP Server using Azure Functions について

Marvel MCP Server using Azure Functionsは、公式Marvel APIを介してキャラクターやコミックを検索するMCPツールを提供します。MCPホストの利用者向けで、Azure Functionsによるサーバー運用例も示します。

主な機能

  1. 01条件を指定したキャラクター検索
  2. 02IDによるキャラクター詳細取得
  3. 03条件を指定したコミック一覧
  4. 04特定キャラクターが登場するコミック検索
  5. 05コミックに登場するキャラクター検索
  6. 06Azure Functionsでの設定とデプロイ

活用シーン

  1. 01名前や関連エンティティからキャラクターを検索
  2. 02キャラクターが登場するコミックを確認
  3. 03コミックに登場するキャラクターを調査
  4. 04AzureにリモートMCPサーバーをデプロイ

MCP 対応

MCPクライアント向けに、Marvelのキャラクターやコミックを検索するツールを提供し、ID検索や条件付き一覧取得に対応します。SSEでMCPホストに接続でき、Azure Functionsにもデプロイできます。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"marvel-mcp-azure-functions": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"\\"
]
}
}
}
起動コマンドdocker run -i --rm '\'

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

パッケージ
oci\

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

README の画像

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

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

機能 • ツール • セットアップ • MCP ホストの設定

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

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

🔧 機能

  • Marvel キャラクターの一覧表示:nameStartsWith、limit、comics、series などのフィルターに対応しています。
  • ID による Marvel キャラクターの取得:characterId を使用して、任意のキャラクターの詳細情報を取得します。
  • キャラクターに関連するコミックの取得:特定のキャラクターが登場するコミックの一覧を、format、dateRange などのさまざまなフィルターを指定して取得します。
  • ツールベースの MCP 連携:このサーバーを Model Context Protocol(MCP)ツール(VS Code、Claude など)に登録できます。
  • 環境設定:.env ファイルを使用して、MARVEL_PUBLIC_KEY、MARVEL_PRIVATE_KEY、MARVEL_API_BASE などの環境変数を管理します。

🧰 ツール

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(number):キャラクターの一意の ID。
    • 任意のフィルター:
      • format、formatType(string):コミックの形式で絞り込みます(例:comic、hardcover)。
      • noVariants、hasDigitalIssue(boolean):バリアントを除外するか、デジタル版の号のみを含めるかを指定するフラグ。
      • dateDescriptor(string):thisWeek、nextWeekなど、定義済みの日付範囲。
      • dateRange(string):YYYY-MM-DD,YYYY-MM-DD形式で指定するカスタムの日付範囲。
      • title、titleStartsWith(string):タイトルまたはタイトルの先頭部分で絞り込みます。
      • startYear、issueNumber、digitalId(number):数値によるフィルター。
      • diamondCode、upc、isbn、ean、issn(string):識別子によるフィルター。
      • creators、series、events、stories、sharedAppearances、collaborators(string):関連エンティティ ID のカンマ区切りリスト。
      • orderBy(string):結果の並べ替えに使用するフィールド。titleや-modifiedなどを指定します。
      • limit、offset(number):ページネーションのオプション。
  • 戻り値:指定したキャラクターが登場するコミックを含む JSON レスポンス。詳細は src/schemas.ts の ComicDataWrapperSchema を参照してください。
4. get_comics 📖🕵️‍♂️
  • 説明:任意のフィルターを指定して、Marvel コミックの一覧を取得します。
  • 入力:
    • format(任意の string):号の形式で絞り込みます(例:comic、digital comic、hardcover)。
    • formatType(任意の string):号の形式タイプ(comicまたはcollection)で絞り込みます。
    • noVariants(任意の boolean):バリアント(別カバー、第2刷、ディレクターズカットなど)を結果から除外します。
    • dateDescriptor(任意の string):定義済みの日付範囲(lastWeek、thisWeek、nextWeek、thisMonth)内のコミックを返します。
    • dateRange(任意の string):カスタムの日付範囲内のコミックを返します。日付は YYYY-MM-DD,YYYY-MM-DD形式で指定してください。
    • title(任意の string):タイトルが入力値に一致するシリーズの号のみを返します。
    • titleStartsWith(任意の string):タイトルが入力値で始まるシリーズの号のみを返します。
    • startYear(任意の number):開始年が入力値に一致するシリーズの号のみを返します。
    • issueNumber(任意の number):号番号が入力値に一致するシリーズの号のみを返します。
    • diamondCode、digitalId、upc、isbn、ean、issn(任意の string):各種識別子で絞り込みます。
    • hasDigitalIssue(任意の boolean):デジタル版が提供されている結果のみを含めます。
    • modifiedSince(任意の string):指定日以降に変更されたコミックのみを返します(ISO 8601形式)。
    • creators、characters、series、events、stories、sharedAppearances、collaborators(任意の string):関連エンティティで絞り込むための ID のカンマ区切りリスト。
    • orderBy(任意の string):1つまたは複数のフィールドで結果を並べ替えます。降順にするには値の先頭に「-」を付けます(例:title、-modified)。
    • limit(任意の number):結果に含めるリソース数を指定します(デフォルト:20、最大:100)。
    • offset(任意の number):結果から指定した数のリソースをスキップします。
  • 戻り値:条件に一致するコミックを含む JSON レスポンス。詳細は src/schemas.ts の ComicDataWrapperSchema を参照してください。
5. get_comic_by_id 🆔📘
  • 説明:一意の ID を指定して、Marvel コミックを1冊取得します。
  • 入力:
    • comicId(number):コミックの一意の ID。
  • 戻り値:コミックの詳細を含む JSON レスポンス。詳細は src/schemas.ts の ComicDataWrapperSchema を参照してください。
6. get_characters_for_comic 🦸‍♀️📖
  • 説明:特定のコミックに登場するMarvelのキャラクターを取得します。
  • 入力:
    • 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 Storage Emulatorが必要です。方法は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"
   }
 }
}

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

この 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. 次のように、ツールのいずれかが自然に呼び出されるような質問をチャットに入力します。

    マーベルのキャラクターを10人リストアップしてください。画像も含めてください。
    
    ウルヴァリンはどのコミックに登場しますか?
    
    アベンジャーズのコミックにはどのキャラクターが登場しますか?
    
    コミック『Hedge Knight II: Sworn Sword』(2007年)にはどのキャラクターが登場しますか?
    

    注: 「Sorry, the response was filtered by the Responsible AI Service.」と表示された場合は、もう一度実行するか、プロンプトの表現を変えてみてください。

コメント

MCP は初めてですか?

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

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