Marvel MCP Server

Interactúa con la Marvel Developer API para acceder a datos sobre personajes y cómics.

Documentación

NOTA: Marvel retiró recientemente su API, por lo que ya no está disponible lamentablemente. Dejo este repositorio con fines históricos, ya que el enfoque sigue siendo relevante para los servidores MCP. Si deseas ver un ejemplo similar, consulta mi servidor MCP de DC Comics.

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

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 está afiliado a Marvel de ninguna manera.

🔧 Características

  • Listar personajes de Marvel: Admite filtros como nameStartsWith, limit, comics, series, etc.
  • Obtener un personaje de Marvel por ID: Obtén información detallada de cualquier personaje usando su characterId.
  • Obtener cómics de un personaje: Obtén una lista de cómics que presentan a un personaje específico, con varios filtros como format, dateRange, etc.
  • Visualización de contenido enriquecido: Cuando preguntes sobre personajes o cómics, el servidor:
    • Mostrará información detallada sobre personajes y cómics, incluyendo imágenes, nombres, descripciones y más.
    • Creará una página HTML (marvel-content.html) con todo el contenido.
    • Intentará abrir la página HTML recién creada en tu navegador predeterminado para una mejor experiencia de visualización.
  • Integración MCP basada en herramientas: Registra este servidor con las herramientas del Model Context Protocol (MCP) (VS Code, Claude, etc.).
  • Configuración de entorno: Usa el archivo .env para gestionar variables de entorno como MARVEL_PUBLIC_KEY, MARVEL_PRIVATE_KEY y MARVEL_API_BASE.

🧰 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): Personajes cuyos nombres comienzan con la cadena especificada.
    • modifiedSince (cadena opcional): Cadena de fecha ISO 8601 para filtrar personajes modificados desde esta fecha.
    • comics, series, events, stories (cadena opcional): Lista separada por comas de IDs 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 personajes coincidentes. Consulta CharacterDataWrapperSchema en src/schemas.ts para más detalles.

2. get_character_by_id 🆔🧑‍🎤

  • Descripción: Obtén un personaje de Marvel por su ID único.
  • Entrada:
    • characterId (número): El ID único del personaje.
  • Devuelve: Respuesta JSON con los detalles del personaje. Consulta CharacterDataWrapperSchema en src/schemas.ts para más detalles.

3. get_comics_for_character 📚🎭

  • Descripción: Obtén cómics que presentan a 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 (p. ej., comic, hardcover).
      • noVariants, hasDigitalIssue (booleano): Indicadores para excluir variantes o incluir solo números 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 IDs 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 los cómics que presentan al personaje especificado. Consulta ComicDataWrapperSchema en src/schemas.ts para más detalles.

4. get_comics 📖🕵️‍♂️

  • Descripción: Obtén listas de cómics de Marvel con filtros opcionales.
  • Entradas:
    • format (cadena opcional): Filtrar por el formato del número (p. ej., comic, digital comic, hardcover).
    • formatType (cadena opcional): Filtrar por el tipo de formato del número (comic o collection).
    • noVariants (booleano opcional): Excluir variantes (portadas alternativas, impresiones secundarias, cortes del director, etc.) del conjunto de resultados.
    • dateDescriptor (cadena opcional): Devolver cómics dentro de un rango de fechas predefinido (lastWeek, thisWeek, nextWeek, thisMonth).
    • dateRange (cadena opcional): Devolver cómics dentro de un rango de fechas personalizado. Las fechas deben especificarse como YYYY-MM-DD,YYYY-MM-DD.
    • title (cadena opcional): Devolver solo números de series cuyo título coincida con la entrada.
    • titleStartsWith (cadena opcional): Devolver solo números de series cuyo título comience con la entrada.
    • startYear (número opcional): Devolver solo números de series cuyo año de inicio coincida con la entrada.
    • issueNumber (número opcional): Devolver solo números de series cuyo número de edición coincida con la entrada.
    • diamondCode, digitalId, upc, isbn, ean, issn (cadena opcional): Filtrar por varios identificadores.
    • hasDigitalIssue (booleano opcional): Incluir solo resultados disponibles digitalmente.
    • modifiedSince (cadena opcional): Devolver solo cómics modificados desde la fecha especificada (formato ISO 8601).
    • creators, characters, series, events, stories, sharedAppearances, collaborators (cadena opcional): Lista separada por comas de IDs para filtrar por entidades relacionadas.
    • orderBy (cadena opcional): Ordenar el conjunto de resultados por un campo o varios. Agrega un "-" al valor para ordenar en orden descendente (p. ej., title, -modified).
    • limit (número opcional): Limitar el conjunto de resultados al número especificado de recursos (predeterminado: 20, máximo: 100).
    • offset (número opcional): Omitir el número especificado de recursos en el conjunto de resultados.
  • Devuelve: Respuesta JSON con los cómics coincidentes. Consulta ComicDataWrapperSchema en src/schemas.ts para más detalles.

5. get_comic_by_id 🆔📘

  • Descripción: Obtén un solo cómic de Marvel por su ID único.
  • Entrada:
    • comicId (número): El ID único del cómic.
  • Devuelve: Respuesta JSON con los detalles del cómic. Consulta ComicDataWrapperSchema en src/schemas.ts para más detalles.

6. get_characters_for_comic 🦸‍♀️📖

  • Descripción: Obtén personajes de Marvel que aparecen en un cómic específico.
  • Entradas:
    • comicId (número): El ID único del cómic.
    • Filtros opcionales:
      • name (cadena opcional): Filtrar personajes por nombre completo.
      • nameStartsWith (cadena opcional): Filtrar personajes cuyos nombres comiencen con la cadena especificada.
      • modifiedSince (cadena opcional): Cadena de fecha ISO 8601 para filtrar personajes modificados desde esta fecha.
      • series, events, stories (cadena opcional): Lista separada por comas de IDs 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. Consulta CharacterDataWrapperSchema en src/schemas.ts para más detalles.

🛠️ Configuración

Regístrate para obtener una cuenta de API de Marvel Developer y obtén tus claves de API públicas y privadas.

Si deseas ejecutarlo directamente en un host MCP, salta a las secciones Uso con Claude Desktop o Uso con GitHub Copilot.

Ejecutar el servidor localmente con MCP Inspector

Si deseas ejecutar MCP Inspector localmente para probar el servidor, sigue estos pasos:

  1. Clona este repositorio:

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

  3. Agrega tus 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. Instala las dependencias requeridas y compila el proyecto.

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

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

    Visita la URL de MCP Inspector que se muestra en la consola en 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

Uso con Claude Desktop

Agrega lo siguiente a tu 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 Smithery

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

Uso con GitHub Copilot

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

Agrega lo siguiente a tu archivo de configuración de usuario o agrégalo al archivo .vscode/mcp.json si solo deseas que esté disponible en este repositorio (puedes usar MCP: Add Server desde la paleta de comandos y seleccionar Global o Workspace):

"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, abre GitHub Copilot y selecciona el modo Agent (no Ask ni Edits).

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

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

  4. Haz 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 ves "Sorry, the response was filtered by the Responsible AI Service.", inténtalo de nuevo o reformula la pregunta.

  5. Bonus: Cuando preguntes sobre personajes o cómics, el servidor creará automáticamente un archivo marvel-content.html en la raíz de tu proyecto con una página bellamente diseñada que contiene toda la información e imágenes de personajes/cómics, ¡y luego la abrirá en tu navegador!

MseeP.ai Security Assessment Badge