Skip to main content
Glama
DanWahlin

Marvel MCP

by DanWahlin

Servidor MCP de Marvel

Abrir proyecto en GitHub Codespaces Versión del nodo insignia de herrería Licencia

Características • Herramientas • Configuración • Configuración de un host MCP

Servidor MCP para la API para desarrolladores de Marvel , que permite la interacción con personajes y datos de cómics. El objetivo principal del proyecto es mostrar cómo se puede usar un servidor MCP para interactuar con las API.

Nota : Todos los datos utilizados por este servidor MCP se obtienen de la API oficial de Marvel y son propiedad de Marvel. Este proyecto no tiene ninguna afiliación con Marvel.

🔧 Características

  • Lista de personajes de Marvel : admite filtros como nameStartsWith , limit , comics , series , etc.

  • Obtener un personaje de Marvel por ID : obtén información detallada sobre cualquier personaje usando su characterId .

  • Obtener cómics de un personaje : obtén una lista de cómics que presentan un personaje específico, con varios filtros como format , dateRange , etc.

  • Integración de MCP basada en herramientas : registre este servidor con herramientas de Protocolo de contexto de modelo (MCP) (VS Code, Claude, etc.).

  • Configuración del entorno : utilice el archivo .env para administrar variables de entorno como MARVEL_PUBLIC_KEY , MARVEL_PRIVATE_KEY y MARVEL_API_BASE .

Related MCP server: MyAnimeList MCP Server

🧰 Herramientas

1. get_characters 🔍🦸‍♂️

  • Descripción : Obtén personajes de Marvel con filtros opcionales.

  • Entradas :

    • name (cadena opcional): nombre completo del personaje.

    • nameStartsWith (cadena opcional): Caracteres cuyos nombres comienzan con la cadena especificada.

    • modifiedSince (cadena opcional): cadena de fecha ISO 8601 para filtrar caracteres modificados desde esta fecha.

    • comics , series , events , stories (cadena opcional): lista de ID separados por comas para filtrar por entidades relacionadas.

    • orderBy (cadena opcional): campos para ordenar los resultados, como name o -modified .

    • limit (número opcional): número máximo de resultados a devolver (1–100).

    • offset (número opcional): Número de resultados a omitir para la paginación.

  • Devuelve : Respuesta JSON con los caracteres coincidentes. Consulte CharacterDataWrapperSchema en src/schemas.ts para obtener más información.

2. get_character_by_id 🆔🧑‍🎤

  • Descripción : Obtén un personaje de Marvel por su ID único.

  • Aporte :

    • characterId (número): el ID único del personaje.

  • Devuelve : Respuesta JSON con los detalles del personaje. Consulte CharacterDataWrapperSchema en src/schemas.ts para más detalles.

3. get_comics_for_character 📚🎭

  • Descripción : Obtenga cómics que presentan un personaje específico, con filtros opcionales.

  • Entradas :

    • characterId (número): el ID único del personaje.

    • Filtros opcionales:

      • format , formatType (cadena): filtrar por formato de cómic (por ejemplo, comic , hardcover ).

      • noVariants , hasDigitalIssue (booleano): Banderas para excluir variantes o incluir solo ediciones digitales.

      • dateDescriptor (cadena): rangos de fechas predefinidos como thisWeek , nextWeek .

      • dateRange (cadena): rango de fechas personalizado en el formato YYYY-MM-DD,YYYY-MM-DD .

      • title , titleStartsWith (cadena): Filtrar por título o prefijo de título.

      • startYear , issueNumber , digitalId (número): filtros numéricos.

      • diamondCode , upc , isbn , ean , issn (cadena): filtros de identificadores.

      • creators , series , events , stories , sharedAppearances , collaborators (cadena): lista separada por comas de ID de entidades relacionadas.

      • orderBy (cadena): Campos para ordenar los resultados, como title o -modified .

      • limit , offset (número): Opciones de paginación.

  • Devuelve : Respuesta JSON con cómics del personaje especificado. Consulta ComicDataWrapperSchema en src/schemas.ts para más detalles.

