hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
使用 Azure Functions 的 Marvel MCP 服务器
适用于Marvel 开发者 API的 MCP 服务器,支持与角色和漫画数据的交互。该项目的主要目标是展示如何使用 Azure Functions 托管的 MCP 服务器与 API 交互。
注意:本 MCP 服务器使用的所有数据均取自Marvel 官方 API ,并归 Marvel 所有。本项目与 Marvel 没有任何关联。
🔧 功能
- 列出漫威人物:支持
nameStartsWith
、limit
、comics
、series
等过滤器。 - 通过 ID 获取 Marvel 角色:使用
characterId
获取任何角色的详细信息。 - 获取特定角色的漫画:获取具有特定角色的漫画列表,并使用
format
、dateRange
等各种过滤器。 - 基于工具的 MCP 集成:使用模型上下文协议 (MCP) 工具(VS Code、Claude 等)注册此服务器。
- 环境配置:使用
.env
文件来管理环境变量,如MARVEL_PUBLIC_KEY
、MARVEL_PRIVATE_KEY
和MARVEL_API_BASE
。
🧰 工具
1. get_characters
- 描述:使用可选过滤器获取 Marvel 角色。
- 输入:
name
(可选字符串):完整的角色名称。nameStartsWith
(可选字符串):名称以指定字符串开头的字符。modifiedSince
(可选字符串):ISO 8601 日期字符串,用于过滤自该日期以来修改的字符。comics
、series
、events
、stories
(可选字符串):以逗号分隔的 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。- 可选过滤器:
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
(数字):分页选项。
- 返回:包含指定角色漫画的 JSON 响应。详情请参阅
src/schemas.ts
中的ComicDataWrapperSchema
。
4. 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,最大值: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 日期字符串,用于过滤自该日期以来修改的字符。series
、events
、stories
(可选字符串):要过滤的相关实体 ID 的逗号分隔列表。orderBy
(可选字符串):对结果进行排序的字段,例如name
或-modified
。limit
(可选数字):返回的最大结果数(1-100)。offset
(可选数字):分页时要跳过的结果数。
- 返回:包含指定漫画中出现的角色的 JSON 响应。详情请参阅
src/schemas.ts
中的CharacterDataWrapperSchema
。
🛠️ 设置
注册一个Marvel 开发者 API帐户并获取您的公钥和私钥 API 密钥。
如果您想直接在 MCP 主机中使用 MCP 服务器,请跳至与 GitHub Copilot 一起使用或与 Claude Desktop 一起使用部分。
本地运行服务器
- 需要 Azure 存储模拟器。有两个选项:
- 在 Docker 容器中启动 Azurite:Copy
- 您可以使用Azurite VS Code 扩展。安装扩展后,通过 VS Code 命令面板运行
Azurite: Start
。
- 在 Docker 容器中启动 Azurite:
- 克隆此存储库:Copy
- 将
.env.template
重命名为.env
。 - 将您的 Marvel API 公钥和私钥添加到
.env
文件。Copy - 安装所需的依赖项并构建项目。Copy
- 在本地启动 Azure Functions 主机:Copy
- (可选)要使用 MCP Inspector 试用 MCP 服务器,请运行以下命令:在浏览器的控制台中访问显示的 MCP Inspector URL:Copy
- 将
Transport Type
更改为SSE
。 - 输入
http://0.0.0.0:7071/runtime/webhooks/mcp/sse
作为 URL。 - 选择
Connect
按钮。 - 选择
List Tools
。 - 选择一个工具来尝试一下。
- 将
配置 MCP 主机
与 Claude Desktop 一起使用
将以下内容添加到您的claude_desktop_config.json
中:
在 VS Code 中与 GitHub Copilot 一起使用
注意:如果您已经使用 Claude Desktop 启用了 MCP 服务器,请在 VS Code 设置中添加
chat.mcp.discovery.enabled: true
,它将发现现有的 MCP 服务器列表。
如果您想要将 MCP 服务器与特定的 repo 关联,请创建包含以下内容的.vscode/mcp.json
文件:
如果您想要将 MCP 服务器与所有存储库关联,请将以下内容添加到您的 VS Code 用户设置 JSON 中:
部署到 Azure 以进行远程 MCP
运行此azd命令来配置函数应用程序及其所需的 Azure 资源,并部署代码:
您可以选择加入示例中使用的 VNet。为此,请在azd up
之前执行此操作
此外, API 管理可用于改进 MCP 服务器的安全性和策略,而App Service 内置身份验证可用于设置您最喜欢的 OAuth 提供程序(包括 Entra)。
使用 GitHub Copilot 中的工具
- 现在 mcp 服务器已可发现,打开 GitHub Copilot 并选择
Agent
模式(而不是Ask
或Edit
)。 - 选择 Copilot 聊天文本字段中的“刷新”按钮来刷新服务器列表。
- 选择“🛠️”按钮查看所有可能的工具,包括来自此 repo 的工具。
- 在聊天中提出一个自然会调用其中一种工具的问题,例如:Copy
注意:如果您看到“抱歉,响应已被负责任的 AI 服务过滤。”,请尝试再次运行它或重新措辞提示。
This server cannot be installed
基于 Azure Functions 的 MCP 服务器,可通过官方 Marvel 开发者 API 与 Marvel 角色和漫画数据进行交互。