swsd-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SWSD_TOKEN | Yes | Your SWSD admin token (JWT). Required. | |
| SWSD_PROFILE | No | Profile to control tool set: triage, agent, knowledge, or full | agent |
| SWSD_BASE_URL | No | Base URL for SWSD API. For EU tenants use https://apieu.samanage.com | https://api.samanage.com |
| SWSD_ENABLE_EXTRAS | No | Comma-separated list of extra tools to enable on top of a profile |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| swsd_get_server_infoA | Return the SWSD MCP server's name, version, configured profile, enabled tools, and the SWSD base URL host. Local-only — does not call SWSD. Includes documented SWSD upstream rate limits (the model can reference these without guessing). |
| swsd_health_checkA | Verify connectivity and authentication to SWSD by making a minimal request. Returns ok=true on success, otherwise an error explaining the failure (401 = bad token, 403 = insufficient permission, network error = unreachable). |
| swsd_get_meA | Get the SWSD user record for the token's owner — id, email, name, title, role, department, site, group_ids, and assignment status. Call this first when the request mentions "me", "my", or "I" (e.g. "my tickets", "tickets in my group", "tickets assigned to me"), then pass the returned id/email to assignee_email or requester_email filters on swsd_list_incidents (or use swsd_list_my_incidents which does this in one call). Without this step, "my X" queries cannot be answered correctly. |
| swsd_list_incidentsA | List SWSD incidents with structured filters and pagination. Returns compact summaries (id, name, state, priority, assignee_email, requester_email, category, updated_at) — call swsd_get_incident for the full detail of any one row. Filters use SWSD repeated-key array semantics (multiple values within a filter are OR-ed). NOTE: assignee_email and requester_email are applied CLIENT-SIDE because SWSD /incidents.json silently ignores them server-side (verified 2026-05-08 against the live API). Other filters (state, category, dates, sites, departments, assigned_to_group, query) DO narrow server-side and are passed through. |
| swsd_list_my_incidentsA | List incidents assigned to the authenticated user. Internally calls swsd_get_me to discover the user's email, then calls /incidents.json with the OTHER server-side filters applied (state, priority, etc.) and narrows the response client-side by assignee.email — because SWSD's /incidents.json endpoint silently ignores assignee_email / requester_email filters (verified 2026-05-08 against the live API: a fake email returns the entire tenant). The client-side filter is the only correct way to scope to a specific user. For broader queries use swsd_list_incidents with assigned_to=<group_id> (group filtering does work server-side). |
| swsd_get_incidentA | Fetch one SWSD incident by numeric ID. Returns the full incident detail as returned by SWSD (passthrough), including custom_fields_values when present. Use swsd_list_incidents first if you only have a name or filter — IDs are not guessable. Pass detail_level: "long" to include comments, attachments, audits, SLA data, and resolution in one call. |
| swsd_list_incident_commentsA | List comments on a SWSD incident. Returns id, body, is_private, author_email, author_name, created_at. Use swsd_add_incident_comment to add a new comment. |
| swsd_list_categoriesA | List SWSD incident/solution categories. Returns id, name, parent_id, immediate children, and default_assignee_id. Categories form a hierarchy (parent_id links). Use this to validate category_name before swsd_create_incident or swsd_update_incident. |
| swsd_list_usersA | List SWSD users. Returns id, name, email, disabled, available_for_assignment, role, site, department, title. Set |
| swsd_list_catalog_itemsA | List catalog items available in SolarWinds Service Desk. Each item represents an offerable service request template (e.g., "New Employee Onboarding", "Software Request") with a defined set of input variables (form fields). Use swsd_get_catalog_item to inspect a single item's variables, then swsd_create_service_request to submit a request. |
| swsd_get_catalog_itemA | Get a single SWSD catalog item by id, including its |
| swsd_add_incident_commentA | Add a comment to a SWSD incident. Set |
| swsd_update_commentA | Update the body of an existing SWSD incident comment. Pass |
| swsd_create_incidentA | Create a new SWSD incident. Required: |
| swsd_update_incidentA | Update an existing SWSD incident. Pass |
| swsd_assign_incidentA | Assign an SWSD incident to an agent by email. Safer wrapper around swsd_update_incident — narrows the agent decision surface to "who gets this ticket." Use swsd_list_users with available_for_assignment_only=true to find valid assignees first. WRITE — does not retry on transient failure. |
| swsd_update_incident_stateA | Transition an SWSD incident to a new state (e.g., "Assigned", "Resolved", "Closed"). Safer wrapper around swsd_update_incident — narrows the agent decision surface. State names are tenant-specific; common ones: "New - Unassigned", "Assigned", "In Progress", "Awaiting Input", "Resolved", "Closed". Call swsd_get_incident first to see the current state. WRITE — does not retry on transient failure. |
| swsd_link_solution_to_incidentA | Attach a knowledge-base solution to an incident. Fetches the incident first, reads its existing linked solutions, appends the new one (preserving others), then PUTs with |
| swsd_create_service_requestA | Submit a SWSD catalog request, creating an incident with |
| swsd_list_sitesA | List SWSD sites (physical office/branch locations). Returns id, name, location code, description, time_zone. Use this to validate site_name before incident write tools. |
| swsd_list_departmentsA | List SWSD departments (organizational divisions). Returns id, name, description. Use this to validate department_name before incident write tools. |
| swsd_list_groupsA | List SWSD groups (assignment teams). Returns id, name, description, disabled, member_count. Useful for understanding team structure when triaging tickets. |
| swsd_list_rolesA | List SWSD roles (permission profiles). Returns id, name, description. Useful for understanding what users can do in SWSD when triaging permission-related tickets. |
| swsd_search_solutionsA | Search SWSD knowledge-base solution articles. Pass |
| swsd_get_solutionA | Fetch one SWSD solution by numeric ID. Returns the full solution as returned by SWSD (passthrough), including both |
| swsd_describe_custom_fieldsA | List the SWSD tenant's custom-field schema. Returns id, name, type (e.g. "Text", "Dropdown", "Date"), required, scope, module, allowed |
| swsd_get_record_auditsA | List the audit log for a SWSD record. Each audit entry captures one change: action ("Update"/"Create"/"Delete"), message ("State changed from New to Assigned"), the user who performed it, and the timestamp. Use this to answer "who changed this ticket?" or "what happened since I last looked?". Cheaper than swsd_get_incident with detail_level=long when you only need the audit history. object_type accepts incidents, problems, changes, releases, solutions, hardwares, other_assets. |
| swsd_list_incident_tasksA | List sub-tasks on a SWSD incident. Returns id, name, description, state ("New" / "In Progress" / "Completed"), completed boolean, position, assignee, due_at, created_at, updated_at. Use swsd_create_incident_task to add a sub-task and swsd_update_task_state to mark one complete. Sub-tasks also appear inline in |
| swsd_create_incident_taskA | Create a new sub-task on a SWSD incident. Required: |
| swsd_update_task_stateA | Mark a SWSD incident sub-task as complete or incomplete. Pass |
| swsd_list_problemsA | List SWSD problems (ITIL problem records) with structured filters and pagination. Returns compact summaries (id, name, state, priority, category, requester, assignee, updated_at) — call swsd_get_problem for the full detail of any one row. Filters use SWSD repeated-key array semantics (multiple values within a filter are OR-ed). Use this when investigating recurring incidents or identifying root causes that span multiple tickets. |
| swsd_get_problemA | Fetch one SWSD problem (ITIL problem record) by id or number. Returns the full problem detail as returned by SWSD (passthrough). Use swsd_list_problems first if you only have a name or filter — IDs are not guessable. Pass detail_level: "long" to include comments, audits, tasks, and time_tracks in one call. |
| swsd_create_problemA | Create a new SWSD problem (ITIL problem record). Required: |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| swsd-incident-list-ui | Incident list view rendered by Apps-capable hosts. |
| swsd-incident-detail-ui | Incident detail view rendered by Apps-capable hosts. |
| swsd-comment-thread-ui | Comment thread view rendered by Apps-capable hosts. |
| swsd-catalog-item-form-ui | Catalog item form rendered by Apps-capable hosts. |
| swsd-solution-detail-ui | Solution detail view rendered by Apps-capable hosts. |
| swsd-custom-fields-ui | Custom fields explorer rendered by Apps-capable hosts. |
| swsd-audit-timeline-ui | Audit timeline view rendered by Apps-capable hosts. |
Latest Blog Posts
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/mikimatsub/swsd-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server