Token导航 LogoToken导航

MCP Server · 开发工具

Lab Apim MCP

通过四步实验实现MCP服务器与Azure API管理(APIM)的集成,包括部署、访问控制、身份验证和OBO流程,最终构建一个安全的AI代理架构。

stdio官方级别未说明来源级核验工具 0
身份验证ShellVS Code

快速开始

作者 / 组织
thiagomendes
提供方
thiagomendes
运行时
Python

工具数量

0

来源目录标注

资源数量

0

来源目录标注

提示词数量

0

来源目录标注

GitHub Star

2

仓库热度

收录来源

1 个

MCP World

选型结论

Lab Apim MCP 属于开发工具类 MCP Server,公开资料标注 0 个工具,通过stdio 本地进程接入,适配 VS Code,有可以直接复制的安装命令;接入前要先准备 访问 Token。

分类

开发工具

传输方式

stdio

认证方式

访问 Token

部署方式

公开资料未说明

安装与配置

安装命令

python3 -c "import sys, uuid, json; scope_id = str(uuid.uuid4()); print(scope_id)" > scope_id.txt

公开命令不是通用的启动方式,拼不出可靠配置示例;请在客户端 MCP 配置里按官方文档填写 command 和 args。

上手步骤

  1. 1

    准备运行环境

    stdio 服务在本地起进程,需要先装好 Python,再按安装命令拉取依赖。

  2. 2

    安装服务

    复制下面的安装命令执行;命令里带占位符的位置换成自己的密钥或路径。

  3. 3

    写入客户端配置

    在客户端的 MCP 配置里填启动命令和参数,保存后完全退出客户端再打开,让新配置生效。

  4. 4

    验证是否可用

    连接成功后客户端会列出 0 个工具,随便调一个只读工具确认能返回结果。

接入前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

详细介绍

MCP+AAzure APIM零信任架构全实践实验室

这个实验室被设计成一个故事 4法案。您将首先在云中部署一个简单的MCP服务器,并逐步发展您的架构,直到您达到具有身份验证和代表(OBO)流程的复杂企业场景。

目标(目标状态)

在本次旅程结束时,您将拥有一个安全的架构,其中AI代理代表登录用户访问敏感数据(Microsoft Graph),并受到MCP网关的保护。

______________________________________________________________________

场景

你是一名平台工程师,负责为公司的开发人员提供人工智能工具。

  1. 第1幕: 证明该概念有效(部署)。
  2. 第2幕: 管理对这些工具的访问(APIM MCP网关)。
  3. 第3幕: 保护周边(身份)。
  4. 第4幕: 确保AI使用用户自己的身份访问敏感数据(OBO Flow)。

______________________________________________________________________

先决条件

  • Azure命令行界面 已安装并登录(az login).
  • Azure功能核心工具 (func).
  • Python 3.10+.
  • Visual Studio Code 随着 GitHub Copilot 扩展(或兼容的MCP客户端)。

______________________________________________________________________

舞台准备(环境)

为了确保资源名称的唯一性和可重复性,我们将使用设置脚本。

  1. 导航到实验室文件夹:
   cd mcp-lab
  1. 配置环境变量(在Bash/WSL终端中运行):
   source env-setup.sh

*此命令生成一个随机后缀,并设置以下变量 $GRP, $FUNC, $APIM, $AZURE_CLI_APP_ID 等等让这个终端在整个实验室都保持开放。*

______________________________________________________________________

第一幕:MCP服务器的诞生

在此阶段,您的目标很简单:让MCP服务器在云中运行(Azure Functions)并可公开访问。

1.1提供基础设施

# Create Resource Group
az group create --name $GRP --location $LOC

# Create Storage Account (Required for Functions)
az storage account create --name $STG --location $LOC --resource-group $GRP --sku Standard_LRS

# Create the Function App (Serverless Linux)
az functionapp create --name $FUNC --storage-account $STG --consumption-plan-location $LOC --resource-group $GRP --runtime python --runtime-version 3.11 --functions-version 4 --os-type Linux

1.2部署代码

当前代码有一个简单的工具(echo_message)以及一个安全的工具(get_my_profile_info).让我们发布它。

