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.

使用 Azure Functions 的 Marvel MCP 服务器

功能工具设置配置 MCP 主机

适用于Marvel 开发者 API的 MCP 服务器,支持与角色和漫画数据的交互。该项目的主要目标是展示如何使用 Azure Functions 托管的 MCP 服务器与 API 交互。

注意:本 MCP 服务器使用的所有数据均取自Marvel 官方 API ,并归 Marvel 所有。本项目与 Marvel 没有任何关联。

🔧 功能

  • 列出漫威人物:支持nameStartsWithlimitcomicsseries等过滤器。
  • 通过 ID 获取 Marvel 角色:使用characterId获取任何角色的详细信息。
  • 获取特定角色的漫画:获取具有特定角色的漫画列表,并使用formatdateRange等各种过滤器。
  • 基于工具的 MCP 集成:使用模型上下文协议 (MCP) 工具(VS Code、Claude 等)注册此服务器。
  • 环境配置:使用.env文件来管理环境变量,如MARVEL_PUBLIC_KEYMARVEL_PRIVATE_KEYMARVEL_API_BASE

🧰 工具

1. get_characters

  • 描述:使用可选过滤器获取 Marvel 角色。
  • 输入
    • name (可选字符串):完整的角色名称。
    • nameStartsWith (可选字符串):名称以指定字符串开头的字符。
    • modifiedSince (可选字符串):ISO 8601 日期字符串,用于过滤自该日期以来修改的字符。
    • comicsserieseventsstories (可选字符串):以逗号分隔的 ID 列表,用于按相关实体进行过滤。
    • orderBy (可选字符串):对结果进行排序的字段,例如name-modified
    • limit (可选数字):返回的最大结果数(1-100)。
    • offset (可选数字):分页时要跳过的结果数。
  • 返回:包含匹配字符的 JSON 响应。详情请参阅src/schemas.ts中的CharacterDataWrapperSchema

2. 通过 id get_character_by_id角色

  • 描述:通过其唯一 ID 获取 Marvel 角色。
  • 输入
    • characterId (数字):角色的唯一 ID。
  • 返回:包含角色详细信息的 JSON 响应。详情请参阅src/schemas.ts中的CharacterDataWrapperSchema

3. get_comics_for_character 📚🎭

  • 描述:获取具有特定角色的漫画,带有可选过滤器。
  • 输入
    • characterId (数字):角色的唯一 ID。
    • 可选过滤器:
      • formatformatType (字符串):按漫画格式过滤(例如, comichardcover )。
      • noVariantshasDigitalIssue (布尔值):标志排除变体或仅包含数字问题。
      • dateDescriptor (字符串):预定义日期范围,如thisWeeknextWeek
      • dateRange (字符串):自定义日期范围,格式为YYYY-MM-DD,YYYY-MM-DD
      • titletitleStartsWith (字符串):按标题或标题前缀过滤。
      • startYearissueNumberdigitalId (数字):数字过滤器。
      • diamondCodeupcisbneanissn (字符串):标识符过滤器。
      • creatorsserieseventsstoriessharedAppearancescollaborators (字符串):相关实体 ID 的逗号分隔列表。
      • orderBy (字符串):对结果进行排序的字段,例如title-modified
      • limitoffset (数字):分页选项。
  • 返回:包含指定角色漫画的 JSON 响应。详情请参阅src/schemas.ts中的ComicDataWrapperSchema

4. get_comics 📖🕵️‍♂️

  • 描述:使用可选过滤器获取漫威漫画列表。
  • 输入
    • format (可选字符串):按发行格式进行过滤(例如, comicdigital comichardcover )。
    • formatType (可选字符串):按问题格式类型( comiccollection )进行过滤。
    • noVariants (可选布尔值):从结果集中排除变体(替代封面、二次印刷、导演剪辑等)。
    • dateDescriptor (可选字符串):返回预定义日期范围内的漫画( lastWeekthisWeeknextWeekthisMonth )。
    • dateRange (可选字符串):返回自定义日期范围内的漫画。日期必须指定为YYYY-MM-DD,YYYY-MM-DD
    • title (可选字符串):仅返回标题与输入匹配的系列问题。
    • titleStartsWith (可选字符串):仅返回标题以输入开头的系列问题。
    • startYear (可选数字):仅返回开始年份与输入相匹配的系列问题。
    • issueNumber (可选数字):仅返回问题编号与输入匹配的系列问题。
    • diamondCodedigitalIdupcisbneanissn (可选字符串):按各种标识符进行过滤。
    • hasDigitalIssue (可选布尔值):仅包含以数字形式提供的结果。
    • modifiedSince (可选字符串):仅返回自指定日期以来修改过的漫画(ISO 8601 格式)。
    • creatorscharactersserieseventsstoriessharedAppearancescollaborators (可选字符串):按相关实体过滤的 ID 的逗号分隔列表。
    • orderBy (可选字符串):按一个或多个字段对结果集进行排序。在值后添加“-”可按降序排序(例如, title-modified )。
    • limit (可选数字):将结果集限制为指定数量的资源(默认值:20,最大值:100)。
    • offset (可选数字):跳过结果集中指定数量的资源。
  • 返回:包含匹配漫画的 JSON 响应。详情请参阅src/schemas.ts中的ComicDataWrapperSchema