4. get_comics 📖🕵️‍♂️

  • Descripción : Obtiene listas de cómics de Marvel con filtros opcionales.

  • Entradas :

    • format (cadena opcional): filtrar por el formato del número (por ejemplo, comic , digital comic , hardcover ).

    • formatType (cadena opcional): Filtrar por el tipo de formato de publicación ( comic o collection ).

    • noVariants (booleano opcional): excluye variantes (portadas alternativas, impresiones secundarias, cortes del director, etc.) del conjunto de resultados.

    • dateDescriptor (cadena opcional): Devuelve cómics dentro de un rango de fechas predefinido ( lastWeek , thisWeek , nextWeek , thisMonth ).

    • dateRange (cadena opcional): Devuelve los cómics dentro de un rango de fechas personalizado. Las fechas deben especificarse como YYYY-MM-DD,YYYY-MM-DD .

    • title (cadena opcional): Devuelve solo los números de la serie cuyo título coincida con la entrada.

    • titleStartsWith (cadena opcional): Devuelve solo los números de la serie cuyo título comience con la entrada.

    • startYear (número opcional): Devuelve solo los números de la serie cuyo año de inicio coincida con la entrada.

    • issueNumber (número opcional): Devuelve solo los números de la serie cuyo número de número coincida con la entrada.

    • diamondCode , digitalId , upc , isbn , ean , issn (cadena opcional): Filtrar por varios identificadores.

    • hasDigitalIssue (booleano opcional): incluye solo resultados que estén disponibles digitalmente.

    • modifiedSince (cadena opcional): Devuelve solo los cómics que se han modificado desde la fecha especificada (formato ISO 8601).

    • creators , characters , series , events , stories , sharedAppearances , collaborators (cadena opcional): lista de ID separados por comas para filtrar por entidades relacionadas.

    • orderBy (cadena opcional): Ordena el conjunto de resultados por uno o más campos. Añade un "-" al valor para ordenar en orden descendente (p. ej., title , -modified ).

    • limit (número opcional): limita el conjunto de resultados a la cantidad especificada de recursos (predeterminado: 20, máximo: 100).

    • offset (número opcional): omite la cantidad especificada de recursos en el conjunto de resultados.

  • Devuelve : Respuesta JSON con los cómics correspondientes. Consulte ComicDataWrapperSchema en src/schemas.ts para obtener más información.

5. get_comic_by_id 🆔📘

  • Descripción : Obtiene un solo cómic de Marvel por su identificación única.

  • Aporte :

    • comicId (número): el identificador único del cómic.

  • Devuelve : Respuesta JSON con los detalles del cómic. Consulte ComicDataWrapperSchema en src/schemas.ts para más detalles.

6. get_characters_for_comic 🦸‍♀️📖

  • Descripción : Busca personajes de Marvel que aparecen en un cómic específico.

  • Entradas :

    • comicId (número): el identificador único del cómic.

    • Filtros opcionales:

      • name (cadena opcional): filtra caracteres por nombre completo.

      • nameStartsWith (cadena opcional): filtra caracteres cuyos nombres comienzan con la cadena especificada.

      • modifiedSince (cadena opcional): cadena de fecha ISO 8601 para filtrar caracteres modificados desde esta fecha.

      • series , events , stories (cadena opcional): lista separada por comas de ID de entidades relacionadas para filtrar.

      • orderBy (cadena opcional): campos para ordenar los resultados, como name o -modified .

      • limit (número opcional): número máximo de resultados a devolver (1–100).

      • offset (número opcional): Número de resultados a omitir para la paginación.

  • Devuelve : Respuesta JSON con los personajes que aparecen en el cómic especificado. Consulte CharacterDataWrapperSchema en src/schemas.ts para obtener más información.

🛠️ Configuración

Regístrese para obtener una cuenta de API para desarrolladores de Marvel y obtenga sus claves API públicas y privadas.

Si desea ejecutarlo directamente en un host MCP, vaya a las secciones Usar con Claude Desktop o Usar con GitHub Copilot .

Ejecute el servidor localmente con MCP Inspector

Si desea ejecutar MCP Inspector localmente para probar el servidor, siga estos pasos:

  1. Clonar este repositorio:

    git clone https://github.com/DanWahlin/marvel-mcp
  2. Cambie el nombre .env.template a .env .

  3. Agregue sus claves públicas y privadas de la API de Marvel al archivo .env .

    MARVEL_PUBLIC_KEY=YOUR_PUBLIC_KEY
    MARVEL_PRIVATE_KEY=YOUR_PRIVATE_KEY
    MARVEL_API_BASE=https://gateway.marvel.com/v1/public
  4. Instale las dependencias necesarias y compile el proyecto.

    npm install
    npm run build
  5. (Opcional) Para probar el servidor usando MCP Inspector, ejecute el siguiente comando:

    # Start the MCP Inspector
    npx @modelcontextprotocol/inspector node build/index.js

    Visita la URL del Inspector MCP que se muestra en la consola de tu navegador. Cambia Arguments a dist/index.js y selecciona Connect . Selecciona List Tools para ver las herramientas disponibles.