# Publish the Function App
func azure functionapp publish $FUNC

1.3烟雾测试

让我们通过测试这个简单的工具来验证MCP服务器是否处于活动状态。

  1. 在VS Code中,编辑 .vscode/mcp.json 文件(在项目的根目录下创建 lab-apim-mcp 如果它不存在):
   {
     "mcpServers": {
       "azure-func-direct": {
         "url": "https://.azurewebsites.net/mcp",
         "type": "http"
       }
     }
   }

*(替换 ` 与价值 $FUNC.快跑 echo $FUNC` 在终端中查看)。*

  1. 重新启动VS代码或重新加载窗口。
  1. 打开Copilot Chat并键入:

> @azure-func-direct echo_message message="Hello Azure Function"

成功: 如果Copilot响应“来自Azure的回声:Hello Azure函数”,则动作1完成。

______________________________________________________________________

第二幕:守护者(Azure MCP网关)

直接访问该功能是不安全的,难以管理。让我们把 Azure API管理(APIM) 前端充当智能MCP网关。

2.1提供APIM

*注意:创建“开发人员”层大约需要30-45分钟。喝咖啡的好时机。*

az apim create --name $APIM --resource-group $GRP --location $LOC --publisher-name "Lab Admin" --publisher-email "admin@lab.com" --sku-name Developer

2.2将MCP服务器导入APIM

APIM对MCP服务器(GenAI网关)具有本机支持。我们将通过门户网站进行此操作。

  1. 转到 Azure门户 > API管理 ($APIM).
  1. 在左侧菜单中,选择 MCP服务器.
  1. 点击 +创建 > 暴露现有的MCP服务器.
  1. 按如下方式填写表单字段:

后端MCP服务器

- MCP服务器基本url: https://.azurewebsites.net/mcp *(替换 ` 随着 $FUNC`.*

新建MCP服务器

- 显示名称: MCP Lab Gateway - 名字: mcp-lab - 基础路径: lab - 描述: Azure Function acting as MCP Server

  1. 点击 创建.

*注意:为了简单起见,此设置使用公共后端端点。在生产环境中,始终使用专用端点或ExpressRoute限制隔离您的Function App,以防止直接访问。*

2.3通过网关进行测试

现在让我们将VS代码指向APIM。

  1. 更新 .vscode/mcp.json:
   {
     "mcpServers": {
       "azure-apim-gw": {
         "url": "https://.azure-api.net/lab/mcp",
         "type": "http"
       }
     }
   }
  1. 重新启动VS代码。
  2. 再次测试:

> @azure-apim-gw echo_message message="Hello via APIM"

成功: 现在的流程是:VS代码->APIM->函数。

______________________________________________________________________

第3幕:身份与安全

现在让我们锁上门。没有有效的徽章(JWT令牌),任何人都不应调用APIM。

3.1创建应用程序标识(后端)

我们需要在Microsoft Entra ID中注册我们的API。

# Create App Registration
BACKEND_APP_ID=$(az ad app create --display-name "mcp-lab-backend-$RND" --sign-in-audience AzureADMyOrg --query appId -o tsv)

# Create Service Principal
az ad sp create --id $BACKEND_APP_ID

# Define API URI (api://)
az ad app update --id $BACKEND_APP_ID --identifier-uris "api://$BACKEND_APP_ID"

# Expose "MCP.Execute" scope (Using Python for safe JSON generation)
python3 -c "import sys, uuid, json; scope_id = str(uuid.uuid4()); print(scope_id)" > scope_id.txt
SCOPE_ID=$(cat scope_id.txt) && rm scope_id.txt

python3 -c "import sys, json; scope_id = sys.argv[1]; data = {'oauth2PermissionScopes': [{'adminConsentDescription': 'Access MCP', 'adminConsentDisplayName': 'Access MCP', 'id': scope_id, 'isEnabled': True, 'type': 'User', 'userConsentDescription': 'Access MCP', 'userConsentDisplayName': 'Access MCP', 'value': 'MCP.Execute'}]}; print(json.dumps(data))" "$SCOPE_ID" > scope.json

