The Marvel MCP server interacts with the Marvel Developer API to fetch and manipulate Marvel characters and comics data:
- List Marvel Characters: Fetch characters with filters like
name
,nameStartsWith
, and pagination options - Get Character by ID: Retrieve detailed information about a specific character
- Fetch Comics for a Character: Get comics featuring a specific character
- List Comics: Browse comics with filters for
format
,dateRange
,title
, etc. - Get Comic by ID: Retrieve detailed information about a specific comic
- Fetch Characters for a Comic: Get characters appearing in a specific comic
- Generate Comics HTML: Create an HTML page displaying Marvel comics with their images
- Integration: Works with MCP hosts like Claude Desktop and GitHub Copilot
- Configuration: Configure Marvel API keys and base URL using environment variables
Supports environment configuration through .env files to manage Marvel API credentials and base URL.
Allows GitHub Copilot to access Marvel characters and comics data through the Marvel Developer API, supporting various filters and search capabilities.
Marvel MCP Server
Features • Tools • Setup • Configuring an MCP Host
MCP Server for the Marvel Developer API, enabling interaction with characters and comics data. The main goal of the project is to show how an MCP server can be used to interact with APIs.
Note: All data used by this MCP server is fetched from the official Marvel API and owned by Marvel. This project is not affiliated with Marvel in any way.
🔧 Features
- List Marvel Characters: Supports filters like
nameStartsWith
,limit
,comics
,series
, etc. - Fetch a Marvel Character by ID: Get detailed info on any character using their
characterId
. - Fetch Comics for a Character: Get a list of comics featuring a specific character, with various filters like
format
,dateRange
, etc. - Tool-based MCP integration: Register this server with Model Context Protocol (MCP) tools (VS Code, Claude, etc.).
- Environment Configuration: Use
.env
file to manage environment variables likeMARVEL_PUBLIC_KEY
,MARVEL_PRIVATE_KEY
andMARVEL_API_BASE
.
🧰 Tools
1. get_characters
🔍🦸♂️
- Description: Fetch Marvel characters with optional filters.
- Inputs:
name
(optional string): Full character name.nameStartsWith
(optional string): Characters whose names start with the specified string.modifiedSince
(optional string): ISO 8601 date string to filter characters modified since this date.comics
,series
,events
,stories
(optional string): Comma-separated list of IDs to filter by related entities.orderBy
(optional string): Fields to order the results by, such asname
or-modified
.limit
(optional number): Maximum number of results to return (1–100).offset
(optional number): Number of results to skip for pagination.
- Returns: JSON response with matching characters. See
CharacterDataWrapperSchema
insrc/schemas.ts
for details.
2. get_character_by_id
🆔🧑🎤
- Description: Fetch a Marvel character by their unique ID.
- Input:
characterId
(number): The unique ID of the character.
- Returns: JSON response with the character's details. See
CharacterDataWrapperSchema
insrc/schemas.ts
for details.
3. get_comics_for_character
📚🎭
- Description: Fetch comics featuring a specific character, with optional filters.
- Inputs:
characterId
(number): The unique ID of the character.- Optional filters:
format
,formatType
(string): Filter by comic format (e.g.,comic
,hardcover
).noVariants
,hasDigitalIssue
(boolean): Flags to exclude variants or include only digital issues.dateDescriptor
(string): Predefined date ranges likethisWeek
,nextWeek
.dateRange
(string): Custom date range in the formatYYYY-MM-DD,YYYY-MM-DD
.title
,titleStartsWith
(string): Filter by title or title prefix.startYear
,issueNumber
,digitalId
(number): Numeric filters.diamondCode
,upc
,isbn
,ean
,issn
(string): Identifier filters.creators
,series
,events
,stories
,sharedAppearances
,collaborators
(string): Comma-separated list of related entity IDs.orderBy
(string): Fields to order the results by, such astitle
or-modified
.limit
,offset
(number): Pagination options.
- Returns: JSON response with comics featuring the specified character. See
ComicDataWrapperSchema
insrc/schemas.ts
for details.
4. get_comics
📖🕵️♂️
- Description: Fetch lists of Marvel comics with optional filters.
- Inputs:
format
(optional string): Filter by the issue format (e.g.,comic
,digital comic
,hardcover
).formatType
(optional string): Filter by the issue format type (comic
orcollection
).noVariants
(optional boolean): Exclude variants (alternate covers, secondary printings, director's cuts, etc.) from the result set.dateDescriptor
(optional string): Return comics within a predefined date range (lastWeek
,thisWeek
,nextWeek
,thisMonth
).dateRange
(optional string): Return comics within a custom date range. Dates must be specified asYYYY-MM-DD,YYYY-MM-DD
.title
(optional string): Return only issues in series whose title matches the input.titleStartsWith
(optional string): Return only issues in series whose title starts with the input.startYear
(optional number): Return only issues in series whose start year matches the input.issueNumber
(optional number): Return only issues in series whose issue number matches the input.diamondCode
,digitalId
,upc
,isbn
,ean
,issn
(optional string): Filter by various identifiers.hasDigitalIssue
(optional boolean): Include only results which are available digitally.modifiedSince
(optional string): Return only comics which have been modified since the specified date (ISO 8601 format).creators
,characters
,series
,events
,stories
,sharedAppearances
,collaborators
(optional string): Comma-separated list of IDs to filter by related entities.orderBy
(optional string): Order the result set by a field or fields. Add a "-" to the value to sort in descending order (e.g.,title
,-modified
).limit
(optional number): Limit the result set to the specified number of resources (default: 20, max: 100).offset
(optional number): Skip the specified number of resources in the result set.
- Returns: JSON response with matching comics. See
ComicDataWrapperSchema
insrc/schemas.ts
for details.
5. get_comic_by_id
🆔📘
- Description: Fetch a single Marvel comic by its unique ID.
- Input:
comicId
(number): The unique ID of the comic.
- Returns: JSON response with the comic details. See
ComicDataWrapperSchema
insrc/schemas.ts
for details.
6. get_characters_for_comic
🦸♀️📖
- Description: Fetch Marvel characters appearing in a specific comic.
- Inputs:
comicId
(number): The unique ID of the comic.- Optional filters:
name
(optional string): Filter characters by full name.nameStartsWith
(optional string): Filter characters whose names start with the specified string.modifiedSince
(optional string): ISO 8601 date string to filter characters modified since this date.series
,events
,stories
(optional string): Comma-separated list of related entity IDs to filter by.orderBy
(optional string): Fields to order the results by, such asname
or-modified
.limit
(optional number): Maximum number of results to return (1–100).offset
(optional number): Number of results to skip for pagination.
- Returns: JSON response with characters appearing in the specified comic. See
CharacterDataWrapperSchema
insrc/schemas.ts
for details.
🛠️ Setup
Sign up for a Marvel Developer API account and get your public and private API keys.
If you want to run it directly in an MCP host, jump to the Use with Claude Desktop or Use with GitHub Copilot sections.
Run the Server Locally with MCP Inspector
If you'd like to run MCP Inspector locally to test the server, follow these steps:
- Clone this repository:
- Rename
.env.template
to.env
. - Add your Marvel API public and private keys to the
.env
file. - Install the required dependencies and build the project.
- (Optional) To try out the server using MCP Inspector run the following command:Visit the MCP Inspector URL shown in the console in your browser. Change
Arguments
todist/index.js
and selectConnect
. SelectList Tools
to see the available tools.
Configuring an MCP Host
Use with Claude Desktop
Add the following to your claude_desktop_config.json
:
Installing via Smithery
To install Marvel MCP Server for Claude Desktop automatically via Smithery:
Use with GitHub Copilot
Note: If you already have the MCP server enabled with Claude Desktop, add
chat.mcp.discovery.enabled: true
in your VS Code settings and it will discover existing MCP server lists.
Add the following to your settings.json
file (note that you can also add it to the .vscode/mcp.json
file if you want it for a specific repo):
Using Tools in GitHub Copilot
- Now that the mcp server is discoverable, open GitHub Copilot and select the
Agent
mode (notAsk
orEdits
). - Select the "refresh" button in the Copilot chat text field to refresh the server list.
- Select the "🛠️" button to see all the possible tools, including the ones from this repo.
- Put a question in the chat that would naturally invoke one of the tools, for example:
Note: If you see "Sorry, the response was filtered by the Responsible AI Service.", try running it again or rephrasing the prompt.
You must be authenticated.
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
Tools
MCP Server for the Marvel Developer API, enabling interaction with characters and comics data.
Related Resources
Related MCP Servers
- -securityAlicense-qualityMCP Server for the Perplexity API.Last updated -50PythonMIT License
- -securityAlicense-qualityA local MCP server that enables AI applications like Claude Desktop to securely access and work with Obsidian vaults, providing capabilities for reading notes, executing templates, and performing semantic searches.Last updated -60TypeScriptMIT License
- -securityAlicense-qualityAn MCP server that generates 2D and 3D game assets from text prompts using AI models from Hugging Face Spaces, allowing developers to easily create game art through Claude Desktop or other MCP clients.Last updated -34JavaScriptMIT License
- -security-license-qualityAn MCP server that enables Claude and other MCP clients to interact with Mattermost workspaces, providing channel management, messaging capabilities, and topic monitoring functionality.Last updated -TypeScript