Service Desk Plus MCP Server

Service Desk Plus MCP Server

Integrates with Service Desk Plus Cloud API to enable AI assistants perform CRUD operations on service desk entities, including request management, technician management, and email communication.

Category
Visit Server

README

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

๐Ÿ“‹ 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

  • Main Documentation: https://www.manageengine.com/products/service-desk/sdpod-v3-api/
  • OAuth Guide: https://www.manageengine.com/products/service-desk/sdpod-v3-api/getting-started/oauth-2.0.html

๐Ÿ”‘ 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:

  • GitHub Issues: https://github.com/PTTG-IT/SDP-MCP/issues
  • Documentation: Check example/knowledge/ folder
  • API Reference: https://www.manageengine.com/products/service-desk/sdpod-v3-api/

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

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured