ServiceNow集成服务器

一个高度可定制的Model Context Protocol(MCP)服务器,用于ServiceNow API集成,使AI助手和开发工具能够通过标准化接口与ServiceNow实例交互。

  • by asklokesh
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 asklokesh/servicenow-mcp-server

使用说明

ServiceNow MCP服务器

用于ServiceNow API集成的高度可定制的模型上下文协议(MCP)服务器。该服务器使AI助手和开发工具能够通过标准化的接口与ServiceNow实例进行交互。

企业级ServiceNow集成 -通过模型上下文协议将ServiceNow与现代开发工具和自动化框架连接起来。

特性

  • 全面的ServiceNow API覆盖范围

    • 事件管理
    • 变更管理
    • 问题管理
    • 配置管理数据库(CMDB)
    • 服务目录
    • 知识库
    • 用户管理
    • 自定义表操作
  • 高度可定制

    • 启用/禁用模块的功能标志
    • 基于环境的配置
    • 支持覆盖的JSON配置文件
    • 灵活的身份验证选项
  • 生产就绪

    • 异步/等待高性能支持
    • 使用指数回退重试逻辑
    • 全面的错误处理
    • 结构化JSON日志记录
    • 费率限制处理
  • 易于集成

    • 与Claude Desktop、VS Code、Cursor和其他MCP客户端兼容
    • 标准MCP协议实施
    • 简单的CLI界面

安装

先决条件

  • Python 3.9或更高版本
  • 具有API访问权限的ServiceNow实例
  • 具有适当权限的ServiceNow用户凭据

从源代码安装

# Clone the repository
git clone https://github.com/asklokesh/servicenow-mcp-server.git
cd servicenow-mcp-server

# Create a virtual environment
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install the package
pip install -e .

从PyPI安装(即将推出)

pip install servicenow-mcp-server

配置

环境变量快速入门

  1. 复制示例环境文件:

    cp .env.example .env
    
  2. 编辑 .env 使用您的ServiceNow凭据:

    SERVICENOW_INSTANCE=your-instance.service-now.com
    SERVICENOW_USERNAME=your-username
    SERVICENOW_PASSWORD=your-password
    
  3. 运行服务器:

    servicenow-mcp
    

高级配置

服务器支持多种配置方法,优先级如下:

  1. 环境变量(最高优先级)
  2. config/local.json (本地覆盖)
  3. config/default.json (基本配置)

配置选项

{
  "servicenow": {
    "instance": "your-instance.service-now.com",
    "username": "your-username",
    "password": "your-password",
    "api_version": "v2",
    "timeout": 30,
    "max_retries": 3
  },
  "features": {
    "incident_management": true,
    "change_management": true,
    "problem_management": true,
    "service_catalog": true,
    "knowledge_base": true,
    "user_management": true,
    "cmdb": true,
    "custom_tables": true
  },
  "logging": {
    "level": "INFO",
    "format": "json",
    "file": "logs/servicenow-mcp.log"
  }
}

与MCP客户端集成

桌面配置

添加到MCP客户端配置中:

{
  "mcpServers": {
    "servicenow": {
      "command": "servicenow-mcp",
      "env": {
        "SERVICENOW_INSTANCE": "your-instance.service-now.com",
        "SERVICENOW_USERNAME": "your-username",
        "SERVICENOW_PASSWORD": "your-password"
      }
    }
  }
}

VS代码/光标

添加到工作区设置:

{
  "mcp.servers": {
    "servicenow": {
      "command": "servicenow-mcp",
      "args": ["--config-dir", "./config"],
      "env": {
        "SERVICENOW_INSTANCE": "your-instance.service-now.com",
        "SERVICENOW_USERNAME": "your-username",
        "SERVICENOW_PASSWORD": "your-password"
      }
    }
  }
}

可用工具

表操作

  • 查询表 -使用筛选器查询任何ServiceNow表
  • 获取记录 -通过sys_id检索单个记录
  • create_record -创建新记录
  • update_record -更新现有记录
  • 删除记录 -删除记录

事件管理

  • incident_create -创建新事件
  • 偶发事件更新 -更新事件(状态、注释、解决方案)
  • 偶发事件搜索 -使用多个过滤器搜索事件

变更管理

  • change_create -创建更改请求
  • change_search -搜索更改请求

CMDB操作

  • ci_search -搜索配置项
  • ci_关系 -获取CI关系

用户管理

  • 用户搜索 -按各种条件搜索用户

知识库

  • kb_search -搜索知识文章

服务目录

  • 编目项目 -列出目录项

分析

  • get_stats -从任何表中获取聚合统计信息

使用示例

创建事件

{
  "tool": "incident_create",
  "arguments": {
    "short_description": "Email server down",
    "description": "Production email server is not responding",
    "urgency": 1,
    "impact": 1,
    "assignment_group": "Email Support"
  }
}

搜索配置项

{
  "tool": "ci_search",
  "arguments": {
    "name": "*prod*",
    "class": "cmdb_ci_server",
    "operational_status": 1,
    "limit": 50
  }
}

自定义表查询

{
  "tool": "query_table",
  "arguments": {
    "table": "u_custom_application",
    "query": "active=true^u_environment=production",
    "fields": ["name", "u_version", "u_owner"],
    "order_by": "-sys_updated_on"
  }
}

安全考虑

  • 从不将凭据提交到版本控制
  • 使用环境变量或安全密钥管理
  • 为ServiceNow用户实现最低权限访问
  • 在生产环境中启用审核日志记录
  • 考虑在生产环境中使用OAuth而不是基本身份验证

发展

设置开发环境

# Install development dependencies
pip install -e ".[dev]"

# Run tests
pytest

# Run linting
ruff check src/
black src/ --check

# Type checking
mypy src/

运行测试

# Run all tests
pytest

# Run with coverage
pytest --cov=servicenow_mcp --cov-report=html

# Run specific test file
pytest tests/test_client.py

故障排除

常见问题

  1. 认证失败

    • 验证凭据是否正确
    • 检查用户是否具有API访问权限
    • 确保实例URL正确(有或没有https://)
  2. 连接超时

    • 增加配置中的超时时间
    • 检查网络连接
    • 验证ServiceNow实例是否可访问
  3. 速率限制

    • 服务器通过重试自动处理速率限制
    • 考虑降低请求频率
    • 检查ServiceNow速率限制设置

调试模式

启用调试日志记录:

servicenow-mcp --log-level DEBUG

或设置在环境中:

export MCP_LOG_LEVEL=DEBUG

贡献

欢迎投稿!拜托:

  1. 克隆该仓库
  2. 创建要素分支
  3. 添加新功能的测试
  4. 确保所有测试通过
  5. 提交拉取请求

许可证

此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。

支持

致谢