Skip to main content
Glama
PTTG-IT

Service Desk Plus MCP Server

by PTTG-IT

Service Desk Plus MCP Server

A Model Context Protocol (MCP) server that integrates with Service Desk Plus Cloud API, enabling AI assistants to perform CRUD operations on all Service Desk Plus entities.

๐Ÿš€ Current Status (January 2025)

๐ŸŽ‰ PRODUCTION READY - Complete Service Desk Plus MCP Server
โœ… ALL 16 TOOLS WORKING PERFECTLY (100% Success Rate)
โœ… Enterprise Grade - Full ITSM integration with comprehensive OAuth scopes
โœ… Email Communication - Reply to requesters with ticket conversation integration
โœ… Zero OAuth Issues - Bulletproof token management with rate limit protection
โœ… Complete Testing - All tools validated through comprehensive client testing
โœ… Production Ready - Robust error handling and business rule compliance

Recent Improvements

  • ๐Ÿ”ง Fixed Authorization header format from Bearer to Zoho-oauthtoken

  • ๐Ÿ”ง Added subcategory as mandatory field for request creation

  • ๐Ÿ”ง Implemented proper list_info structure with search_criteria

  • ๐Ÿ”ง Added advanced search capabilities with complex criteria

  • ๐Ÿ”ง Created comprehensive OAuth and search documentation

  • ๐Ÿ”ง Mock API now perfectly replicates real API behaviors

  • ๐Ÿ”ง NEW: Email communication tools for requester replies

  • ๐Ÿ”ง NEW: Private notes and first response functionality

  • ๐Ÿ”ง NEW: Full conversation history retrieval

Tool Status

  • โœ… list_requests - Working with proper search_criteria

  • โœ… get_request - Working

  • โœ… search_requests - Enhanced with advanced criteria support

  • โœ… get_metadata - Working

  • โœ… add_note - Working

  • โœ… reply_to_requester - NEW - Email reply functionality working

  • โœ… add_private_note - NEW - Private notes working

  • โœ… send_first_response - NEW - First response with email working

  • โœ… get_request_conversation - NEW - Conversation history working

  • โœ… list_technicians - Working with fallback to /users endpoint

  • โœ… get_technician - Working

  • โœ… find_technician - Working

  • โœ… create_request - Fixed with subcategory support

  • โœ… update_request - Working (priority updates blocked by API design)

  • โœ… close_request - Working with proper closure handling

  • โœ… claude_code_command - Working

Working Implementation

  • Architecture: Direct MCP protocol over Server-Sent Events (SSE)

  • Location: sdp-mcp-server/src/working-sse-server.cjs

  • Status: All Service Desk Plus tools operational

  • Client: Successfully tested with Claude Code

Related MCP server: Freshservice MCP Server

๐Ÿ“‹ Available Tools

Request Management

  1. list_requests - List service desk requests with optional filters

  2. get_request - Get detailed information about a specific request

  3. search_requests - Search requests using various criteria

  4. create_request - Create new service desk requests

  5. update_request - Update existing requests

  6. close_request - Close requests with closure information

  7. add_note - Add notes to existing requests

Email Communication (NEW)

  1. reply_to_requester - Send email reply to requester (appears in ticket conversation)

  2. add_private_note - Add private note not visible to requester

  3. send_first_response - Send first response with email notification

  4. get_request_conversation - Get full conversation history

Technician Management

  1. list_technicians - List available technicians for assignment

  2. get_technician - Get detailed technician information

  3. find_technician - Find technician by name or email

Utilities

  1. get_metadata - Get valid field values for dropdowns

  2. claude_code_command - Execute Claude Code commands

๐Ÿ”ง Recent Fixes & Improvements

OAuth Authentication

  • Fixed authorization header format: Zoho-oauthtoken instead of Bearer

  • Implemented singleton OAuth client to prevent rate limiting

  • Added global refresh lock to prevent concurrent token refreshes

  • Tokens now properly reused until expiry

API Field Handling

  • Added mandatory subcategory field for request creation

  • Fixed status filtering using proper search_criteria format

  • Implemented API maximum of 100 rows per request

  • Added support for complex search queries with logical operators

Mock API Server

  • Complete replication of real API behaviors

  • Includes all error responses and business rules

  • Test data includes Clay Meuth technician (ID: 216826000000006907)

  • Supports both /technicians and /users endpoints

๐Ÿ”ง Quick Start

Prerequisites

  • Node.js 18+

  • Service Desk Plus Cloud account with OAuth credentials

  • Permanent refresh token (never expires!)

Setup

  1. Clone the repository

git clone https://github.com/PTTG-IT/SDP-MCP.git
cd SDP-MCP/sdp-mcp-server
  1. Install dependencies

npm install
  1. Configure environment

cp .env.example .env
# Edit .env with your OAuth credentials
  1. Start the server

./start-sse-server.sh

The server will start on port 3456.

Client Configuration

For Claude Code or other MCP clients:

