service-now-mcp

service-now-mcp

3.2

If you are the rightful owner of service-now-mcp and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

The Service Now MCP Server is a Model Context Protocol server that integrates with the Red Hat Help Center ticketing system to automate and streamline the onboarding process for new employees.

Service Now MCP Server

A Model Context Protocol (MCP) server that provides access to Red Hat Help center ticketing system. This server enables AI assistants automate and generate tickets to enable faster and streamline on-board of new employees.

Overview

This MCP server communicates with Service Now APIs and provides the following tools:

  • open_locker_ticket - Generate a new locker ticket for the employee

Features

Available Tools

1.Open Locker Ticket (open_locker_ticket)

Prerequisites

  • Python 3.8+
  • Podman or Docker

Installation & Setup

Local Development

  1. Clone the repository:
git clone <repository-url>
cd service-now-mcp
  1. Install dependencies:
pip install -r requirements.txt
  1. Run the server:
python mcp_server.py

Container Deployment

Building locally

To build the container image locally using Podman, run:

podman build -t service-now-mcp:latest .

This will create a local image named service-now-mcp:latest that you can use to run the server.

VS Code Continue Integration

Example configuration to add to VS Code Continue:

"experimental": {
    "modelContextProtocolServers": [
      {
        "name": "service-now-mcp",
        "transport": {
          "type": "stdio",
          "command": "podman",
          "args": [
            "run",
            "-i",
            "--rm",
            "-e", "API_BASE_URL",
            "localhost/service-now-mcp:latest"
          ],
          "env": {
            "API_BASE_URL": "https://redhat.service-now.com"
          }  
        }
      },
    ]
  }

Run with Service Now Mock

  1. Create a new podman network: podman network create service-now
  2. Go to the mock directory and build it's image:
  3. cd mock_service_now
  4. podman build -t service-mock:latest .
  5. Run the service now mock server: podman run --rm -p 8000:8000 --network=service-now --name=service-mock service-mock
  6. Comment out the service now with real RH base url and add the mocked base url
"experimental": {
    "modelContextProtocolServers": [
      // {
      //   "name": "service-now-mcp",
      //   "transport": {
      //     "type": "stdio",
      //     "command": "podman",
      //     "args": [
      //       "run",
      //       "-i",
      //       "--rm",
      //       "-e", "API_BASE_URL",
      //       "localhost/service-now-mcp:latest"
      //     ],
      //     "env": {
      //       "API_BASE_URL": "https://redhat.service-now.com"
      //     }  
      //   }
      // },
      {
        "name": "service-now-mcp-mock",
        "transport": {
          "type": "stdio",
          "command": "podman",
          "args": [
            "run",
            "-i",
            "--rm",
            "--network=service-now",
            "-e", "API_BASE_URL",
            "localhost/service-now-mcp:latest"
          ],
          "env": {
            "API_BASE_URL": "http://service-mock:8000"
          }  
        }
      }
    ]
  }

Roadmap

  • Prove initial POC capabel of openning a simple ticket via serivce now API.
  • Update readme file to include installation details etc.
  • Create a mock service now server for faster feedback loop & reduced risk
  • Add instructions or script for obtaining user authentication
  • Create & use variables for: base url, header, cookies
  • Improve open locker ticket tool (looker size, floor, etc)
  • Add additional tools: new badge request, payroll request, list open tickets, etc

Environment Variables

  • API_BASE_URL - The service now base url (default: "localhost:8000")

Data Privacy

Currently this service requires obtaining the users:

  • url
  • headers
  • cookies

This sensitive info is currently stored in a sensetive_data.py not commited to the repository. We will further improve this implementation by passing this data as Environment Variables.