5. get_comic_by_id

  • 描述:通过唯一 ID 获取单个 Marvel 漫画。
  • 输入
    • comicId (数字):漫画的唯一 ID。
  • 返回:包含漫画详情的 JSON 响应。详情请参阅src/schemas.ts中的ComicDataWrapperSchema

6. get_characters_for_comic 🦸‍♀️📖

  • 描述:获取特定漫画中出现的漫威人物。
  • 输入
    • comicId (数字):漫画的唯一 ID。
    • 可选过滤器:
      • name (可选字符串):按全名过滤字符。
      • nameStartsWith (可选字符串):过滤名称以指定字符串开头的字符。
      • modifiedSince (可选字符串):ISO 8601 日期字符串,用于过滤自该日期以来修改的字符。
      • serieseventsstories (可选字符串):要过滤的相关实体 ID 的逗号分隔列表。
      • orderBy (可选字符串):对结果进行排序的字段,例如name-modified
      • limit (可选数字):返回的最大结果数(1-100)。
      • offset (可选数字):分页时要跳过的结果数。
  • 返回:包含指定漫画中出现的角色的 JSON 响应。详情请参阅src/schemas.ts中的CharacterDataWrapperSchema

🛠️ 设置

注册一个Marvel 开发者 API帐户并获取您的公钥和私钥 API 密钥。

如果您想直接在 MCP 主机中使用 MCP 服务器,请跳至与 GitHub Copilot 一起使用与 Claude Desktop 一起使用部分。

本地运行服务器

  1. 需要 Azure 存储模拟器。有两个选项:
    • 在 Docker 容器中启动 Azurite:
      docker run -p 10000:10000 -p 10001:10001 -p 10002:10002 \ mcr.microsoft.com/azure-storage/azurite
    • 您可以使用Azurite VS Code 扩展。安装扩展后,通过 VS Code 命令面板运行Azurite: Start
  2. 克隆此存储库:
    git clone https://github.com/DanWahlin/marvel-mcp-azure-functions
  3. .env.template重命名为.env
  4. 将您的 Marvel API 公钥和私钥添加到.env文件。
    MARVEL_PUBLIC_KEY=YOUR_PUBLIC_KEY MARVEL_PRIVATE_KEY=YOUR_PRIVATE_KEY MARVEL_API_BASE=https://gateway.marvel.com/v1/public
  5. 安装所需的依赖项并构建项目。
    npm install npm run build
  6. 在本地启动 Azure Functions 主机:
    npm start
  7. (可选)要使用 MCP Inspector 试用 MCP 服务器,请运行以下命令:
    # Start the MCP Inspector npx @modelcontextprotocol/inspector node build/index.js
    在浏览器的控制台中访问显示的 MCP Inspector URL:
    • Transport Type更改为SSE
    • 输入http://0.0.0.0:7071/runtime/webhooks/mcp/sse作为 URL。
    • 选择Connect按钮。
    • 选择List Tools
    • 选择一个工具来尝试一下。

配置 MCP 主机

与 Claude Desktop 一起使用

将以下内容添加到您的claude_desktop_config.json中:

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

在 VS Code 中与 GitHub Copilot 一起使用

注意:如果您已经使用 Claude Desktop 启用了 MCP 服务器,请在 VS Code 设置中添加chat.mcp.discovery.enabled: true ,它将发现现有的 MCP 服务器列表。

如果您想要将 MCP 服务器与特定的 repo 关联,请创建包含以下内容的.vscode/mcp.json文件:

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

如果您想要将 MCP 服务器与所有存储库关联,请将以下内容添加到您的 VS Code 用户设置 JSON 中:

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

部署到 Azure 以进行远程 MCP

运行此azd命令来配置函数应用程序及其所需的 Azure 资源,并部署代码:

azd up

您可以选择加入示例中使用的 VNet。为此,请在azd up之前执行此操作

azd env set VNET_ENABLED true

此外, API 管理可用于改进 MCP 服务器的安全性和策略,而App Service 内置身份验证可用于设置您最喜欢的 OAuth 提供程序(包括 Entra)。

使用 GitHub Copilot 中的工具

  1. 现在 mcp 服务器已可发现,打开 GitHub Copilot 并选择Agent模式(而不是AskEdit )。
  2. 选择 Copilot 聊天文本字段中的“刷新”按钮来刷新服务器列表。
  3. 选择“🛠️”按钮查看所有可能的工具,包括来自此 repo 的工具。
  4. 在聊天中提出一个自然会调用其中一种工具的问题,例如:
    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?

    注意:如果您看到“抱歉,响应已被负责任的 AI 服务过滤。”,请尝试再次运行它或重新措辞提示。

ID: p5d4gqdv40