Skip to main content
Glama

ServiceNow MCP Server

README.md8.16 kB
# ServiceNow MCP Server [![Python Version](https://img.shields.io/badge/python-3.9%2B-blue)](https://www.python.org/downloads/) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![MCP Version](https://img.shields.io/badge/MCP-1.1.0%2B-green)](https://modelcontextprotocol.io/) [![CI Status](https://github.com/asklokesh/servicenow-mcp-server/workflows/CI/badge.svg)](https://github.com/asklokesh/servicenow-mcp-server/actions) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) A highly customizable Model Context Protocol (MCP) server for ServiceNow API integration. This server enables AI assistants and development tools to interact with ServiceNow instances through a standardized interface. **Enterprise-grade ServiceNow integration** - Connect ServiceNow with modern development tools and automation frameworks through the Model Context Protocol. ## Features - **Comprehensive ServiceNow API Coverage** - Incident Management - Change Management - Problem Management - Configuration Management Database (CMDB) - Service Catalog - Knowledge Base - User Management - Custom Table Operations - **Highly Customizable** - Feature flags to enable/disable modules - Environment-based configuration - JSON configuration files with override support - Flexible authentication options - **Production Ready** - Async/await support for high performance - Retry logic with exponential backoff - Comprehensive error handling - Structured JSON logging - Rate limit handling - **Easy Integration** - Compatible with Claude Desktop, VS Code, Cursor, and other MCP clients - Standard MCP protocol implementation - Simple CLI interface ## Installation ### Prerequisites - Python 3.9 or higher - ServiceNow instance with API access - ServiceNow user credentials with appropriate permissions ### Install from Source ```bash # 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 . ``` ### Install from PyPI (coming soon) ```bash pip install servicenow-mcp-server ``` ## Configuration ### Quick Start with Environment Variables 1. Copy the example environment file: ```bash cp .env.example .env ``` 2. Edit `.env` with your ServiceNow credentials: ```env SERVICENOW_INSTANCE=your-instance.service-now.com SERVICENOW_USERNAME=your-username SERVICENOW_PASSWORD=your-password ``` 3. Run the server: ```bash servicenow-mcp ``` ### Advanced Configuration The server supports multiple configuration methods with the following precedence: 1. Environment variables (highest priority) 2. `config/local.json` (local overrides) 3. `config/default.json` (base configuration) #### Configuration Options ```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" } } ``` ## Integration with MCP Clients ### Desktop Configuration Add to your MCP client configuration: ```json { "mcpServers": { "servicenow": { "command": "servicenow-mcp", "env": { "SERVICENOW_INSTANCE": "your-instance.service-now.com", "SERVICENOW_USERNAME": "your-username", "SERVICENOW_PASSWORD": "your-password" } } } } ``` ### VS Code / Cursor Add to your workspace settings: ```json { "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" } } } } ``` ## Available Tools ### Table Operations - **query_table** - Query any ServiceNow table with filters - **get_record** - Retrieve a single record by sys_id - **create_record** - Create new records - **update_record** - Update existing records - **delete_record** - Delete records ### Incident Management - **incident_create** - Create new incidents - **incident_update** - Update incidents (state, notes, resolution) - **incident_search** - Search incidents with multiple filters ### Change Management - **change_create** - Create change requests - **change_search** - Search change requests ### CMDB Operations - **ci_search** - Search configuration items - **ci_relationships** - Get CI relationships ### User Management - **user_search** - Search users by various criteria ### Knowledge Base - **kb_search** - Search knowledge articles ### Service Catalog - **catalog_items** - List catalog items ### Analytics - **get_stats** - Get aggregate statistics from any table ## Usage Examples ### Creating an Incident ```json { "tool": "incident_create", "arguments": { "short_description": "Email server down", "description": "Production email server is not responding", "urgency": 1, "impact": 1, "assignment_group": "Email Support" } } ``` ### Searching for Configuration Items ```json { "tool": "ci_search", "arguments": { "name": "*prod*", "class": "cmdb_ci_server", "operational_status": 1, "limit": 50 } } ``` ### Custom Table Query ```json { "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" } } ``` ## Security Considerations - Never commit credentials to version control - Use environment variables or secure secret management - Implement least-privilege access for ServiceNow users - Enable audit logging in production environments - Consider using OAuth instead of basic auth for production ## Development ### Setting Up Development Environment ```bash # Install development dependencies pip install -e ".[dev]" # Run tests pytest # Run linting ruff check src/ black src/ --check # Type checking mypy src/ ``` ### Running Tests ```bash # Run all tests pytest # Run with coverage pytest --cov=servicenow_mcp --cov-report=html # Run specific test file pytest tests/test_client.py ``` ## Troubleshooting ### Common Issues 1. **Authentication Failed** - Verify credentials are correct - Check if user has API access permissions - Ensure instance URL is correct (with or without https://) 2. **Connection Timeout** - Increase timeout in configuration - Check network connectivity - Verify ServiceNow instance is accessible 3. **Rate Limiting** - Server automatically handles rate limits with retry - Consider reducing request frequency - Check ServiceNow rate limit settings ### Debug Mode Enable debug logging: ```bash servicenow-mcp --log-level DEBUG ``` Or set in environment: ```bash export MCP_LOG_LEVEL=DEBUG ``` ## Contributing Contributions are welcome! Please: 1. Fork the repository 2. Create a feature branch 3. Add tests for new functionality 4. Ensure all tests pass 5. Submit a pull request ## License This project is licensed under the MIT License - see the LICENSE file for details. ## Support - GitHub Issues: [https://github.com/asklokesh/servicenow-mcp-server/issues](https://github.com/asklokesh/servicenow-mcp-server/issues) - Documentation: [https://github.com/asklokesh/servicenow-mcp-server/wiki](https://github.com/asklokesh/servicenow-mcp-server/wiki) ## Acknowledgments - Built on the [Model Context Protocol](https://modelcontextprotocol.io/) standard - ServiceNow is a registered trademark of ServiceNow, Inc.

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/LokiMCPUniverse/servicenow-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server