使用Azure功能的漫威MCP服务器
](https://codespaces.new/danwahlin/marvel-mcp?hide_repo_select=true&ref=main&quickstart=true)

MCP服务器 漫威开发者API,实现与角色和漫画数据的交互。 *该项目的主要目标是展示如何使用Azure Functions托管的MCP服务器与API进行交互。*
备注:此MCP服务器使用的所有数据都是从 官方Marvel API 并归漫威所有。该项目与漫威没有任何关联。
🔧 特性
- 列出漫威角色:支持以下过滤器
nameStartsWith,limit,comics,series等等。 - 按ID获取漫威角色:使用他们的工具获取任何角色的详细信息
characterId. - 为角色获取漫画:获取具有特定角色的漫画列表,并使用各种过滤器,如
format,dateRange等等。 - 基于工具的MCP集成:使用模型上下文协议(MCP)工具(VS Code、Claude等)注册此服务器。
- 环境配置:使用
.env用于管理环境变量的文件,如MARVEL_PUBLIC_KEY,MARVEL_PRIVATE_KEY和MARVEL_API_BASE.
🧰 工具
1. get_characters 🔍🦸♂️
- 描述:使用可选过滤器获取漫威角色。
- 输入:
- name (可选字符串):完整字符名称。 - nameStartsWith (可选字符串):名称以指定字符串开头的字符。 - modifiedSince (可选字符串):ISO 8601日期字符串,用于过滤自该日期以来修改的字符。 - comics, series, events, stories (可选字符串):以逗号分隔的ID列表,按相关实体进行筛选。 - orderBy (可选字符串):用于对结果进行排序的字段,例如 name 或 -modified. - limit (可选数字):返回的最大结果数(1-100)。 - offset (可选数字):分页时要跳过的结果数。
- 退货:具有匹配字符的JSON响应。看
CharacterDataWrapperSchema在……里面src/schemas.ts了解详情。
2. get_character_by_id 🆔🧑🎤
- 描述:通过漫威角色的唯一ID获取该角色。
- 输入:
- characterId (number):字符的唯一ID。
- 退货:包含字符详细信息的JSON响应。看
CharacterDataWrapperSchema在……里面src/schemas.ts了解详情。
3. get_comics_for_character 📚🎭
- 描述:使用可选过滤器获取具有特定角色的漫画。
- 输入:
- characterId (number):字符的唯一ID。 - 可选过滤器: - format, formatType (string):按漫画格式过滤(例如。, comic, hardcover). - noVariants, hasDigitalIssue (boolean):用于排除变体或仅包含数字问题的标志。 - dateDescriptor (string):预定义的日期范围,如 thisWeek, nextWeek. - dateRange (string):格式为自定义日期范围 YYYY-MM-DD,YYYY-MM-DD. - title, titleStartsWith (string):按标题或标题前缀过滤。 - startYear, issueNumber, digitalId (数字):数字过滤器。 - diamondCode, upc, isbn, ean, issn (string):标识符筛选器。 - creators, series, events, stories, sharedAppearances, collaborators (string):以逗号分隔的相关实体ID列表。 - orderBy (string):用于对结果进行排序的字段,例如 title 或 -modified. - limit, offset (数字):分页选项。
- 退货:JSON响应,带有指定字符的漫画。看
ComicDataWrapperSchema在……里面src/schemas.ts了解详情。
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响应。看
ComicDataWrapperSchema在……里面src/schemas.ts了解详情。
5. get_comic_by_id 🆔📘
- 描述:通过其唯一ID获取一部漫威漫画。
- 输入:
- comicId (数字):漫画的唯一ID。
- 退货:带有漫画细节的JSON响应。看
ComicDataWrapperSchema在……里面src/schemas.ts了解详情。
6. get_characters_for_comic 🦸♀️📖
- 描述:获取出现在特定漫画中的漫威角色。
- 输入:
- comicId (数字):漫画的唯一ID。 - 可选过滤器: - name (可选字符串):按全名过滤字符。 - nameStartsWith (可选字符串):筛选名称以指定字符串开头的字符。 - modifiedSince (可选字符串):ISO 8601日期字符串,用于过滤自该日期以来修改的字符。 - series, events, stories (可选字符串):以逗号分隔的相关实体ID列表。 - orderBy (可选字符串):用于对结果进行排序的字段,例如 name 或 -modified. - limit (可选数字):返回的最大结果数(1-100)。 - offset (可选数字):分页时要跳过的结果数。
- 退货:JSON响应,其中字符出现在指定的漫画中。看
CharacterDataWrapperSchema在……里面src/schemas.ts了解详情。
🛠️ 设置
注册一个 漫威开发者API 帐户并获取您的公共和私人API密钥。
如果要直接在MCP主机中访问MCP服务器,请跳到 或 与Claude Desktop一起使用 部分。
在本地运行服务器
- 需要Azure存储模拟器。有两种选择:
- 在Docker容器中启动Azurite:
docker run -p 10000:10000 -p 10001:10001 -p 10002:10002 \
mcr.microsoft.com/azure-storage/azurite- 您可以使用 Azurite VS代码扩展。安装扩展后,运行 Azurite: Start 通过VS Code命令面板。
- 克隆此存储库:
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检查器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代码中与GitHub Copilot一起使用
备注:如果您已经使用Claude Desktop启用了MCP服务器,请添加 chat.mcp.discovery.enabled: true 在您的VS代码设置中,它将发现现有的MCP服务器列表。如果要将MCP服务器与特定的仓库相关联,请创建 .vscode/mcp.json 包含此内容的文件:
{
"inputs": [],
"servers": {
"marvel-mcp": {
"type": "sse",
"url": "http://0.0.0.0:7071/runtime/webhooks/mcp/sse"
}
}
}如果要将MCP服务器与所有存储库相关联,请将以下内容添加到VS代码用户设置JSON中:
"mcp": {
"servers": {
"marvel-mcp": {
"type": "sse",
"url": "http://0.0.0.0:7071/runtime/webhooks/mcp/sse"
}
}
}部署到Azure以实现远程MCP
运行这个 azd 命令为功能应用程序配置任何所需的Azure资源,并部署您的代码:
azd up您可以选择加入示例中使用的ExpressRoute。为此,请先执行此操作 azd up
azd env set VNET_ENABLED true另外, API管理 可用于提高MCP服务器的安全性和策略,以及 App Service内置身份验证 可用于设置您最喜欢的OAuth提供程序,包括Entra。
在GitHub Copilot中使用工具
- 现在可以发现mcp服务器,打开GitHub Copilot并选择
Agent模式(非Ask或Edit).
- 在副驾驶聊天文本字段中选择“刷新”按钮以刷新服务器列表。
- 选择“🛠️“按钮查看所有可能的工具,包括此仓库中的工具。
- 在聊天中提出一个问题,自然会调用其中一个工具,例如:
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?> 备注:如果您看到“对不起,响应已由负责任的人工智能服务过滤。”,请尝试再次运行或重新表述提示。
