Marvel MCP Server

by DanWahlin
Verified

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Servidor Marvel MCP con Azure Functions

CaracterísticasHerramientasConfiguraciónConfiguració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 un servidor MCP alojado en Azure Functions puede usarse 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 .

🧰 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 usar el servidor MCP directamente en un host MCP, vaya a las secciones Usar con GitHub Copilot o Usar con Claude Desktop .

Ejecutar el servidor localmente

  1. Se necesita un emulador de Azure Storage. Hay dos opciones:
    • Inicie Azurite en un contenedor Docker:
      docker run -p 10000:10000 -p 10001:10001 -p 10002:10002 \ mcr.microsoft.com/azure-storage/azurite
    • Puedes usar la extensión Azurite para VS Code . Una vez instalada, ejecuta Azurite: Start desde la paleta de comandos de VS Code.
  2. Clonar este repositorio:
    git clone https://github.com/DanWahlin/marvel-mcp-azure-functions
  3. Cambie el nombre .env.template a .env .
  4. 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
  5. Instale las dependencias necesarias y compile el proyecto.
    npm install npm run build
  6. Inicie el host de Azure Functions localmente:
    npm start
  7. (Opcional) Para probar el servidor MCP 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:
    • Cambiar Transport Type a SSE .
    • Ingrese http://0.0.0.0:7071/runtime/webhooks/mcp/sse como URL.
    • Seleccione el botón Connect .
    • Seleccionar List Tools .
    • Seleccione una herramienta para probarla.

Configuración de un host MCP

Usar con Claude Desktop

Agregue lo siguiente a su claude_desktop_config.json :

{ "mcpServers": { "marvel-mcp": { "type": "sse", "url": "http://0.0.0.0:7071/runtime/webhooks/mcp/sse" } } }

Usar con GitHub Copilot en VS Code

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.

Si desea asociar el servidor MCP con un repositorio específico, cree un archivo .vscode/mcp.json con este contenido:

{ "inputs": [], "servers": { "marvel-mcp": { "type": "sse", "url": "http://0.0.0.0:7071/runtime/webhooks/mcp/sse" } } }

Si desea asociar el servidor MCP con todos los repositorios, agregue lo siguiente a su JSON de configuración de usuario de VS Code:

"mcp": { "servers": { "marvel-mcp": { "type": "sse", "url": "http://0.0.0.0:7071/runtime/webhooks/mcp/sse" } } }

Implementar en Azure para MCP remoto

Ejecute este comando azd para aprovisionar la aplicación de función, con todos los recursos de Azure necesarios, e implementar su código:

azd up

Puede optar por usar una red virtual en la muestra. Para ello, haga esto antes de azd up

azd env set VNET_ENABLED true

Además, API Management se puede utilizar para mejorar la seguridad y las políticas de su servidor MCP, yla autenticación integrada de App Service se puede utilizar para configurar su proveedor OAuth favorito, incluido Entra.

Uso de herramientas en GitHub Copilot

  1. Ahora que el servidor mcp es detectable, abra GitHub Copilot y seleccione el modo Agent (no Ask o Edit ).
  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. 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?

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

ID: p5d4gqdv40