az ad app update --id $BACKEND_APP_ID --set api=@scope.json
rm scope.json

echo "Backend App ID: $BACKEND_APP_ID"

3.2在APIM中应用策略(验证JWT)

让我们配置APIM以拒绝没有令牌的调用。

  1. 在门户中,转到 MCP服务器 >点击 MCP实验室网关.
  2. 寻找 政策 选项(或 `` 图标在 入站处理).
  3. 在中插入验证策略 `` 块:

    
    
    
        *
        *
        *
    

    
    
        
            api://{{YOUR_BACKEND_APP_ID}}
        
    

*(替换 {{YOUR_TENANT_ID}} 和 {{YOUR_BACKEND_APP_ID}} 具有实际价值)。*

*如果你不知道你的租户ID,运行az account show来检索它。*

3.3安全测试(预期失败)

尝试使用 @azure-apim-gw echo_message 再次在VS代码中。

预期结果: 您将收到 HTTP 401未经授权 立即出错。这意味着APIM策略正在发挥作用!

______________________________________________________________________

第四幕:代表(OBO)流动

“大结局”。我们将让VS Code发送一个令牌,APIM对其进行验证,然后函数将此令牌交换为另一个令牌以读取您的配置文件。

4.1配置机密和权限

该功能需要“代表用户发言”(OBO)的权限。

# 1. Generate Secret for the App
BACKEND_SECRET=$(az ad app credential reset --id $BACKEND_APP_ID --display-name "OBOSecret" --query password -o tsv)

# 2. Grant Graph permission (User.Read) using Global IDs
MS_GRAPH_ID="00000003-0000-0000-c000-000000000000" # Microsoft Graph API
USER_READ_ID="e1fe6dd8-ba31-4d61-89e7-88639da4683d" # User.Read Scope

az ad app permission add --id $BACKEND_APP_ID --api $MS_GRAPH_ID --api-permissions $USER_READ_ID=Scope
az ad app permission grant --id $BACKEND_APP_ID --api $MS_GRAPH_ID --scope User.Read

4.2配置功能应用程序

将凭据发送到云中的Function。

az functionapp config appsettings set --name $FUNC --resource-group $GRP --settings "AZURE_TENANT_ID=$(az account show --query tenantId -o tsv)" "BACKEND_CLIENT_ID=$BACKEND_APP_ID" "BACKEND_CLIENT_SECRET=$BACKEND_SECRET"

4.3配置客户端(VS代码)

我们需要一个真正的令牌。

  1. 预授权: 允许Azure CLI为您的API请求令牌。我们使用 az rest 对CLI模式更改具有鲁棒性。
   # 1. Get Object ID
   BACKEND_OBJ_ID=$(az ad app show --id $BACKEND_APP_ID --query id -o tsv)

   # 2. Generate JSON Config (Python one-liner for safe copy-paste)
   python3 -c "import sys, json; scope_id = sys.argv[1]; cli_id = sys.argv[2]; data = {'api': {'oauth2PermissionScopes': [{'adminConsentDescription': 'Access MCP', 'adminConsentDisplayName': 'Access MCP', 'id': scope_id, 'isEnabled': True, 'type': 'User', 'userConsentDescription': 'Access MCP', 'userConsentDisplayName': 'Access MCP', 'value': 'MCP.Execute'}], 'preAuthorizedApplications': [{'appId': cli_id, 'delegatedPermissionIds': [scope_id]}]}}; print(json.dumps(data))" "$SCOPE_ID" "$AZURE_CLI_APP_ID" > patch.json

   # 3. Apply via Graph API
   az rest --method PATCH --uri "https://graph.microsoft.com/v1.0/applications/$BACKEND_OBJ_ID" --headers "Content-Type=application/json" --body @patch.json
   rm patch.json
  1. 生成令牌:
   # Login (Refreshes session)
   az login --tenant $(az account show --query tenantId -o tsv)

   # Get Token
   az account get-access-token --resource "api://$BACKEND_APP_ID" --query accessToken -o tsv

*复制生成的令牌。*

  1. 配置MCP客户端:

