使用说明
使用Azure功能的漫威MCP服务器
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服务器,请跳到 与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代码扩展。安装扩展后,运行
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?备注:如果您看到“对不起,响应已由负责任的人工智能服务过滤。”,请尝试再次运行或重新表述提示。
