Skip to main content
Glama
servicedesk-plus

servicedesk-plus

ServiceDesk Plus Model Context Protocol (MCP) Server

Python Version License: MIT

A production-ready Model Context Protocol (MCP) server that connects large language models (LLMs) securely with your ManageEngine ServiceDesk Plus (On-Premise / Self-Hosted) instance. This server allows AI agents (such as Claude Desktop, Cursor, and other MCP hosts) to query, search, create, update, and manage help desk tickets and technical notes in real-time.


πŸ› οΈ Features

  • List & Search Tickets: Rich server-side filtering by status, requester email, and advanced subject-contains keyword queries.

  • Get Ticket Details: Retrieve comprehensive information on a single ticket, including its subject, description, priority, and resolution content.

  • Create Tickets: Seamlessly open new help desk requests with custom subjects, HTML/plain-text descriptions, and priorities.

  • Update Tickets: Real-time updates to ticket statuses, descriptions, and subjects.

  • Manage Technical Notes: Exposes tools to list and append technical updates directly onto tickets.

  • Public & Secure: Rigorously designed for open-source safety. Zero hardcoded secrets, domains, or credentials.

  • Classic UI Integration: Automatically generates browser-viewable deep links tailored for the Classic UI layout.

  • Complete Offline Testing: Includes a 100% offline unit test suite with mock network interception (respx).


Related MCP server: freshservice-mcp

πŸ“ Architecture Overview

 β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”             β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”             β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
 β”‚                 β”‚    Stdio    β”‚                    β”‚    HTTPS    β”‚  ManageEngine       β”‚
 β”‚    MCP Host     β”‚  ─────────> β”‚  servicedesk-plus  β”‚  ─────────> β”‚  ServiceDesk Plus   β”‚
 β”‚ (e.g. Claude)   β”‚  <───────── β”‚     (MCP Server)   β”‚  <───────── β”‚  (On-Premise API)   β”‚
 β”‚                 β”‚             β”‚                    β”‚ (authtoken) β”‚                     β”‚
 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜             β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜             β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ“‹ MCP Tools Exposed

This server exposes 6 robust tools to the AI client:

Tool Name

Parameters

Description

list_tickets

status (opt), requester_email (opt), search_query (opt), row_count (opt), start_index (opt)

Retrieve, paginated, and filter tickets. Performs efficient server-side query filtering.

get_ticket

ticket_id (req)

Retrieve full details of a single ticket (including HTML description and resolutions).

create_ticket

subject (req), description (req), priority (opt), requester_email (opt)

Create a new help desk request.

update_ticket

ticket_id (req), subject (opt), description (opt), status (opt)

Update fields on an existing ticket.

add_ticket_note

ticket_id (req), note (req)

Append a technical log or update note to a ticket.

list_ticket_notes

ticket_id (req)

Fetch all technical notes logged on a specific ticket.


πŸš€ Quick Start

Prerequisites

  • Python 3.10 or higher.

  • uv is highly recommended for lightning-fast package and tool management (or standard pip).

1. Configure Your Credentials

Copy the .env.example template to .env:

cp .env.example .env

Open .env and fill in your details:

SDP_API_KEY=your_technician_key_here
SDP_BASE_URL=productsupport.example.com
SDP_USERNAME=your_username_here

Note: Your SDP_API_KEY (Technician Key/Authtoken) is generated from your ServiceDesk Plus profile page.


πŸ“¦ Local Installation & Build

Building the Package

You can build a clean local package artifact (wheel file) of the server using standard build tools:

Using uv:

uv build

Using standard Python:

python -m pip install --upgrade build
python -m build

This will compile and output the package to dist/servicedesk_plus-0.1.0-py3-none-any.whl.


πŸ”Œ Configuring Your MCP Host

1. Claude Desktop

