使用 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:
docker run -p 10000:10000 -p 10001:10001 -p 10002:10002 \ mcr.microsoft.com/azure-storage/azurite您可以使用Azurite VS Code 扩展。安装扩展后,通过 VS Code 命令面板运行
Azurite: Start。
克隆此存储库:
git clone https://github.com/DanWahlin/marvel-mcp-azure-functions将
.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在本地启动 Azure Functions 主机:
npm start(可选)要使用 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中:
在 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 的工具。
在聊天中提出一个自然会调用其中一种工具的问题,例如:
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 服务过滤。”,请尝试再次运行它或重新措辞提示。
This server cannot be installed
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
基于 Azure Functions 的 MCP 服务器,可通过官方 Marvel 开发者 API 与 Marvel 角色和漫画数据进行交互。
Related MCP Servers
- -security-license-qualityAn MCP server that provides access to Azure Data Explorer (ADX) clusters, allowing users to list tables, execute queries, and retrieve schema information.Last updated -1MIT License
- Asecurity-licenseAqualityMCP Server for the Marvel Developer API, enabling interaction with characters and comics data.Last updated -72011MIT License
- -security-license-qualityAn MCP server that wraps the Azure CLI. As LLMs are very good at generating Azure CLI commands, this server allows your LLM to list resources, update/create/delete them, fix errors (by looking at the logs), fix security issues...Last updated -81MIT License
- -security-license-qualityAn MCP server for interacting with Azure. Contains some common Compute and Networking actions, and extensible to add many more.Last updated -1Apache 2.0