Configuración de un host MCP

Usar con Claude Desktop

Agregue lo siguiente a su 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"
      }
    }
  }
}

Instalación mediante herrería

Para instalar Marvel MCP Server para Claude Desktop automáticamente a través de Smithery :

npx -y @smithery/cli install @DanWahlin/marvel-mcp --client claude

Usar con GitHub Copilot

Nota : Si ya tiene el servidor MCP habilitado con Claude Desktop, agregue chat.mcp.discovery.enabled: true en la configuración de VS Code y descubrirá las listas de servidores MCP existentes.

Agregue lo siguiente a su archivo settings.json (tenga en cuenta que también puede agregarlo al archivo .vscode/mcp.json si lo desea para un repositorio específico):

"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"
        }
    }
  }
}

Uso de herramientas en GitHub Copilot

  1. Ahora que el servidor mcp es detectable, abra GitHub Copilot y seleccione el modo Agent (no Ask ni Edits ).

  2. Seleccione el botón "actualizar" en el campo de texto del chat de Copilot para actualizar la lista de servidores.

  3. Seleccione el botón "🛠️" para ver todas las herramientas posibles, incluidas las de este repositorio.

  4. Coloque una pregunta en el chat que invoque naturalmente una de las herramientas, por ejemplo:

    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.

    Nota : Si ve "Lo sentimos, la respuesta fue filtrada por el servicio de IA responsable", intente ejecutarlo nuevamente o reformular el mensaje.

Available Tools

7 tools
generate_comics_htmlC

Create an HTML page displaying Marvel comics with their images

ParametersJSON Schema
NameRequiredDescriptionDefault
charactersNo
collaboratorsNo
creatorsNo
dateDescriptorNo
dateRangeNo
diamondCodeNo
digitalIdNo
eanNo
eventsNo
formatNo
formatTypeNo
hasDigitalIssueNo
isbnNo
issnNo
issueNumberNo
limitNoLimit results (max 100)
modifiedSinceNo
noVariantsNo
offsetNo
orderByNo
seriesNo
sharedAppearancesNo
startYearNo
storiesNo
titleNoCustom title for the HTML page
titleStartsWithNo
upcNo

TDQS

C2.8/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
characterIdYes

TDQS

C2.8/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
comicsNo
eventsNo
limitNo
modifiedSinceNo
nameNo
nameStartsWithNo
offsetNo
orderByNo
seriesNo
storiesNo

TDQS

C2.8/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
comicIdYes
eventsNo
limitNo
modifiedSinceNo
nameNo
nameStartsWithNo
offsetNo
orderByNo
seriesNo
storiesNo

TDQS

C2.8/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
comicIdYes

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
charactersNo
collaboratorsNo
creatorsNo
dateDescriptorNo
dateRangeNo
diamondCodeNo
digitalIdNo
eanNo
eventsNo
formatNo
formatTypeNo
hasDigitalIssueNo
isbnNo
issnNo
issueNumberNo
limitNo
modifiedSinceNo
noVariantsNo
offsetNo
orderByNo
seriesNo
sharedAppearancesNo
startYearNo
storiesNo
titleNo
titleStartsWithNo
upcNo

TDQS

C2.8/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
characterIdYes
collaboratorsNo
creatorsNo
dateDescriptorNo
dateRangeNo
diamondCodeNo
digitalIdNo
eanNo
eventsNo
formatNo
formatTypeNo
hasDigitalIssueNo
isbnNo
issnNo
issueNumberNo
limitNo
modifiedSinceNo
noVariantsNo
offsetNo
orderByNo
seriesNo
sharedAppearancesNo
startYearNo
storiesNo
titleNo
titleStartsWithNo
upcNo

TDQS

C2.8/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

  1. 7 tool updatesv1.0.0
    • First observedgenerate_comics_html
    • First observedget_character_by_id
    • First observedget_characters
    • First observedget_characters_for_comic
    • First observedget_comic_by_id
    • First observedget_comics
    • First observedget_comics_for_character

TDQS

B3.4/5.0

Scored across 7 tools

Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    An Azure Functions-based MCP server that enables interaction with Marvel characters and comics data through the official Marvel Developer API.
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for querying the Star Wars universe via the SWAPI API, providing access to characters, films, starships, vehicles, species, and planets.
    ISC