ServiceNow MCP 服务器使用说明

项目简介

ServiceNow MCP 服务器是一个基于 Model Context Protocol (MCP) 标准的应用后端,它充当大型语言模型 (LLM) 客户端与 ServiceNow 实例之间的桥梁。通过这个服务器,LLM 能够以标准化的方式安全地访问 ServiceNow 中的各种信息(如事件、用户、知识库)并执行操作(如创建、更新记录)。

主要功能点

  • 资源访问 (Resources): 允许LLM客户端通过统一的URI访问ServiceNow中的数据资源,例如:
    • 获取最新事件列表
    • 根据编号获取特定事件详情
    • 列出用户和知识文章
    • 查询可用的ServiceNow表及其数据
    • 获取表的结构信息 (schema)
  • 工具调用 (Tools): 注册并提供一系列可供LLM调用的操作工具,用于执行ServiceNow中的具体任务,例如:
    • 创建新的事件记录
    • 更新现有事件记录
    • 通过文本或编码查询搜索记录
    • 根据系统ID (sys_id) 获取记录
    • 向事件添加客户可见的评论
    • 向事件添加内部工作笔记
    • 支持通过自然语言搜索和更新记录
    • 更新ServiceNow中的脚本文件(如Script Includes, Business Rules)
  • Prompt模板 (Prompts): 定义结构化的Prompt模板,指导LLM进行特定的交互流程,例如分析事件或创建事件。

安装步骤

该服务器是一个Python包,可以通过PyPI或源码进行安装。

  1. 从 PyPI 安装 (推荐):
    pip install mcp-server-servicenow
  2. 从源码安装 (适用于开发):
    git clone https://github.com/michaelbuckner/servicenow-mcp.git
    cd servicenow-mcp
    pip install -e .

服务器配置 (面向MCP客户端)

MCP客户端(如Cline)需要知道如何启动并连接到此ServiceNow MCP服务器。典型的配置信息会包含服务器名称、启动命令及其参数。

例如,在MCP客户端的配置文件中,你需要添加类似以下结构的配置(请根据你的实际安装路径和ServiceNow凭据进行修改,这不是实际的代码,而是需要填入客户端配置文件的参数说明):

{
  "mcpServers": {
    "servicenow": { // 服务器的唯一标识名称,可自定义
      "command": "/path/to/your/python/executable", // Python可执行文件的完整路径,该Python环境需要安装servicenow-mcp包
      "args": [ // 启动服务器进程时传递的命令行参数列表
        "-m", "mcp_server_servicenow.cli", // 运行servicenow-mcp包中的CLI模块
        "--url", "https://your-instance.service-now.com/", // **必需**: 你的ServiceNow实例URL
        // 以下是认证参数,选择其中一种方式提供,建议使用环境变量避免凭据泄露
        // Basic Auth (用户名/密码)
        "--username", "your-username", // ServiceNow用户名 (可通过SERVICENOW_USERNAME环境变量提供)
        "--password", "your-password", // ServiceNow密码 (可通过SERVICENOW_PASSWORD环境变量提供)
        // Token Auth (OAuth Token)
        // "--token", "your-oauth-token", // OAuth Token (可通过SERVICENOW_TOKEN环境变量提供)
        // OAuth Auth (Client ID, Client Secret, Username, Password)
        // "--client-id", "your-client-id", // OAuth Client ID (可通过SERVICENOW_CLIENT_ID环境变量提供)
        // "--client-secret", "your-client-secret", // OAuth Client Secret (可通过SERVICENOW_CLIENT_SECRET环境变量提供)
        // "--username", "your-username", // ServiceNow用户名 (同上)
        // "--password", "your-password"  // ServiceNow密码 (同上)
        // 可以指定传输协议,默认是 stdio
        // "--transport", "stdio" // 或 "sse"
      ],
      "disabled": false, // 是否启用此服务器
      "autoApprove": [] // 自动批准的工具列表
    }
  }
}

重要安全提示: 直接在配置文件中硬编码凭据(用户名、密码、Token、Client Secret)存在安全风险。强烈建议通过环境变量 ('SERVICENOW_INSTANCE_URL', 'SERVICENOW_USERNAME', 'SERVICENOW_PASSWORD', 'SERVICENOW_TOKEN', 'SERVICENOW_CLIENT_ID', 'SERVICENOW_CLIENT_SECRET') 提供ServiceNow认证信息。

基本使用方法

安装并配置好MCP客户端连接到ServiceNow MCP服务器后,LLM客户端即可通过标准MCP请求与ServiceNow进行交互:

  1. 访问数据: LLM可以请求读取'servicenow://'开头的资源URI来获取ServiceNow数据。
  2. 执行操作: LLM可以调用服务器暴露的工具(如 'create_incident', 'update_incident', 'search_records' 等)来执行相应的ServiceNow操作。
  3. 自然语言交互: 利用服务器提供的自然语言工具,LLM可以直接解析用户提出的自然语言查询或更新指令,无需预先将指令转化为结构化工具调用。
  4. 使用Prompt: LLM可以使用服务器定义的Prompt模板来指导其进行更结构化和ServiceNow领域相关的交互。

服务器会接收这些请求,调用ServiceNow API进行处理,并将结果以JSON-RPC响应的形式返回给LLM客户端。

信息

分类

商业系统