Azure与Microsoft 365自然语言管理服务器

Lokka是一款基于AI的模型-上下文-协议服务器,支持通过自然语言查询和管理Azure及Microsoft 365租户。

  • by BugRoger
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 BugRoger/lokka

使用说明

_关闭

Lokka是Microsoft Graph和Azure RM API的模型上下文协议服务器,允许您使用AI查询和管理Azure和Microsoft 365租户。

请看 位置.dev 了解如何将Lokka与您最喜欢的AI模型和聊天客户端一起使用。

Lokka允许您使用Claude Desktop或任何MCP客户端,通过Microsoft API使用自然语言在Azure和Microsoft 365租户中完成任务。

例如。:

  • Create a new security group called 'Sales and HR' with a dynamic rule based on the department attribute.
  • Find all the conditional access policies that haven't excluded the emergency access account
  • Show me all the Intune device configuration policies assigned to the 'Call center' group
  • What was the most expensive service in Azure last month?

认证方法

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": "<tenant-id>",
        "CLIENT_ID": "<client-id>",
        "USE_INTERACTIVE": "true"
      }
    }
  }
}

仅应用程序身份验证

传统的仅限应用程序的身份验证。您可以使用以下配置的证书(推荐)或客户端秘密身份验证。

看 安装指南 有关如何创建Entra应用程序的更多详细信息。

仅使用证书进行应用程序身份验证

使用PEM编码的客户端证书进行仅应用程序身份验证:

{
  "mcpServers": {
    "Lokka-Microsoft": {
      "command": "npx",
      "args": ["-y", "@merill/lokka"],
      "env": {
        "TENANT_ID": "<tenant-id>",
        "CLIENT_ID": "<client-id>",
        "CERTIFICATE_PATH": "/path/to/certificate.pem",
        "CERTIFICATE_PASSWORD": "<optional-certificate-password>",
        "USE_CERTIFICATE": "true"
      }
    }
  }
}

为了方便起见,为了将PFX客户端证书转换为PEM编码证书:

openssl pkcs12 -in /path/to/cert.pfx -out /path/to/cert.pem -nodes -clcerts

仅使用客户端密码进行应用程序身份验证

{
  "mcpServers": {
    "Lokka-Microsoft": {
      "command": "npx",
      "args": ["-y", "@merill/lokka"],
      "env": {
        "TENANT_ID": "<tenant-id>",
        "CLIENT_ID": "<client-id>",
        "CLIENT_SECRET": "<client-secret>"
      }
    }
  }
}

客户端提供的令牌

MCP客户端提供访问令牌的基于令牌的身份验证:

{
  "mcpServers": {
    "Lokka-Microsoft": {
      "command": "npx",
      "args": ["-y", "@merill/lokka"],
      "env": {
        "USE_CLIENT_TOKEN": "true"
      }
    }
  }
}

使用客户端提供的令牌模式时:

  1. 使用以下命令启动MCP服务器 USE_CLIENT_TOKEN=true
  2. 使用 set-access-token 提供有效Microsoft Graph访问令牌的工具
  3. 使用 get-auth-status 验证身份验证状态的工具
  4. 根据需要使用刷新令牌 set-access-token

新工具

令牌管理工具

  • set-access-token:设置或更新Microsoft Graph身份验证的访问令牌
  • get-auth-status:检查当前身份验证状态和功能
  • add-graph-permission:以交互方式请求其他Microsoft Graph权限范围

图形API版本控制

Lokka现在支持控制用于所有请求的默认Microsoft Graph API版本:

  • 默认行为:用途 beta 用于访问最新功能的版本
  • 生产模式:设置 USE_GRAPH_BETA=false 强制所有请求使用 v1.0 版本
  • 按请求覆盖:您仍然可以指定 graphApiVersion 单个请求中的参数(除非 USE_GRAPH_BETA=false)

当 USE_GRAPH_BETA=false,所有Graph API调用都将使用稳定的 v1.0 版本,即使 beta 在 graphApiVersion 参数。

入门

有关如何安装和配置Lokka的更多信息,请参阅文档。

一键安装VS Code

平台 VS代码 VS代码内部人员
窗户
macOS/Linux

组件

工具

  1. Lokka-Microsoft

    • 调用Microsoft Graph和Azure API。支持查询Azure和Microsoft 365租户。如果提供了权限,也支持更新。
    • 输入:
      • apiType (字符串):要查询的Microsoft API的类型。选项:Microsoft graph(Entra)的“graph”或azure资源管理的“azure”。
      • path (字符串):要调用的Azure或Graph API URL路径(例如“/users”、“/groups”和“/subscriptions”)。
      • method (string):要使用的HTTP方法(例如,get、post、put、patch、delete)
      • apiVersion (字符串):Azure资源管理API版本(apiType Azure需要)
      • subscriptionId (string):Azure订阅ID(用于Azure资源管理)。
      • queryParams (string):查询参数数组,如$filter、$select等。所有参数都是字符串。
      • body (JSON):请求体(用于POST、PUT、PATCH)
    • 返回:Azure或Graph API调用的结果。
  2. set-access-token (v0.2.0中的新功能)

    • 使用客户端提供的令牌模式时,设置或更新Microsoft Graph身份验证的访问令牌。
    • 输入:
      • accessToken (string):从Microsoft Graph身份验证获得的访问令牌
      • expiresOn (字符串,可选):ISO格式的令牌过期时间
    • 返回:令牌更新确认
  3. get-auth-status (v0.2.0中的新功能)

    • 检查MCP服务器的当前身份验证状态和模式
    • 返回:身份验证模式、就绪状态和功能

环境变量

服务器的配置是使用环境变量完成的。支持以下环境变量:

名称 描述 必填
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应用程序一起使用,请将以下配置添加到您的“mcpServers”部分 claude_desktop_config.json:

交互式身份验证

{
  "mcpServers": {
    "Lokka-Microsoft": {
      "command": "npx",
      "args": ["-y", "@merill/lokka"]
    }
  }
}

客户端凭据身份验证

{
  "mcpServers": {
    "Lokka-Microsoft": {
      "command": "npx",
      "args": ["-y", "@merill/lokka"],
      "env": {
        "TENANT_ID": "<tenant-id>",
        "CLIENT_ID": "<client-id>",
        "CLIENT_SECRET": "<client-secret>"
      }
    }
  }
}

确保更换 <tenant-id>, <client-id>,以及 <client-secret> 使用Microsoft Entra应用程序中的实际值。(参见 安装指南 有关如何创建Entra应用程序和配置代理的更多详细信息。)