使用说明
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
配置
环境变量快速入门
-
复制示例环境文件:
cp .env.example .env -
编辑
.env使用您的ServiceNow凭据:SERVICENOW_INSTANCE=your-instance.service-now.com SERVICENOW_USERNAME=your-username SERVICENOW_PASSWORD=your-password -
运行服务器:
servicenow-mcp
高级配置
服务器支持多种配置方法,优先级如下:
- 环境变量(最高优先级)
config/local.json(本地覆盖)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
故障排除
常见问题
-
认证失败
- 验证凭据是否正确
- 检查用户是否具有API访问权限
- 确保实例URL正确(有或没有https://)
-
连接超时
- 增加配置中的超时时间
- 检查网络连接
- 验证ServiceNow实例是否可访问
-
速率限制
- 服务器通过重试自动处理速率限制
- 考虑降低请求频率
- 检查ServiceNow速率限制设置
调试模式
启用调试日志记录:
servicenow-mcp --log-level DEBUG
或设置在环境中:
export MCP_LOG_LEVEL=DEBUG
贡献
欢迎投稿!拜托:
- 克隆该仓库
- 创建要素分支
- 添加新功能的测试
- 确保所有测试通过
- 提交拉取请求
许可证
此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。
支持
- GitHub问题: https://github.com/asklokesh/servicenow-mcp-server/issues
- 文档: https://github.com/asklokesh/servicenow-mcp-server/wiki
致谢
- 建立在 模型上下文协议 标准
- ServiceNow是ServiceNow,股份有限公司的注册商标。
