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í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 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 comoMARVEL_PUBLIC_KEY
,MARVEL_PRIVATE_KEY
yMARVEL_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, comoname
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
ensrc/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
ensrc/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 comothisWeek
,nextWeek
.dateRange
(cadena): rango de fechas personalizado en el formatoYYYY-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, comotitle
o-modified
.limit
,offset
(número): Opciones de paginación.
- Devuelve : Respuesta JSON con cómics del personaje especificado. Consulta
ComicDataWrapperSchema
ensrc/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
ocollection
).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 comoYYYY-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
ensrc/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
ensrc/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, comoname
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
ensrc/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
- Se necesita un emulador de Azure Storage. Hay dos opciones:
- Inicie Azurite en un contenedor Docker:Copy
- Puedes usar la extensión Azurite para VS Code . Una vez instalada, ejecuta
Azurite: Start
desde la paleta de comandos de VS Code.
- Inicie Azurite en un contenedor Docker:
- Clonar este repositorio:Copy
- Cambie el nombre
.env.template
a.env
. - Agregue sus claves públicas y privadas de la API de Marvel al archivo
.env
.Copy - Instale las dependencias necesarias y compile el proyecto.Copy
- Inicie el host de Azure Functions localmente:Copy
- (Opcional) Para probar el servidor MCP usando MCP Inspector, ejecute el siguiente comando:Visita la URL del Inspector MCP que se muestra en la consola de tu navegador:Copy
- Cambiar
Transport Type
aSSE
. - 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.
- Cambiar
Configuración de un host MCP
Usar con Claude Desktop
Agregue lo siguiente a su claude_desktop_config.json
:
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:
Si desea asociar el servidor MCP con todos los repositorios, agregue lo siguiente a su JSON de configuración de usuario de VS Code:
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:
Puede optar por usar una red virtual en la muestra. Para ello, haga esto antes de azd up
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
- Ahora que el servidor mcp es detectable, abra GitHub Copilot y seleccione el modo
Agent
(noAsk
oEdit
). - Seleccione el botón "actualizar" en el campo de texto del chat de Copilot para actualizar la lista de servidores.
- Seleccione el botón "🛠️" para ver todas las herramientas posibles, incluidas las de este repositorio.
- Coloque una pregunta en el chat que invoque naturalmente una de las herramientas, por ejemplo:Copy
Nota : Si ve "Lo sentimos, la respuesta fue filtrada por el servicio de IA responsable", intente ejecutarlo nuevamente o reformular el mensaje.
This server cannot be installed
Un servidor MCP basado en Azure Functions que permite la interacción con personajes de Marvel y datos de cómics a través de la API oficial para desarrolladores de Marvel.