
SuperOps
io.github.wyre-technologyPublished by GitHub account wyre-technologyv1.6.6Updated Oct 24, 2026
MCP server for SuperOps unified PSA+RMM — clients, tickets, assets, and more.
Overview
Lets an assistant read and change SuperOps PSA/RMM data — clients, tickets, assets, and technicians — through the SuperOps GraphQL API.
- What you can do
- Connects Claude to the SuperOps.ai PSA/RMM platform via its GraphQL API. Domain tools cover clients (list, get, search), tickets (list, get, create, update, add note, log time), assets (list, get, software inventory, patch status), and technicians (list, get, groups), plus navigation and a connection test. Generic custom query and custom mutation tools run arbitrary GraphQL. Ticket results can render as an interactive card in MCP Apps hosts, with an in-card add-note action that always posts internal-only notes.
- When to use it
- Useful for managed service providers and IT teams that keep clients, tickets, endpoints, and technicians in SuperOps and want an assistant to look up or update that data conversationally. Worth adding when ticket triage, asset or patch lookups, or time logging should happen without opening the SuperOps console.
- Requirements
- Runs locally over stdio (an OCI image is published; the README also shows an npm install). Needs SUPEROPS_API_TOKEN, generated in the SuperOps admin console, and SUPEROPS_SUBDOMAIN; SUPEROPS_REGION selects the data center. AUTH_MODE, LOG_LEVEL, and MCP_TRANSPORT are optional. Installing the package from GitHub Packages requires a GitHub personal access token with read:packages scope, supplied as NODE_AUTH_TOKEN or GITHUB_TOKEN.
Installation
In SourceWeft
- Open SuperOps in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
SuperOps.ai MCP Server
MCP server for Claude that provides tools to interact with the SuperOps.ai PSA/RMM platform using their GraphQL API.
One-Click Deployment
[Deploy to Cloudflare Workers]
Operator note — GitHub Packages authentication. This package is published to the
@wyre-aiscope on GitHub Packages, which requires an authentication token on every install (GitHub Packages has no anonymous reads, even for public packages). Create a GitHub Personal Access Token with theread:packagesscope and supply it to the cloud builder:
- Cloudflare Workers — set a build variable named
NODE_AUTH_TOKENto your PAT.- DigitalOcean App Platform — set a build-time secret named
GITHUB_TOKENto your PAT.For local installs, run
export NODE_AUTH_TOKEN=$(gh auth token)beforenpm install.
Features
- Decision Tree Architecture: Navigate to domains (clients, tickets, assets, technicians) to see relevant tools
- Lazy Loading: Domain modules load on-demand for faster startup
- Full CRUD Operations: List, get, create, and update entities
- GraphQL Support: Use custom queries for advanced operations
- Interactive Ticket Card (MCP Apps): ticket results render as an interactive card in MCP Apps hosts — neutral by default, brandable via
window.__BRAND__injection orMCP_BRAND_*env vars
Interactive Ticket Card (MCP Apps)
superops_tickets_get renders as an interactive card in MCP Apps hosts
(Claude Desktop/web) with an in-card "Add note" round-trip via
superops_tickets_add_note that always posts internal-only notes
(isPublic: false); plain-JSON behavior is unchanged in other hosts.
The card is neutral by default and brandable via window.__BRAND__ injection
or MCP_BRAND_* env vars (MCP_BRAND_NAME, MCP_BRAND_LOGO_URL,
MCP_BRAND_PRIMARY_COLOR, MCP_BRAND_ACCENT_COLOR, MCP_BRAND_BG,
MCP_BRAND_TEXT) — no rebuild needed.
Installation
Configuration
Copy .env.example and set the variables below. Leave CONDUIT_S2S_SECRET empty in that example; generate a real value with openssl rand -hex 32 and do not commit it.
/health stays unauthenticated and does not read credentials. The stdio transport does not use CONDUIT_S2S_SECRET.
HTTP authentication
With MCP_TRANSPORT=http, every /mcp request must include X-Gateway-S2S once CONDUIT_S2S_SECRET is set. The header value is t=<unix seconds>,v1=<hex>, where the hex is HMAC-SHA256 of the literal string t=<unix seconds> keyed with CONDUIT_S2S_SECRET (64 lowercase hex characters). The timestamp must be within 300 seconds of the server clock. A missing or invalid header is HTTP 401, before vendor credentials are read.
In AUTH_MODE=gateway, add X-SuperOps-API-Token and X-SuperOps-Subdomain as well. Missing credential headers are HTTP 401 and do not fall back to SUPEROPS_* in the environment. With AUTH_MODE=env, the signed request uses those variables from the process environment.
Standalone local use that cannot sign requests:
Startup logs a warning, skips the S2S check, and binds 127.0.0.1 only. Do not publish that port off loopback.
Getting Your API Token
- Log in to SuperOps.ai
- Click settings icon > "My Profile"
- Navigate to "API token" tab
- Click "Generate token"
- Copy and securely store the token
Usage with Claude Desktop
Add to your claude_desktop_config.json:
Available Domains & Tools
Navigation
superops_navigate- Navigate to a domainsuperops_back- Return to main menusuperops_test_connection- Test API connectivity
Clients Domain
superops_clients_list- List clients with filterssuperops_clients_get- Get client detailssuperops_clients_search- Search clients by name
Tickets Domain
superops_tickets_list- List tickets with filterssuperops_tickets_get- Get ticket detailssuperops_tickets_create- Create a new ticketsuperops_tickets_update- Update ticket status/assignmentsuperops_tickets_add_note- Add note to ticketsuperops_tickets_log_time- Log time on ticket
Assets Domain
superops_assets_list- List assets/endpointssuperops_assets_get- Get asset detailssuperops_assets_software- Get software inventorysuperops_assets_patches- Get patch status
Technicians Domain
superops_technicians_list- List technicianssuperops_technicians_get- Get technician detailssuperops_technicians_groups- List technician groups
Custom Domain
superops_custom_query- Run custom GraphQL querysuperops_custom_mutation- Run custom GraphQL mutation
Example Usage
Docker
The image listens on 0.0.0.0 inside the container (MCP_HTTP_HOST), defaults to AUTH_MODE=gateway, and refuses to start unless CONDUIT_S2S_SECRET is a real secret. Publish the port on loopback. In gateway mode, SuperOps credentials arrive on each request as headers; they are not read from the environment.
Compose refuses to start when CONDUIT_S2S_SECRET is unset, sets AUTH_MODE=gateway, publishes 127.0.0.1:8080:8080, and does not pass SUPEROPS_API_TOKEN or SUPEROPS_SUBDOMAIN into the container:
Sign /mcp the same way as in HTTP authentication. A gateway-mode call also sends the vendor headers:
Single-tenant HTTP (AUTH_MODE=env) still requires the S2S secret, then uses SUPEROPS_API_TOKEN and SUPEROPS_SUBDOMAIN. The DigitalOcean one-click template is that mode: set CONDUIT_S2S_SECRET as a runtime secret.
Rate Limits
SuperOps.ai API has a rate limit of 800 requests per minute per API token.
Pagination
SuperOps uses page-based pagination, not cursors. List tools take page
(1-indexed, default 1) and pageSize (default 50, max 100), and return a
listInfo block with page, pageSize, totalCount and hasMore.
hasMore is tri-state: true when another page exists, null — never
false — when it does not. Loop on hasMore === true, or page off
totalCount; looping until hasMore === false never terminates.
Filtering
Filters are condition clauses of { attribute, operator, value }, and they
compose — { joinOperator: "and" | "or", operands: [ … ] } nests recursively.
Operators verified against a live tenant:
equals and in are rejected by the API. includes matches a value whole
while contains matches a substring — filtering an OS platform with
includes: ["Windows"] matches nothing, because SuperOps stores
"Microsoft Windows 10 Pro".
Two things to know, because neither reports an error:
- Filtering on a value outside a field's real set returns zero rows, not an error. An empty result may mean a bad value, not an empty tenant.
- Filtering on a JSON column (
software) rather than a path into it (software.name) also returns zero rows silently.
Use superops_custom_query for filter semantics the standard tools don't
express.
Schema conformance
schema/superops.graphql is a vendored copy of the SuperOps GraphQL schema:
Prefer introspection, and note the committed schema is already the introspected
one. The published docs declare 276 types / 76 queries / 63 mutations where the
live API reports 404 / 116 / 83, omit deprecations entirely, and declare two
types that do not exist live (FieldType, TicketType) — validating against
those would pass documents the API rejects.
src/domains/graphql-schema.test.ts validates every GraphQL document in src/
against it on each npm test, so a query referencing a field SuperOps does not
define fails in CI rather than at runtime. Regenerate the schema after a
SuperOps API change and re-run the tests.
License
Apache-2.0
Support
For issues and feature requests, please visit the GitHub repository.
Source: README.md at commit 4ccfc5d
Tools
0Version history
1- v1.6.6LatestSep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts