@avantguardllc/halopsa-mcp
v1.1.3
Published
HaloPSA MCP server with decision tree architecture for Claude
Maintainers
Readme
HaloPSA MCP Server
A Model Context Protocol (MCP) server for interacting with HaloPSA, featuring a decision tree architecture for efficient tool loading.
Architecture
This MCP server uses a hierarchical tool loading approach instead of exposing all tools upfront:
- Navigation Phase: Initially exposes only a navigation tool (
halopsa_navigate) - Domain Selection: User selects a domain (tickets, clients, assets, agents, invoices, workflows, and more)
- Domain Tools: Server exposes domain-specific tools after selection
- Lazy Loading: Domain handlers and the HaloPSA client are loaded on-demand
This architecture provides:
- Reduced cognitive load (fewer tools to choose from)
- Faster initial load times
- Better organization of related operations
- Clear navigation state
Installation
npm install @avantguardllc/halopsa-mcpConfiguration
Set the following environment variables:
| Variable | Required | Description |
|----------|----------|-------------|
| HALOPSA_CLIENT_ID | Yes | OAuth 2.0 Client ID |
| HALOPSA_CLIENT_SECRET | Yes | OAuth 2.0 Client Secret |
| HALOPSA_TENANT | One of | Tenant name (e.g., yourcompany) |
| HALOPSA_BASE_URL | these | Explicit base URL (e.g., https://yourcompany.halopsa.com) |
Usage
Running Standalone
# Set credentials
export HALOPSA_CLIENT_ID="your-client-id"
export HALOPSA_CLIENT_SECRET="your-client-secret"
export HALOPSA_TENANT="yourcompany"
# Run the server
npx @avantguardllc/halopsa-mcpClaude Desktop Configuration
Add to your Claude Desktop claude_desktop_config.json:
{
"mcpServers": {
"halopsa": {
"command": "npx",
"args": ["@avantguardllc/halopsa-mcp"],
"env": {
"HALOPSA_CLIENT_ID": "your-client-id",
"HALOPSA_CLIENT_SECRET": "your-client-secret",
"HALOPSA_TENANT": "yourcompany"
}
}
}
}Docker
docker build -t halopsa-mcp .
docker run -e HALOPSA_CLIENT_ID=xxx -e HALOPSA_CLIENT_SECRET=*** -e HALOPSA_TENANT=yourcompany halopsa-mcpAvailable Domains
Tickets
Manage support tickets, create new tickets, update status, add actions/notes.
Tools:
halopsa_tickets_list- List tickets with filtershalopsa_tickets_get- Get ticket detailshalopsa_tickets_create- Create a new tickethalopsa_tickets_update- Update an existing tickethalopsa_tickets_add_action- Add a note/action to a ticket
Clients
Manage companies/clients in HaloPSA.
Tools:
halopsa_clients_list- List clientshalopsa_clients_get- Get client detailshalopsa_clients_create- Create a new clienthalopsa_clients_search- Search clients by name
Assets
Manage configuration items/assets.
Tools:
halopsa_assets_list- List assets with filtershalopsa_assets_get- Get asset detailshalopsa_assets_search- Search assetshalopsa_assets_list_types- List available asset types
Agents
View technicians and teams.
Tools:
halopsa_agents_list- List agents/technicianshalopsa_agents_get- Get agent detailshalopsa_teams_list- List teams
Invoices
View billing and invoices.
Tools:
halopsa_invoices_list- List invoices with filtershalopsa_invoices_get- Get invoice details
Workflows
Manage HaloPSA automation workflows — ticket routing, approval chains, escalations, and SLA actions.
Tools:
halopsa_workflows_list- List all workflowshalopsa_workflows_get- Get a single workflow by IDhalopsa_workflows_steps- Get all workflow stepshalopsa_workflows_create- Create a new workflowhalopsa_workflows_delete- Delete a workflow by ID
Ticket Types
Manage ticket type definitions used to categorize tickets.
Tools:
halopsa_tickettypes_list- List all ticket typeshalopsa_tickettypes_get- Get a specific ticket type by IDhalopsa_tickettypes_create- Create or update a ticket typehalopsa_tickettypes_delete- Delete a ticket type by ID
Statuses
Manage ticket status definitions.
Tools:
halopsa_statuses_list- List all statuseshalopsa_statuses_get- Get a specific status by IDhalopsa_statuses_create- Create or update a statushalopsa_statuses_delete- Delete a status by ID
Outcomes
Manage ticket outcome/resolution definitions.
Tools:
halopsa_outcomes_list- List all outcomeshalopsa_outcomes_get- Get a specific outcome by IDhalopsa_outcomes_create- Create or update an outcomehalopsa_outcomes_delete- Delete an outcome by ID
Actions
Manage ticket action templates used for notes, updates, and replies.
Tools:
halopsa_actions_list- List all action templateshalopsa_actions_get- Get a specific action template by IDhalopsa_actions_create- Create or update an action templatehalopsa_actions_delete- Delete an action template by ID
Custom Fields
Manage custom field definitions that extend entities like tickets, clients, and assets.
Tools:
halopsa_customfields_list- List all custom field definitionshalopsa_customfields_get- Get a specific custom field by IDhalopsa_customfields_create- Create or update a custom field definitionhalopsa_customfields_delete- Delete a custom field definition by ID
Custom Tables
Manage custom table definitions for structured data linked to entities.
Tools:
halopsa_customtables_list- List all custom tableshalopsa_customtables_get- Get a specific custom table by IDhalopsa_customtables_create- Create or update a custom tablehalopsa_customtables_delete- Delete a custom table by ID
Custom Tabs
Manage custom tab layouts on entity detail views.
Tools:
halopsa_customtabs_list- List all custom tabshalopsa_customtabs_get- Get a specific custom tab by IDhalopsa_customtabs_create- Create or update a custom tabhalopsa_customtabs_delete- Delete a custom tab by ID
Custom Buttons
Manage custom button definitions on entity views.
Tools:
halopsa_custombuttons_list- List all custom buttonshalopsa_custombuttons_get- Get a specific custom button by IDhalopsa_custombuttons_create- Create or update a custom buttonhalopsa_custombuttons_delete- Delete a custom button by ID
Navigation Tools
Always available:
halopsa_navigate- Select a domain to work withhalopsa_status- Show current state and credential statushalopsa_back- Return to main menu (when in a domain)
Example Workflow
User: Check my tickets
Claude: [calls halopsa_navigate with domain="tickets"]
-> Navigated to tickets domain. Available tools: ...
User: List open tickets
Claude: [calls halopsa_tickets_list with open_only=true]
-> [ticket list results]
User: Now show me clients
Claude: [calls halopsa_back]
-> Navigated back to main menu.
[calls halopsa_navigate with domain="clients"]
-> Navigated to clients domain.Rate Limiting
HaloPSA has a rate limit of 500 requests per 3-minute window. The client handles this with automatic request throttling.
License
Apache-2.0
