Token导航 LogoToken导航TokenDH.com
Pim Me logo
运维云端未说明官方级别未说明来源级核验

Pim Me

MCP Server

Azure PIM角色激活库和MCP服务器,支持通过编程或自然语言激活角色,并可保存常用角色为一键激活。

工具数

6

提示词数

0

GitHub Stars

1

资源数

0
TypeScriptClaude权限管理ClaudeVS Code

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

Harley-Adams

提供方

Harley-Adams

最后核验

2026/5/17 20:20

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

PIM我

Azure PIM角色激活库和MCP服务器。通过编程或自然语言与您的AI助手激活角色。将常用角色另存为收藏夹,并使用一个命令全部激活。

快速开始

先决条件

  • Node.js 18+
  • Azure CLI已安装并登录(az login)
  • 具有PIM资格角色的Azure帐户

作为MCP服务器

添加到您的MCP客户端:

VS Code (.vscode/mcp.json):

{
  "servers": {
    "pim-me": {
      "command": "npx",
      "args": ["-y", "pim-me-mcp"]
    }
  }
}

克劳德桌面版 (~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "pim-me": {
      "command": "npx",
      "args": ["-y", "pim-me-mcp"]
    }
  }
}

作为图书馆

npm install pim-me-mcp
import { 
  listEligibleRoles, 
  listActiveRoles, 
  activateRoles,
  activateQuickRoles 
} from 'pim-me-mcp';

// List all roles you can activate
const eligible = await listEligibleRoles();
console.log(eligible.roles);

// Check what's currently elevated
const active = await listActiveRoles();
active.roles.forEach(role => {
  console.log(`${role.roleName} expires at ${role.endDateTime}`);
});

// Activate specific roles
const result = await activateRoles(
  [{ name: 'Contributor', scope: 'my-subscription' }],
  'Development work',
  8 // hours
);

// Or activate your saved favorites
const quickResult = await activateQuickRoles('Development work');

MCP服务器使用情况

设置快速角色

使用此工具的最简单方法是设置一次常用角色:

  1. :“显示我的PIM角色”或“帮助我设置快速角色”
  2. 选择角色 从编号列表中:“将角色20、21、22另存为我的快速角色”
  3. 设置默认对齐方式 (可选):包括 defaultJustification: "Development work" 保存时

您的配置已保存到 ~/.pim-me-mcp.json:

{
  "quickRoles": {
    "roles": [
      { "name": "Owner", "scope": "my-resource-group" },
      { "name": "Contributor", "scope": "my-subscription" }
    ],
    "description": "My daily development roles",
    "defaultJustification": "Development work"
  }
}

日常使用

配置后,只需说:

  • “激活我的快速角色” --使用默认理由
  • “激活我的快速角色以调试生产问题” --自定义理由
  • “列出我符合条件的角色” --查看您可以激活的所有角色
  • “列出我的活动角色” --查看当前提升的角色及其过期时间
  • “激活我的订阅的参与者角色” --激活特定角色

可用工具(MCP)

工具说明
list_eligible_roles列出您可以激活的所有PIM角色
list_active_roles列出当前提升的角色及其过期时间
list_quick_roles使用索引显示符合条件的角色+您保存的快速角色
save_quick_roles将所选角色(按索引)保存为快速角色
activate_quick_roles激活您保存的快速角色
activate_pim_roles按名称激活特定角色

库API

核心功能

功能说明
listEligibleRoles()返回您可以激活的所有PIM角色
listActiveRoles()返回当前提升的角色及其过期时间
activateRoles(roles, justification, hours)激活特定角色
activateQuickRoles(justification?, hours?)激活您保存的收藏夹

配置功能

功能说明
loadQuickRolesConfig()从配置文件或环境中加载快速角色
saveQuickRolesConfig(roles, desc?, justification?)将快速角色保存到配置
getConfigPath()返回路径 ~/.pim-me-mcp.json

类型

interface RoleConfig {
  name: string;   // e.g., "Contributor"
  scope: string;  // e.g., "my-subscription"
}

interface QuickRolesConfig {
  roles: RoleConfig[];
  description?: string;
  defaultJustification?: string;
}

______________________________________________________________________

运作原理

此MCP服务器使用Azure CLI与Azure PIM REST API进行交互:

  1. 列出符合条件的角色 通过 roleEligibilityScheduleInstances API
  2. 列出活动角色 通过 roleAssignmentScheduleInstances API(过滤至 assignmentType=Activated)
  3. 激活角色 通过 roleAssignmentScheduleRequests API SelfActivate 请求类型

API版本: 2020-10-01

______________________________________________________________________

棘手的实施细节

🔑 基于组的角色分配

Azure PIM自动化最棘手的部分是处理 基于组的角色分配当一个角色被分配给一个组(而不是直接分配给用户)时,激活需要特殊的处理。

问题1:主体ID错误

症状: "InsufficientPermissions""The assignee cannot be found"

原因:The roleEligibilityScheduleInstances API返回 *群的* 主体ID,但激活API需要 *用户的* 主体ID。

解决方案:从Azure访问令牌JWT中提取用户的OID:

async function getCurrentUserPrincipalId(): Promise {
  const tokenResult = await azCommand(
    "account get-access-token --resource https://management.azure.com"
  );
  const tokenData = JSON.parse(tokenResult);
  
  // Decode JWT payload (base64)
  const payload = JSON.parse(
    Buffer.from(tokenData.accessToken.split('.')[1], 'base64').toString()
  );
  
  return payload.oid;  // The user's Azure AD Object ID
}

问题2:缺少链接计划ID

症状:即使主体ID正确,基于组的角色的激活也会失败

解决方案:对于基于小组的作业,包括 linkedRoleEligibilityScheduleId 在请求正文中。这将激活链接回组的资格计划。

📦 激活请求正文

{
  "properties": {
    "principalId": "",
    "roleDefinitionId": "",
    "requestType": "SelfActivate",
    "justification": "",
    "scheduleInfo": {
      "expiration": {
        "type": "AfterDuration",
        "duration": "PT8H"
      }
    },
    "linkedRoleEligibilityScheduleId": ""
  }
}
备注: linkedRoleEligibilityScheduleId 对于基于组的作业是必需的,对于直接作业是可选的。

⚠️ 错误处理

错误代码含义解决方案
RoleAssignmentExists角色已激活视为成功✅
InsufficientPermissions主体ID错误使用用户的OID,而不是组的OID
The assignee cannot be found主体ID不匹配从访问令牌中提取OID

📋 api参考

端点方法目的
/providers/Microsoft.Authorization/roleEligibilityScheduleInstances?$filter=asTarget()GET列出符合条件的角色
/providers/Microsoft.Authorization/roleAssignmentScheduleInstances?$filter=asTarget()GET列出活动角色
/{scope}/providers/Microsoft.Authorization/roleAssignmentScheduleRequests/{guid}PUT激活角色

______________________________________________________________________

故障排除

问题解决方案
“找不到命令‘az’”安装Azure命令行界面
“请运行‘az登录’”运行 az login 进行身份验证
找不到角色使用 list_eligible_roles 查看确切的角色名称和作用域

许可证

麻省理工学院

目录标签

目录标签

TypeScriptClaude权限管理AzurePIM本地部署角色管理自动化工具MCP服务器

支持客户端

ClaudeVS Code

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

token

工具数量(toolCount,工具数)

6

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明token部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

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

仍需确认:installCommand

来源信息

继续浏览同类 MCP