Marvel MCP
Marvel MCP サーバー
Marvel Developer API用のMCPサーバー。キャラクターやコミックデータとのインタラクションを可能にします。このプロジェクトの主な目的は、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: MyAnimeList 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 ホストで直接実行する場合は、 「Claude Desktop での使用」または「GitHub Copilot での使用」セクションに進んでください。
MCP Inspector を使用してサーバーをローカルで実行する
MCP Inspector をローカルで実行してサーバーをテストする場合は、次の手順に従います。
このリポジトリをクローンします:
git clone https://github.com/DanWahlin/marvel-mcp.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 build(オプション) 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 claudeGitHub Copilot と併用する
注: Claude Desktop ですでに MCP サーバーが有効になっている場合は、VS Code 設定に
chat.mcp.discovery.enabled: trueを追加すると、既存の MCP サーバー リストが検出されます。
次の内容をsettings.jsonファイルに追加します(特定のリポジトリ用に必要な場合は.vscode/mcp.jsonファイルに追加することもできます)。
"mcp": {
"inputs": [
{
"type": "promptString",
"id": "marvel-public-api-key",
"description": "Marvel public API Key",
"password": true
},
{
"type": "promptString",
"id": "marvel-private-api-key",
"description": "Marvel private API Key",
"password": true
}
],
"servers": {
"marvel-mcp": {
"command": "npx",
// "command": "node",
"args": [
"-y",
"@codewithdan/marvel-mcp"
// "/PATH/TO/marvel-mcp/dist/index.js"
],
"env": {
"MARVEL_PUBLIC_KEY": "${input:marvel-public-api-key}",
"MARVEL_PRIVATE_KEY": "${input:marvel-private-api-key}",
"MARVEL_API_BASE": "https://gateway.marvel.com/v1/public"
}
}
}
}GitHub Copilotのツールの使用
mcp サーバーが検出可能になったので、GitHub Copilot を開いて、
Agentモード (AskやEditsはない) を選択します。Copilot チャット テキスト フィールドの「更新」ボタンを選択して、サーバー リストを更新します。
「🛠️」ボタンを選択すると、このリポジトリのツールも含め、使用可能なすべてのツールが表示されます。
チャットに、ツールの 1 つが自然に呼び出されるような質問を投稿します。たとえば、次のようになります。
List 10 marvel characters. What comics is Wolverine in? Give me details about villains in the Marvel universe. Which characters appear in the Avengers comics? What characters are in the Hedge Knight II: Sworn Sword (2007) comic? List 10 characters from Ant-Man comics.注: 「申し訳ありません。応答は Responsible AI Service によってフィルター処理されました。」と表示された場合は、もう一度実行するか、プロンプトを言い換えてください。
Available Tools
7 toolsgenerate_comics_htmlC
Create an HTML page displaying Marvel comics with their images
| Name | Required | Description | Default |
|---|---|---|---|
| characters | No | ||
| collaborators | No | ||
| creators | No | ||
| dateDescriptor | No | ||
| dateRange | No | ||
| diamondCode | No | ||
| digitalId | No | ||
| ean | No | ||
| events | No | ||
| format | No | ||
| formatType | No | ||
| hasDigitalIssue | No | ||
| isbn | No | ||
| issn | No | ||
| issueNumber | No | ||
| limit | No | Limit results (max 100) | |
| modifiedSince | No | ||
| noVariants | No | ||
| offset | No | ||
| orderBy | No | ||
| series | No | ||
| sharedAppearances | No | ||
| startYear | No | ||
| stories | No | ||
| title | No | Custom title for the HTML page | |
| titleStartsWith | No | ||
| upc | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While 'Create an HTML page' implies a write/generation operation, it doesn't specify whether this requires authentication, where the HTML is saved/displayed, whether it's a one-time generation or overwrites existing files, or what happens if parameters are invalid. For a tool with 27 parameters and no annotation coverage, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that efficiently communicates the core purpose. There's no wasted language or unnecessary elaboration. It's appropriately sized for what it does convey.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 27 parameters, no annotations, no output schema, and minimal schema descriptions, the description is inadequate. It doesn't explain what the HTML output looks like, where it goes, how comics are selected/filtered, or provide any guidance on the numerous parameters. The description fails to address the complexity of the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 7% (only 'limit' and 'title' have descriptions), leaving 25 parameters undocumented in the schema. The description mentions 'Marvel comics' which provides some context for the parameters, but doesn't explain what any specific parameters mean or how they filter the comics. It doesn't compensate for the poor schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Create an HTML page displaying Marvel comics with their images.' It specifies the action (create), resource (HTML page), and content (Marvel comics with images). However, it doesn't distinguish this from sibling tools like 'get_comics' which likely retrieve raw data rather than generate HTML output.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'get_comics' or explain that this tool is for presentation/formatting purposes rather than data retrieval. There's no context about prerequisites or when this tool would be preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_character_by_idC
Fetch a Marvel character by ID
| Name | Required | Description | Default |
|---|---|---|---|
| characterId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool fetches data, implying a read-only operation, but doesn't specify whether it requires authentication, has rate limits, returns errors for invalid IDs, or provides pagination details. For a tool with zero annotation coverage, this is insufficient behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with zero wasted words. It's appropriately sized for a simple lookup tool and front-loaded with the essential action and resource. Every word earns its place, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (1 parameter, no output schema, no annotations), the description is incomplete. It doesn't explain what data is returned (e.g., character details, comics list), error handling, or usage context relative to siblings. For a tool in a Marvel API context with multiple related tools, more guidance is needed to be fully helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 1 parameter with 0% description coverage, so the schema provides no semantic information. The description mentions 'by ID' but doesn't explain what a character ID is (e.g., numeric identifier, format, source). It adds minimal value beyond the schema, failing to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('fetch') and resource ('Marvel character by ID'), making the purpose understandable. It distinguishes from siblings like 'get_characters' (which likely fetches multiple characters) by specifying the single-ID lookup. However, it doesn't explicitly mention what data is returned about the character, which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose this over 'get_characters' (e.g., for a specific character vs. listing), nor does it address prerequisites like needing a valid character ID. This leaves the agent without contextual usage instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_charactersC
Fetch Marvel characters with optional filters
| Name | Required | Description | Default |
|---|---|---|---|
| comics | No | ||
| events | No | ||
| limit | No | ||
| modifiedSince | No | ||
| name | No | ||
| nameStartsWith | No | ||
| offset | No | ||
| orderBy | No | ||
| series | No | ||
| stories | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states 'Fetch' which implies a read operation, but doesn't disclose behavioral traits such as rate limits, authentication needs, pagination behavior (implied by limit/offset but not explained), or what happens with invalid filters. For a tool with 10 parameters and no annotations, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose. Every word earns its place, with no redundancy or unnecessary elaboration. It's appropriately sized for a basic tool description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (10 parameters, 0% schema coverage, no annotations, no output schema), the description is inadequate. It doesn't explain parameter meanings, return values, error handling, or usage context. For a filtering tool with many options, more detail is needed to be complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It only mentions 'optional filters' generically without explaining any of the 10 parameters (e.g., what 'comics', 'events', 'orderBy' mean). This adds minimal value beyond the schema, failing to address the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Fetch') and resource ('Marvel characters'), and mentions optional filtering. However, it doesn't explicitly differentiate from sibling tools like 'get_character_by_id' or 'get_characters_for_comic', which would require a 5. The purpose is clear but lacks sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'get_character_by_id' or 'get_characters_for_comic'. It mentions optional filters but doesn't specify scenarios or exclusions. This leaves the agent without clear usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_characters_for_comicC
Fetch Marvel characters for a given comic
| Name | Required | Description | Default |
|---|---|---|---|
| comicId | Yes | ||
| events | No | ||
| limit | No | ||
| modifiedSince | No | ||
| name | No | ||
| nameStartsWith | No | ||
| offset | No | ||
| orderBy | No | ||
| series | No | ||
| stories | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states 'Fetch' (implying a read operation) but doesn't disclose behavioral traits like pagination (offset/limit parameters), rate limits, authentication needs, error conditions, or response format. The description adds minimal context beyond the basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise single sentence with zero waste. It's front-loaded with the core purpose and efficiently communicates the essential action and target.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (10 parameters, 1 required), lack of annotations, and no output schema, the description is incomplete. It doesn't address parameter usage, behavioral expectations, or return values, making it inadequate for a tool with this many undocumented parameters and no structured guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate but doesn't. It mentions 'for a given comic' which hints at the required 'comicId', but doesn't explain the purpose of the other 9 parameters (e.g., 'events', 'modifiedSince', 'orderBy'). This leaves most parameters undocumented in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Fetch') and target resource ('Marvel characters for a given comic'), distinguishing it from siblings like 'get_characters' (general character list) and 'get_comics_for_character' (reverse relationship). However, it doesn't specify the exact scope (e.g., all characters appearing in that comic vs. filtered subset).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like 'get_characters' or 'get_character_by_id'. The description implies usage for comic-specific character queries but doesn't mention prerequisites, limitations, or comparative scenarios with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_comic_by_idC
Fetch a single Marvel comic by ID
| Name | Required | Description | Default |
|---|---|---|---|
| comicId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool fetches data, implying a read-only operation, but doesn't address critical aspects like authentication needs, rate limits, error handling, or what happens with invalid IDs. This leaves significant gaps in understanding how the tool behaves beyond its basic function.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise—a single sentence with no wasted words—and front-loads the key information ('Fetch a single Marvel comic by ID'). Every word earns its place, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema) and lack of annotations, the description is incomplete. It doesn't cover behavioral traits (e.g., error cases), parameter details, or output expectations, leaving the agent with insufficient context to use the tool effectively beyond its basic purpose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 0%, but the description adds minimal semantic context by specifying that the parameter 'comicId' is used to fetch a single comic. However, it doesn't clarify the format (e.g., numeric ID), valid ranges, or examples, which is insufficient to fully compensate for the lack of schema documentation. The baseline is adjusted upward due to only one parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Fetch') and resource ('a single Marvel comic by ID'), making the purpose unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'get_comics' (which likely fetches multiple comics), leaving room for minor ambiguity about when to choose this specific tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'get_comics' or 'get_comics_for_character'. It lacks context about prerequisites (e.g., needing a valid comic ID) or exclusions, leaving the agent to infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_comicsC
Fetches lists of Marvel comics with optional filters
| Name | Required | Description | Default |
|---|---|---|---|
| characters | No | ||
| collaborators | No | ||
| creators | No | ||
| dateDescriptor | No | ||
| dateRange | No | ||
| diamondCode | No | ||
| digitalId | No | ||
| ean | No | ||
| events | No | ||
| format | No | ||
| formatType | No | ||
| hasDigitalIssue | No | ||
| isbn | No | ||
| issn | No | ||
| issueNumber | No | ||
| limit | No | ||
| modifiedSince | No | ||
| noVariants | No | ||
| offset | No | ||
| orderBy | No | ||
| series | No | ||
| sharedAppearances | No | ||
| startYear | No | ||
| stories | No | ||
| title | No | ||
| titleStartsWith | No | ||
| upc | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states it 'fetches' with 'optional filters.' It doesn't disclose whether this is a read-only operation, pagination behavior (despite limit/offset parameters), rate limits, authentication requirements, error conditions, or what the return format looks like (no output schema).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose. There's no wasted language or redundancy, making it appropriately concise for a tool with many parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with 27 parameters, no annotations, and no output schema, the description is severely incomplete. It doesn't explain the tool's behavior, parameter usage, return format, or how it relates to sibling tools, leaving critical gaps for an agent to understand and invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 27 parameters and 0% schema description coverage, the description provides no parameter semantics beyond 'optional filters.' It doesn't explain what any parameter does, their formats (e.g., dateRange format), relationships, or default values. The description fails to compensate for the massive schema coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('fetches lists') and resource ('Marvel comics') with the scope of optional filtering. It distinguishes from siblings like 'get_comic_by_id' (single comic) and 'get_comics_for_character' (character-specific), but doesn't explicitly differentiate from other list tools like 'get_characters'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'get_comic_by_id' for single comics or 'get_comics_for_character' for character-specific comics. It mentions optional filters but doesn't explain when specific filters are appropriate or what the default behavior is.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_comics_for_characterC
Fetch Marvel comics filtered by character ID and optional filters
| Name | Required | Description | Default |
|---|---|---|---|
| characterId | Yes | ||
| collaborators | No | ||
| creators | No | ||
| dateDescriptor | No | ||
| dateRange | No | ||
| diamondCode | No | ||
| digitalId | No | ||
| ean | No | ||
| events | No | ||
| format | No | ||
| formatType | No | ||
| hasDigitalIssue | No | ||
| isbn | No | ||
| issn | No | ||
| issueNumber | No | ||
| limit | No | ||
| modifiedSince | No | ||
| noVariants | No | ||
| offset | No | ||
| orderBy | No | ||
| series | No | ||
| sharedAppearances | No | ||
| startYear | No | ||
| stories | No | ||
| title | No | ||
| titleStartsWith | No | ||
| upc | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but lacks behavioral details. It doesn't disclose whether this is a read-only operation, potential rate limits, authentication needs, pagination behavior (implied by 'limit' and 'offset' parameters but not explained), or what the response format looks like (no output schema). The description only states the basic filtering capability.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose. Every word earns its place—no redundancy or fluff. It's appropriately sized for a tool with many parameters but could benefit from additional explanatory sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the high complexity (27 parameters, 0% schema coverage, no output schema, no annotations), the description is severely incomplete. It doesn't explain parameter usage, response format, error conditions, or behavioral constraints. For a tool with extensive filtering options, this minimal description leaves the agent guessing about implementation details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 27 parameters and 0% schema description coverage, the description fails to compensate for the massive documentation gap. It mentions 'optional filters' generically but doesn't explain any specific parameters (e.g., what 'dateDescriptor' or 'formatType' mean, how 'collaborators' should be formatted). The description adds minimal value beyond the schema's structure.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('fetch'), resource ('Marvel comics'), and primary filter ('by character ID'). It distinguishes from siblings like 'get_comics' (which likely lacks character filtering) and 'get_comic_by_id' (which fetches a single comic). However, it doesn't explicitly differentiate from 'get_characters_for_comic' (which has an inverse relationship).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions 'optional filters' but provides no guidance on when to use this tool versus alternatives. It doesn't specify when to choose this over 'get_comics' (for broader searches) or 'get_comic_by_id' (for single comic details), nor does it mention prerequisites like needing a character ID from 'get_character_by_id' first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
7 tool updates
v1.0.0- First observed
generate_comics_html - First observed
get_character_by_id - First observed
get_characters - First observed
get_characters_for_comic - First observed
get_comic_by_id - First observed
get_comics - First observed
get_comics_for_character
TDQS
Scored across 7 tools
Each tool has a clearly distinct purpose targeting specific resources and actions: character vs. comic operations, with clear separation between fetching by ID, listing with filters, and cross-referencing relationships. No ambiguity exists between tools like get_characters and get_comics, or between get_character_by_id and get_characters.
All tools follow a consistent verb_noun pattern with snake_case, using 'get_' for fetch operations and 'generate_' for creation. The naming is predictable and readable, with clear patterns like get_character_by_id, get_characters, get_comics, and get_comics_for_character.
Seven tools is well-scoped for a Marvel API server, covering core operations for characters and comics without bloat. Each tool earns its place by providing distinct functionality, from basic fetches to cross-referencing and HTML generation, making it efficient for agent use.
The tool set covers essential read operations for characters and comics comprehensively, including filtering, cross-references, and HTML generation. A minor gap exists in lacking update/delete operations, but this is typical for an API wrapper focused on data retrieval, and agents can work around it for the domain.
Maintenance
Related MCP Connectors
- mcpOAuthcom.zomato
An MCP server that exposes functionalities to use Zomato's services.
Superhero MCP — wraps akabab.github.io/superhero-api (free, no auth)
Rick and Morty MCP — wraps the Rick and Morty API (free, no auth)
The official MCP Server for the Mux API
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn Azure Functions-based MCP server that enables interaction with Marvel characters and comics data through the official Marvel Developer API.1MIT
- AlicenseBqualityDmaintenanceMCP Server for interacting with the MyAnimeList API, allowing LLM clients to access and interact with anime, manga and more.154MIT
- MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for querying the Star Wars universe via the SWAPI API, providing access to characters, films, starships, vehicles, species, and planets.ISC