注意:Marvel 最近退役了他们的 API,因此它不再可用。我保留这个仓库是为了历史原因,因为这种方法对于 MCP 服务器仍然相关。如果您想看到类似的示例,请查看我的 DC Comics MCP 服务器。
用于 Marvel 开发者 API 的 MCP 服务器,使与角色和漫画数据进行交互成为可能。该项目的主要目标是展示如何使用 MCP 服务器与 API 进行交互。
注意:此 MCP 服务器使用的所有数据都从 官方 Marvel API 获取,并由 Marvel 所有。此项目与 Marvel 没有任何关联。
<a name="features"></a>
nameStartsWith、limit、comics、series 等。characterId 获取任何角色的详细信息。format、dateRange 等。marvel-content.html),其中包含所有内容。.env 文件管理环境变量如 MARVEL_PUBLIC_KEY、MARVEL_PRIVATE_KEY 和 MARVEL_API_BASE。<a name="tools"></a>
get_characters 🔍🦸♂️name(可选字符串):完整角色名称。nameStartsWith(可选字符串):名称以指定字符串开头的角色。modifiedSince(可选字符串):自该日期以来修改过的角色的 ISO 8601 日期字符串。comics、series、events、stories(可选字符串):按相关实体过滤的逗号分隔的 ID 列表。orderBy(可选字符串):结果排序字段,例如 name 或 -modified。limit(可选数字):返回的最大结果数(1–100)。offset(可选数字):跳过的结果数,用于分页。src/schemas.ts 中的 CharacterDataWrapperSchema。get_character_by_id 🆔🧑🎤characterId(数字):角色的唯一 ID。src/schemas.ts 中的 CharacterDataWrapperSchema。get_comics_for_character 📚🎭characterId(数字):角色的唯一 ID。format、formatType(字符串):按漫画格式过滤(例如,comic、hardcover)。noVariants、hasDigitalIssue(布尔值):标志以排除变体或仅包括数字版。dateDescriptor(字符串):预定义的日期范围,如 thisWeek、nextWeek。dateRange(字符串):自定义日期范围,格式为 YYYY-MM-DD,YYYY-MM-DD。title、titleStartsWith(字符串):按标题或标题前缀过滤。startYear、issueNumber、digitalId(数字):数值过滤器。diamondCode、upc、isbn、ean、issn(字符串):标识符过滤器。creators、series、events、stories、sharedAppearances、collaborators(字符串):按相关实体 ID 过滤的逗号分隔列表。orderBy(字符串):结果排序字段,例如 title 或 -modified。limit、offset(数字):分页选项。src/schemas.ts 中的 ComicDataWrapperSchema。get_comics 📖🕵️♂️format(可选字符串):按问题格式过滤(例如,comic、digital comic、hardcover)。formatType(可选字符串):按问题格式类型过滤(comic 或 collection)。noVariants(可选布尔值):从结果集中排除变体(替代封面、二次印刷、导演剪辑等)。dateDescriptor(可选字符串):返回预定义日期范围内的漫画(lastWeek、thisWeek、nextWeek、thisMonth)。dateRange(可选字符串):返回自定义日期范围内的漫画。日期必须指定为 YYYY-MM-DD,YYYY-MM-DD。title(可选字符串):返回系列标题匹配输入的问题。titleStartsWith(可选字符串):返回系列标题以输入开头的问题。startYear(可选数字):返回系列开始年份匹配输入的问题。issueNumber(可选数字):返回系列问题编号匹配输入的问题。diamondCode、digitalId、upc、isbn、ean、issn(可选字符串):按各种标识符过滤。hasDigitalIssue(可选布尔值):仅包括数字版可用的结果。modifiedSince(可选字符串):返回自指定日期以来已修改的漫画(ISO 8601 格式)。creators、characters、series、events、stories、sharedAppearances、collaborators(可选字符串):按相关实体 ID 过滤的逗号分隔列表。orderBy(可选字符串):按字段或字段对结果集进行排序。向值添加“-”以按降序排序(例如,title,-modified)。limit(可选数字):限制结果集中的资源数量(默认:20,最大:1 00)。offset(可选数字):跳过结果集中的指定数量的资源。src/schemas.ts 中的 ComicDataWrapperSchema。get_comic_by_id 🆔📘comicId(数字):漫画的唯一 ID。src/schemas.ts 中的 ComicDataWrapperSchema。get_characters_for_comic 🦸♀️📖comicId(数字):漫画的唯一 ID。name(可选字符串):按完整名称过滤角色。nameStartsWith(可选字符串):按名称以指定字符串开头的角色过滤。modifiedSince(可选字符串):自该日期以来修改过的角色的 ISO 8601 日期字符串。series、events、stories(可选字符串):按相关实体 ID 过滤的逗号分隔列表。orderBy(可选字符串):结果排序字段,例如 name 或 -modified。limit(可选数字):返回的最大结果数(1–100)。offset(可选数字):跳过的结果数,用于分页。src/schemas.ts 中的 CharacterDataWrapperSchema。<a name="setup"></a>
注册一个 Marvel 开发者 API 账户并获取您的公共和私有 API 密钥。
如果您想直接在 MCP 主机上运行它,请跳转到 与 Claude Desktop 一起使用 或 与 GitHub Copilot 一起使用 部分。
如果您想使用 MCP Inspector 在本地测试服务器,请按照以下步骤操作:
克隆此存储库:
git clone https://github.com/DanWahlin/marvel-mcp
将 .env.template 重命名为 .env。
将您的 Marvel API 公共和私有密钥添加到 .env 文件中。
MARVEL_PUBLIC_KEY=YOUR_PUBLIC_KEY
MARVEL_PRIVATE_KEY=YOUR_PRIVATE_KEY
MARVEL_API_BASE=https://gateway.marvel.com/v1/public
安装所需的依赖项并构建项目。
npm install
npm run build
(可选)要使用 MCP Inspector 测试服务器,请运行以下命令:
# 启动 MCP Inspector
npx @modelcontextprotocol/inspector node dist/index.js
在控制台中访问 MCP Inspector URL 并在浏览器中打开。将 Arguments 更改为 dist/index.js 并选择 Connect。选择 List Tools 查看可用工具。
<a name="configuring-an-mcp-host"></a>
在您的 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"
}
}
}
}
要通过 Smithery 自动安装 Marvel MCP Server for Claude Desktop:
npx -y @smithery/cli install @DanWahlin/marvel-mcp --client claude
注意:如果您已经在 Claude Desktop 上启用了 MCP 服务器,请在 VS Code 设置中添加
chat.mcp.discovery.enabled: true,它将发现现有的 MCP 服务器列表。
在您的用户设置文件中添加以下内容,或者如果只想在此存储库中使用,请将其添加到 .vscode/mcp.json 文件中(您可以使用 MCP: 添加服务器从命令面板中选择全局或工作区):
"mcp": {
"inputs": [
{
"type": "promptString",
"id": "marvel-public-api-key",
"description": "Marvel 公共 API 密钥",
"password": true
},
{
"type": "promptString",
"id": "marvel-private-api-key",
"description": "Marvel 私有 API 密钥",
"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"
}
}
}
}
现在 MCP 服务器可以被发现,打开 GitHub Copilot 并选择 Agent 模式(而不是 Ask 或 Edits)。
选择 Copilot 聊天文本框中的“刷新”按钮以刷新服务器列表。
选择“🛠️”按钮以查看所有可能的工具,包括来自此存储库的工具。
在聊天中提出一个问题,这自然会调用其中一个工具,例如:
列出 10 个 Marvel 角色。
狼人出现在哪些漫画中?
给我一些关于 Marvel 宇宙中反派的信息。
哪些角色出现在《复仇者》漫画中?
哪些角色出现在《Hedge Knight II: Sworn Sword (2007)》漫画中?
列出 10 个出现在《蚁人》漫画中的角色。
注意:如果您看到“对不起,响应被负责任的人工智能服务过滤”,请尝试重新运行或重新表述提示。
额外奖励:当您询问角色或漫画时,服务器会自动在项目根目录中创建一个 marvel-content.html 文件,其中包含一个精美设计的页面,包含所有角色/漫画信息和图像,然后在浏览器中打开!