Azure Functions を使用した Marvel 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: Marvel MCP
🧰 ツール
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 での使用」セクションに進んでください。
ローカルでサーバーを実行する
Azure ストレージ エミュレーターが必要です。次の 2 つのオプションがあります。
Docker コンテナで Azurite を起動します。
docker run -p 10000:10000 -p 10001:10001 -p 10002:10002 \ mcr.microsoft.com/azure-storage/azuriteAzurite VS Code拡張機能を使用できます。拡張機能をインストールしたら、VS Codeコマンドパレットから
Azurite: Startを実行してください。
このリポジトリをクローンします:
git clone https://github.com/DanWahlin/marvel-mcp-azure-functions.env.templateの名前を.envに変更します。Marvel API の公開キーと秘密キーを
.envファイルに追加します。MARVEL_PUBLIC_KEY=YOUR_PUBLIC_KEY MARVEL_PRIVATE_KEY=YOUR_PRIVATE_KEY MARVEL_API_BASE=https://gateway.marvel.com/v1/public必要な依存関係をインストールし、プロジェクトをビルドします。
npm install npm run buildAzure Functions ホストをローカルで起動します。
npm start(オプション) 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のツールの使用
mcp サーバーが検出可能になったので、GitHub Copilot を開いて、
Agentモード (AskまたはEditはない) を選択します。Copilot チャット テキスト フィールドの「更新」ボタンを選択して、サーバー リストを更新します。
「🛠️」ボタンを選択すると、このリポジトリのツールも含め、使用可能なすべてのツールが表示されます。
チャットに、ツールの 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 によってフィルター処理されました。」と表示された場合は、もう一度実行するか、プロンプトを言い換えてください。