Add this to your claude_desktop_config.json (typically located in %APPDATA%\Claude\claude_desktop_config.json on Windows or ~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

This approach executes the server inside an isolated temporary sandbox with standard uvx:

{
  "mcpServers": {
    "servicedesk-plus": {
      "command": "uvx",
      "args": [
        "--from",
        "C:\\Workspace\\google-cli\\productsupport-mcp\\dist\\servicedesk_plus-0.1.0-py3-none-any.whl",
        "servicedesk-plus"
      ],
      "env": {
        "SDP_API_KEY": "YOUR_API_KEY",
        "SDP_BASE_URL": "productsupport.example.com",
        "SDP_USERNAME": "your_email@domain.com"
      }
    }
  }
}

Option B: Running from Local Sources (Development)

{
  "mcpServers": {
    "servicedesk-plus": {
      "command": "C:\\Workspace\\google-cli\\productsupport-mcp\\.venv\\Scripts\\python.exe",
      "args": [
        "C:\\Workspace\\google-cli\\productsupport-mcp\\src\\servicedesk_plus\\main.py"
      ],
      "env": {
        "SDP_API_KEY": "YOUR_API_KEY",
        "SDP_BASE_URL": "productsupport.example.com",
        "SDP_USERNAME": "your_email@domain.com"
      }
    }
  }
}

πŸ§ͺ Running Unit Tests

This project includes a comprehensive offline unit testing suite utilizing pytest and respx to mock ServiceDesk Plus API responses entirely.

  1. Install development requirements in your virtual environment:

    pip install -e .[dev]
  2. Run tests:

    pytest

All tests run 100% offline, allowing verification of tool registration, query formatting, body payload construction, and response unpacking with zero credentials or internet required.


πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

Available Tools

6 tools
add_ticket_noteA

Append a technical update or administrative note to a ticket.

Args: ticket_id: The unique numeric ID of the ticket. note: Text content of the note to append.

Inputs: note (required), ticket_id (required). Returns: result

create_ticketA

Create a new Help Desk ticket in ServiceDesk Plus.

Args: subject: Short summary or subject of the ticket. description: Full plain-text or HTML description detailing the issue. priority: Optional priority name (e.g. 'High', 'Medium', 'Low'). requester_email: Optional email of the requester. If omitted, uses default.

Inputs: subject (required), description (required), priority, requester_email. Returns: result

get_ticketA

Retrieve detailed information on a single ticket, including its status, resolution, and description.

Args: ticket_id: The unique numeric ID of the ticket to retrieve.

Inputs: ticket_id (required). Returns: result

list_ticket_notesA

List all notes attached to a specific ticket.

Args: ticket_id: The unique numeric ID of the ticket.

Inputs: ticket_id (required). Returns: result

list_ticketsA

Retrieve, search, and filter ServiceDesk Plus tickets.

Args: status: Optional status filter (e.g. 'Open', 'In Progress', 'Closed'). requester_email: Optional requester email address filter. search_query: Optional text keyword search for ticket subjects. row_count: Number of tickets to retrieve (default: 20, max: 100). start_index: 1-based start index for paginated results (default: 1).

Inputs: status, row_count, start_index, search_query, +1 more. Returns: result

update_ticketA

Update fields on an existing ticket in ServiceDesk Plus.

Args: ticket_id: The unique numeric ID of the ticket to update. subject: Optional new subject for the ticket. description: Optional new plain-text or HTML description. status: Optional new status name (e.g. 'Open', 'In Progress', 'Closed').

Inputs: ticket_id (required), status, subject, description. Returns: result

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.2/5.0

    Scored across 6 tools

    Disambiguation5/5

    Each tool has a distinct purpose: list, detail, create, update, add note, and list notes. No overlap or ambiguity between them.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun pattern with snake_case (e.g., list_tickets, create_ticket, update_ticket). This is uniform and predictable.

    Tool Count5/5

    Six tools is well-scoped for a help desk ticket server, covering core ticket operations and note management without unnecessary bloat.

    Completeness4/5

    The tool set covers create, read, update, list, and notes. Missing delete is acceptable for tickets, but lack of assign/transfer or note editing is a minor gap.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      An MCP server that enables AI assistants to interact with Freshservice service desk, supporting ticket search, retrieval, and creation via a configurable, Docker-first deployment.
      MIT
    • F
      license
      Not graded
      quality
      D
      maintenance
      MCP server that provides IT support tools to search known incidents, check ticket status, and create ticket drafts, enabling an AI assistant to help users with IT support queries.
      -
    • A
      license
      A
      quality
      C
      maintenance
      MCP server that exposes the i-net HelpDesk Ticket Web-API as tools for AI agents, enabling ticket search, reading, creation, and actions like replying, closing, and escalating, with attachment support.
      8
      MIT