Lokka 是一个针对 Microsoft Graph 和 Azure RM API 的模型-上下文-协议服务器,它允许您使用 AI 查询和管理您的 Azure 和 Microsoft 365 租户。
<img src="https://github.com/merill/lokka/blob/main/assets/lokka-demo-1.gif?raw=true" alt="Lokka 演示 - 用户创建演示" width="500"/>请参阅 Lokka.dev,了解如何使用您喜欢的 AI 模型和聊天客户端来使用 Lokka。
Lokka 让您可以使用 Claude Desktop 或任何 MCP 客户端,通过自然语言在您的 Azure 和 Microsoft 365 租户中完成任务,通过 Microsoft API 实现。
例如:
创建一个名为 '销售与人力资源' 的安全组,并基于部门属性设置动态规则。查找所有未排除紧急访问账户的条件访问策略。显示分配给 '呼叫中心' 组的所有 Intune 设备配置策略。上个月 Azure 中最昂贵的服务是什么?
Lokka 现支持多种身份验证方法以适应不同的部署场景:
对于基于用户的交互登录身份验证,可以使用以下配置:
这是最简单的配置,并使用默认的 Lokka 应用程序。
{
"mcpServers": {
"Lokka-Microsoft": {
"command": "npx",
"args": ["-y", "@merill/lokka"]
}
}
}
如果您希望使用自定义的 Microsoft Entra 应用,可以在 Microsoft Entra 中创建一个新的应用注册,并使用以下环境变量进行配置:
{
"mcpServers": {
"Lokka-Microsoft": {
"command": "npx",
"args": ["-y", "@merill/lokka"],
"env": {
"TENANT_ID": "<租户ID>",
"CLIENT_ID": "<客户端ID>",
"USE_INTERACTIVE": "true"
}
}
}
}
传统的应用程序专用认证。您可以使用证书(推荐)或客户端密钥进行认证,配置如下:
详见 安装指南,了解如何创建 Entra 应用。
仅使用 PEM 编码的客户端证书进行应用程序专用认证:
{
"mcpServers": {
"Lokka-Microsoft": {
"command": "npx",
"args": ["-y", "@merill/lokka"],
"env": {
"TENANT_ID": "<租户ID>",
"CLIENT_ID": "<客户端ID>",
"CERTIFICATE_PATH": "/证书路径/certificate.pem",
"CERTIFICATE_PASSWORD": "<可选证书密码>",
"USE_CERTIFICATE": "true"
}
}
}
}
为了方便,将 PFX 客户端证书转换为 PEM 编码证书:
openssl pkcs12 -in /证书路径/cert.pfx -out /证书路径/cert.pem -nodes -clcerts
{
"mcpServers": {
"Lokka-Microsoft": {
"command": "npx",
"args": ["-y", "@merill/lokka"],
"env": {
"TENANT_ID": "<租户ID>",
"CLIENT_ID": "<客户端ID>",
"CLIENT_SECRET": "<客户端密钥>"
}
}
}
}
基于令牌的身份验证,其中 MCP 客户端提供访问令牌:
{
"mcpServers": {
"Lokka-Microsoft": {
"command": "npx",
"args": ["-y", "@merill/lokka"],
"env": {
"USE_CLIENT_TOKEN": "true"
}
}
}
}
当使用客户端提供的令牌模式时:
USE_CLIENT_TOKEN=true 启动 MCP 服务器。set-access-token 工具提供有效的 Microsoft Graph 访问令牌。get-auth-status 工具验证身份验证状态。set-access-token 刷新令牌。set-access-token:设置或更新 Microsoft Graph 认证的访问令牌。get-auth-status:检查当前的身份验证状态和功能。add-graph-permission:交互式请求额外的 Microsoft Graph 权限范围。Lokka 现支持控制用于所有请求的默认 Microsoft Graph API 版本:
beta 版本以访问最新功能。USE_GRAPH_BETA=false 强制所有请求使用 v1.0 版本。graphApiVersion 参数(除非 USE_GRAPH_BETA=false)。当 USE_GRAPH_BETA=false 时,所有 Graph API 调用将使用稳定的 v1.0 版本,即使在 graphApiVersion 参数中明确请求了 beta。
查看文档以获取更多关于如何安装和配置 Lokka 的信息。
| 平台 | VS Code | VS Code Insiders |
|---|---|---|
| Windows | ||
| macOS/Linux |
Lokka-Microsoft
apiType (字符串):要查询的 Microsoft API 类型。选项:'graph' 对应 Microsoft Graph (Entra),'azure' 对应 Azure 资源管理。path (字符串):要调用的 Azure 或 Graph API URL 路径(如 '/users', '/groups', '/subscriptions')。method (字符串):要使用的 HTTP 方法(如 get, post, put, patch, delete)。apiVersion (字符串):Azure 资源管理 API 版本(对于 apiType Azure 是必需的)。subscriptionId (字符串):Azure 订阅 ID(对于 Azure 资源管理)。queryParams (字符串):类似 $filter, $select 等查询参数数组。所有参数都是字符串。body (JSON):请求正文(适用于 POST, PUT, PATCH)。set-access-token (v0.2.0 新增)
accessToken (字符串):从 Microsoft Graph 认证获得的访问令牌。expiresOn (字符串,可选):令牌过期时间,ISO 格式。get-auth-status (v0.2.0 新增)
服务器的配置是通过环境变量完成的。支持以下环境变量:
| 名称 | 描述 | 是否必需 |
|---|---|---|
TENANT_ID | Microsoft Entra 租户的 ID。 | 是(除了客户端提供的令牌模式) |
CLIENT_ID | 在 Microsoft Entra 中注册的应用程序的 ID。 | 是(除了客户端提供的令牌模式) |
CLIENT_SECRET | 在 Microsoft Entra 中注册的应用程序的客户端密钥。 | 是(仅限客户端凭据模式) |
USE_INTERACTIVE | 设置为 "true" 以启用交互式认证模式。 | 否 |
USE_CLIENT_TOKEN | 设置为 "true" 以启用客户端提供的令牌认证模式。 | 否 |
USE_CERTIFICATE | 设置为 "true" 以启用证书认证模式。 | 否 |
CERTIFICATE_PATH | 用于证书认证的 PEM 编码证书文件路径。 | 是(仅限证书模式) |
CERTIFICATE_PASSWORD | 证书文件的密码(如果加密)。 | 否 |
REDIRECT_URI | 交互式认证的重定向 URI(默认:http://localhost:3000)。 | 否 |
ACCESS_TOKEN | 客户端提供的令牌模式的初始访问令牌。 | 否 |
USE_GRAPH_BETA | 设置为 "false" 以强制所有 Graph API 调用使用 v1.0 而不是 beta(默认:true,允许 beta)。 | 否 |
要使用此服务器与 Claude Desktop 应用程序一起使用,请将以下配置添加到您的 claude_desktop_config.json 文件中的 "mcpServers" 部分:
{
"mcpServers": {
"Lokka-Microsoft": {
"command": "npx",
"args": ["-y", "@merill/lokka"]
}
}
}
{
"mcpServers": {
"Lokka-Microsoft": {
"command": "npx",
"args": ["-y", "@merill/lokka"],
"env": {
"TENANT_ID": "<租户ID>",
"CLIENT_ID": "<客户端ID>",
"CLIENT_SECRET": "<客户端密钥>"
}
}
}
}
确保替换 <租户ID>、<客户端ID> 和 <客户端密钥> 为您 Microsoft Entra 应用的实际值。(详见 安装指南,了解如何创建 Entra 应用并配置代理。)