{
  "mcpServers": {
    "service-desk-plus": {
      "command": "npx",
      "args": ["mcp-remote", "http://localhost:3456/sse", "--allow-http"]
    }
  }
}

For remote access:

{
  "mcpServers": {
    "service-desk-plus": {
      "command": "npx",
      "args": ["mcp-remote", "http://192.168.2.10:3456/sse", "--allow-http"]
    }
  }
}

For Windows VS Code:

{
  "mcpServers": {
    "service-desk-plus": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "http://10.212.0.7:3456/sse", "--allow-http"]
    }
  }
}

๐Ÿงช Testing with Mock API

The project includes a complete mock API server for safe testing:

# Start mock API server (port 3457)
npm run mock:api

# Use mock API with SSE server
export SDP_USE_MOCK_API=true
./start-sse-server.sh

The mock API:

  • Replicates exact error responses from real API

  • Enforces same business rules (can't update closed tickets)

  • Includes test data with is_mock: true identifier

  • Perfect for development and testing

๐Ÿ“š Documentation

Knowledge Base

  • example/knowledge/service-desk-plus-authentication.md - OAuth implementation guide

  • example/knowledge/service-desk-plus-oauth-complete.md - Complete OAuth reference

  • example/knowledge/service-desk-plus-search-criteria.md - Advanced search guide

  • example/knowledge/service-desk-plus-mandatory-fields.md - Required fields reference

  • example/knowledge/service-desk-plus-sse-implementation.md - SSE server details

API Documentation

๐Ÿ”‘ OAuth Configuration

Required Environment Variables

# Service Desk Plus Configuration
SDP_BASE_URL=https://helpdesk.yourdomain.com   # Custom domain
SDP_INSTANCE_NAME=itdesk                       # Instance name
SDP_PORTAL_NAME=yourportal                     # Portal name
SDP_DATA_CENTER=US                             # Data center (US, EU, IN, AU, JP, UK, CA, CN)

# OAuth Credentials
SDP_OAUTH_CLIENT_ID=your_client_id
SDP_OAUTH_CLIENT_SECRET=your_client_secret_here
SDP_OAUTH_REFRESH_TOKEN=your_permanent_refresh_token_here

# Optional: Use mock API for testing
SDP_USE_MOCK_API=false

OAuth Setup Steps

  1. Create a self-client OAuth app in Service Desk Plus

  2. Generate authorization code with required scopes

  3. Exchange code for permanent refresh token

  4. Configure .env with credentials

See docs/OAUTH_SETUP_GUIDE.md for detailed instructions.

๐Ÿ—๏ธ Architecture

Current Implementation (Single-Tenant)

  • Direct MCP protocol implementation over SSE

  • OAuth tokens configured via environment variables

  • Singleton OAuth client prevents rate limiting issues

  • Smart token refresh only on 401 errors

  • Production-ready and fully tested

Future Multi-Tenant Architecture

When MCP protocol evolves to support stateless connections:

  • Multiple clients connecting to single server

  • Per-tenant OAuth token management

  • Complete tenant isolation

  • Database-backed token storage

๐Ÿ› Troubleshooting

Common Issues

  1. OAuth Rate Limiting

    • Error: "You have made too many requests continuously"

    • Solution: Wait 5-15 minutes, server implements proper token reuse

  2. Field Validation Errors (4012)

    • Error: Missing mandatory fields

    • Solution: Check instance configuration for required fields

  3. Priority Update Errors (403)

    • Error: "Cannot give value for priority"

    • Solution: This is an API limitation, priority may not be updatable

  4. Authentication Errors (401)

    • Error: "UNAUTHORISED"

    • Solution: Verify OAuth tokens and custom domain configuration

Debug Mode

# Enable debug logging
export DEBUG=sdp:*
./start-sse-server.sh

๐Ÿค Contributing

  1. Fork the repository

  2. Create your feature branch (git checkout -b feature/amazing-feature)

  3. Commit your changes (git commit -m 'Add amazing feature')

  4. Push to the branch (git push origin feature/amazing-feature)

  5. Open a Pull Request

๐Ÿ“„ License

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

๐Ÿ™ Acknowledgments

  • ManageEngine for Service Desk Plus API

  • Anthropic for the Model Context Protocol

  • Claude Code for testing and integration

๐Ÿ“ž Support

For issues and questions:


Note: This is for Service Desk Plus Cloud (SDPOnDemand), not on-premises installations.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI models to interact with Freshservice IT service management platform, allowing automated ticket management, change requests, asset tracking, and solution article operations through natural language commands.
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Enables AI assistants to connect with Freshservice ITSM for managing tickets, assets, agents, and organizational data through natural language. It provides a comprehensive set of tools for performing CRUD operations on service desk records and searching across the Freshservice platform.
    53
    69 npm
    1
    MIT
  • F
    license
    C
    quality
    C
    maintenance
    Connects Claude to your Freshservice ITSM instance, enabling management of tickets, changes, assets, knowledge base, and more through natural language.
    70
    1
    -