更新 .vscode/mcp.json 包含您的令牌 直接. *(注意:我们在这里粘贴令牌是因为一些VS Code扩展尚不支持交互式输入提示。)*

   {
     "mcpServers": {
       "azure-obo-final": {
         "url": "https://.azure-api.net/lab/mcp",
         "type": "http",
         "headers": {
           "Authorization": "Bearer YOUR_LONG_TOKEN_HERE"
         }
       }
     }
   }

4.4最终测试

  1. 重新加载VS Code窗口。
  2. 打开Copilot Chat并调用安全工具:

> @azure-obo-final get_my_profile_info

预期结果: 工具应作出响应 “成功!OBO Flow工作正常”,显示从Microsoft Graph安全检索到的您的姓名和职位。

______________________________________________________________________

祝贺 你已经完成了旅程。

清理

*不要忘记删除此实验室期间创建的所有资源,以避免持续成本。*

az group delete --name $GRP --yes --no-wait

工具与能力

工具数量

0

资源数量

0

提示词数量

0

能力标签

Shell本地部署MCP网关零信任架构AzureAPIM身份验证OBO流程

支持客户端

VS Code

数量来自来源目录的标注,具体工具清单以官方文档为准。

典型使用场景

让助手直接读代码

把仓库、提交记录和 issue 交给模型检索,补全和重构时不用来回复制文件。

在对话里跑命令

触发构建、测试和脚本,执行结果直接回到上下文,省去切终端。

接进开发流程

把 PR、CI 状态和代码审查接进助手,减少在几个工具之间跳。

选择建议

值得选的地方

  • 只提供 0 个工具,职责集中,接入后不容易误操作。
  • 有现成的安装命令,不用自己找入口,照着跑就能起服务。
  • 公开说明写得比较完整,接入前能看清能力边界。

先想清楚的地方

  • stdio 方式要求本地装好 Python,换机器要重新装一遍。
  • 需要自备访问 Token,没有凭据没法直接试。
  • 第三方目录整理,版本更新和行为细节以官方仓库为准。

更适合

  • 需要在开发工具场景里让模型直接调用外部能力的人。
  • 已经在用 VS Code 的用户,接入路径最短。
  • 想先快速试一下、能接受在本地跑服务的人。

不太适合

  • 完全不想在本地装环境的人。
  • 暂时拿不到访问 Token的人。
  • 需要厂商级 SLA 和技术支持的生产环境。

同类对比

5 个同类
MCP Server工具数传输方式安装命令收录来源最后核验
Lab Apim MCP

MCP World · 本页

0stdio有1 个2026-05-17
Git 838e2ec1

MCP World

12stdio有2 个2026-05-17
Markitdown MCP 2c653a5f

MCP World

1stdio有1 个2026-05-17
Context7 MCP C671e75a

MCP World

0stdio有1 个2026-05-17
Context7 831acf40

MCP World

0stdio有1 个2026-05-17

按同分类和工具数量挑出最接近的几条,字段以各自详情页为准。

常见问题

5 条

Lab Apim MCP 怎么安装?

公开资料给出的安装命令是 python3 -c "import sys, uuid, json; scope_id = str(uuid.uuid4()); print(scope_id)" > scope…,运行环境为 Python。装完后按客户端要求写进 MCP 配置,重启客户端生效。

Lab Apim MCP 怎么在 Claude Desktop、Cursor 里配置?

它是stdio 本地进程,客户端配置里要写启动命令和参数,运行环境是 Python;保存后完全退出客户端再打开,配置才会生效。

Lab Apim MCP 收费吗?

本站只整理公开资料,不代收费用,也没有标注具体价格。是否收费取决于服务本身和背后的接口额度,正式使用前按官方说明确认。

Lab Apim MCP 需要 API Key 吗?

公开资料标注的认证方式是访问 Token,也就是要先拿到凭据才能连上;凭据只填在自己本地的配置里,不要写进公开仓库。

Lab Apim MCP 支持哪些客户端?

公开资料标注支持 VS Code;其他客户端只要能配置 MCP Server,也能用同样的命令或地址接入。

来源信息

继续浏览同类 MCP