Termix MCP
Termix MCP lets Claude inspect and manage a Termix server through its API, with confirmations and secret redaction.
Check Termix health and whether the API key works.
List, read, add, update, and delete hosts; bulk-add multiple hosts.
List or read stored credentials with secrets hidden (read-only).
Manage roles: list roles, members, user roles, users, host access, and folder access; create/update roles; assign users; share hosts/folders; update access; delete roles, unassign users, revoke shares, and delete folder rules.
Call any other Termix API route via method, path, body, and query.
Safety: reads run immediately; add/change actions require confirm=true; deletes require confirm and an exact confirm_phrase; passwords/keys are hidden; credential/login/key creation and password/key routes are blocked.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Termix MCPCheck Termix health and list my hosts."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Termix MCP
A small tool that lets Claude read and change a Termix server through its API.
It runs on your own computer. Your API key stays on your computer.
What Claude can do with it
Check that Termix is up and the key works (termix_health).
List, read, add, change, and delete hosts (termix_hosts).
Add many hosts at once (termix_add_many_hosts).
List stored credentials, with secrets hidden (termix_credentials).
Manage roles: make roles, put users in them, share hosts or folders with a role (termix_roles).
Call any other Termix API route (termix_call).
Related MCP server: drumfire-proxmox-mcp
Safety
Read calls run right away.
Add and change calls do not run until Claude asks you and sets
confirm.Delete calls also need the exact phrase typed back, like
DELETE /host/db/host/3.Passwords and keys are hidden in everything Claude sees.
Creating credentials, logins, and key making are blocked. Do those in the Termix web page yourself.
The API key is never printed. It is removed from error messages.
Set up
1. Make an API key
Open Termix.
Look in your user profile or admin settings for API keys. Menu names can differ a little by version.
Best: make a separate key just for Claude, so you can delete it on its own later.
Do not paste the key in a chat. Put it only in the config file below. If it ever lands in a chat, delete that key and make a new one.
2. Add the tool to Claude
Open the Claude desktop app settings and find the MCP servers config file.
Add the block from claude_desktop_config.example.json. Change the key.
TERMIX_URL: your server, likehttp://192.168.1.142:8081TERMIX_API_KEY: your keyTERMIX_VERIFY_TLS: set tofalseonly for a self-signed https address
That file now holds a secret. Do not share it. Do not put it on GitHub.
If you do not have uvx, use Python instead:
pip install git+https://github.com/drmogie/termix-mcpThen use "command": "termix-mcp" and no args.
Restart the Claude desktop app.
3. Try it
Ask Claude: "Check Termix." Then: "List my Termix hosts."
Host field names
The Termix docs do not list the host fields. To see the exact names for your version:
Add one host by hand in the Termix web page.
Ask Claude to list hosts.
Claude copies those field names when adding more.
Tests
pip install mcp
python -m unittest discover testsThe tests use a fake Termix server. They do not touch your real one.
Docs
Termix API: https://docs.termix.site/api/
Available Tools
6 toolstermix_add_many_hostsA
Add several hosts in one go. Each item is the same data you would give to termix_hosts add. Needs confirm=true. Reports each result on its own, so one bad row does not stop the rest.
| Name | Required | Description | Default |
|---|---|---|---|
| hosts | Yes | ||
| confirm | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and discloses two important traits: a required confirm=true flag and per-item result reporting so one failed row does not abort the batch. It does not cover auth requirements, rate limits, or idempotency, but it handles the key mutation and partial-failure semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four compact sentences and front-loads the core purpose. Every sentence adds relevant information: batch semantics, item format reference, confirmation requirement, and error handling.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema, return values need not be explained. The description covers the mutation confirmation and partial-failure behavior, but because the input schema provides no field descriptions and the description defers host object details to a sibling command, it is slightly incomplete for an agent unfamiliar with termix_hosts add.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds useful meaning for both parameters by requiring confirm=true and by saying each hosts item matches the data passed to termix_hosts add, but it does not document the actual host object fields, leaving a gap at 0% coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: adding several hosts in one batch. It also distinguishes itself from the sibling tool termix_hosts add by explaining that each item uses the same data shape as the single-add command.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context for when to use this tool: when adding several hosts at once, with the item format matching termix_hosts add. It also states the confirm=true prerequisite, though it does not explicitly say when not to use it or name alternatives for single-host additions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
termix_callA
Call any other Termix API route. Docs: https://docs.termix.site/api/
method: GET, POST, PUT, PATCH, or DELETE path: like /host/db/host or /health GET runs right away. POST, PUT, PATCH need confirm=true. DELETE needs confirm=true and confirm_phrase="DELETE ". Password and key routes are blocked. Secrets in answers are hidden.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | ||
| path | Yes | ||
| query | No | ||
| method | Yes | ||
| confirm | No | ||
| confirm_phrase | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses confirmation gating per method, blocked route families (password/key), and that secrets are masked in responses. It omits auth expectations, rate limits, and error behavior, but proactively surfaces the destructive-safety constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the purpose in one line, then presents constraints as a tight, scannable list where every line carries distinct information. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation; the description covers the salient behavioral constraints for a mutation-capable passthrough. Auth/permission context is the main missing piece for a tool that can hit arbitrary routes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it does for the two required and two confirmation params: it enumerates valid method values, gives path format examples, and specifies confirm/confirm_phrase requirements including the exact phrase format. Body and query are left undocumented but are largely self-evident.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Call any other Termix API route,' which frames it clearly as the generic passthrough/escape hatch. The 'any other' phrasing implicitly distinguishes it from the specific sibling tools (termix_hosts, termix_health, etc.), though it never names them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete operational rules: GET runs immediately, POST/PUT/PATCH require confirm=true, DELETE requires confirm=true plus confirm_phrase, and password/key routes are blocked. It does not, however, tell the agent when to prefer this catch-all over the more specific sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
termix_credentialsA
List or read stored credentials. Read-only. Secrets are hidden.
action: list | get Use the credential id inside a host's data to link a host to a credential.
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | list | |
| credential_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full disclosure burden and does deliver the key traits: 'Read-only' (no mutation risk) and 'Secrets are hidden' (output is redacted). It does not cover permissions, error behavior when credential_id is omitted, or pagination, which keeps it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very short and front-loaded: purpose, safety, then the action modes and the id hint. The bare 'action: list | get' line is terse but functional; no sentence is wasted, though the formatting is slightly fragmentary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and the read-only/redaction note covers safety. Still, with 0% schema coverage and no annotations, the description leaves the get-vs-list parameter contract and the credential_id requirement under-specified for a two-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the schema has no enum for 'action', so the description's 'action: list | get' is genuinely additive. However, credential_id is only obliquely explained ('Use the credential id inside a host's data'), which describes where to find an id rather than what the parameter does in get mode.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb pair ('List or read') and resource ('stored credentials'), so an agent immediately knows the domain. It is distinguishable from siblings like termix_hosts and termix_health by resource, but never explicitly contrasts itself with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'action: list | get' implies the two operating modes, and the note about the credential id hints at a workflow, but there is no explicit when-to-use guidance, no statement of when 'get' is required over 'list', and no alternatives named. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
termix_healthA
Check that the Termix server is up and the API key works.
Calls the health check, then lists hosts to test the key.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. It usefully discloses the internal sequence (health check, then host listing to validate the key), which explains a side effect an agent wouldn't otherwise expect. It does not state the operation is read-only, what failures look like, or any rate/auth constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the outcome ('server is up, API key works') followed by the mechanism. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. The description covers purpose and mechanism adequately for a zero-argument probe. Minor gap: no explicit statement that it is safe/read-only, which would help given the absent annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no parameter semantics to document; baseline 4 applies. The description correctly avoids inventing arguments.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: verifying the Termix server is reachable and the API key is valid. The two-step mechanism (health check then host listing) clarifies intent well. It stops short of naming siblings like termix_hosts, which also lists hosts, so differentiation is inferred rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrasing implies a diagnostic/connectivity-check use case, which is reasonable guidance. However, it never states when to prefer this over siblings such as termix_call or termix_hosts, nor when not to call it (e.g., not as a substitute for listing hosts).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
termix_hostsA
List, read, add, change, or delete Termix hosts.
action: list | get | add | update | delete host_id: needed for get, update, delete data: the host fields for add and update (see the README for the field names; run action=list once to see the exact fields your Termix version uses) add and update need confirm=true. delete also needs confirm_phrase="DELETE /host/db/host/". Passwords and keys are hidden in all output. Enter those in the Termix web page.
| Name | Required | Description | Default |
|---|---|---|---|
| data | No | ||
| action | No | list | |
| confirm | No | ||
| host_id | No | ||
| confirm_phrase | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses that delete requires a typed confirm phrase of the form "DELETE /host/db/host/<id>", that add/update require confirm=true, and that passwords/keys are redacted from all output and must be set via the web UI. It stops short of stating permission requirements or what a partial update does to unlisted fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Content is front-loaded (purpose first, then action list, then parameter requirements, then the secret caveat) and each block earns its place. The layout is a bit list-heavy for prose but is well organized and free of filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the description covers the destructive-confirmation protocol and secret redaction that an agent must know before calling. The remaining shortfall is that `data` field names are external, forcing an extra discovery call or README lookup before add/update can be used correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the schema provides no title-level detail worth crediting; the description compensates by enumerating action semantics, per-action host_id use, the confirm flag, and the exact confirm_phrase format. The `data` object's field names remain undocumented (deferred to the README or a discovery action=list call), which is the one meaningful gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb set (list/read/add/change/delete) and a concrete resource (Termix hosts), so the tool's scope is unambiguous. It does not, however, explicitly distinguish itself from the sibling termix_add_many_hosts (bulk add) or termix_call, leaving that differentiation to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It maps each action to its prerequisites (host_id for get/update/delete, data for add/update, confirm=true for writes, an exact confirm_phrase for delete). That is clear operational guidance, but it never names alternatives such as termix_add_many_hosts for bulk creation or termix_credentials for secret handling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
termix_rolesA
Manage Termix roles, who is in them, and which hosts they can reach.
Read actions (run right away): list all roles members users in a role (needs role_id) user_roles roles of one user (needs user_id) users all users, to find a user_id host_access who a host is shared with (needs host_id) folder_access standing share rules for a folder (needs folder) Change actions (need confirm=true, so ask the user first): create needs name (lowercase, digits, _ or -) and display_name update needs role_id, and display_name and/or description assign needs role_id and user_id share_host needs host_id, and role_ids and/or user_ids share_folder needs folder, and role_ids and/or user_ids (also covers hosts added to that folder later) update_access needs host_id, access_id, permission_level and/or duration_hours Destructive actions (need confirm=true and confirm_phrase="METHOD /path"): delete delete a role (needs role_id) unassign take a role off a user (needs role_id and user_id) revoke_access remove a host share (needs host_id and access_id) delete_folder_rule remove a folder share rule (needs access_id) Sharing uses the host's saved credential. No passwords pass through here.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| action | No | list | |
| folder | No | ||
| confirm | No | ||
| host_id | No | ||
| role_id | No | ||
| user_id | No | ||
| role_ids | No | ||
| user_ids | No | ||
| access_id | No | ||
| description | No | ||
| display_name | No | ||
| confirm_phrase | No | ||
| duration_hours | No | ||
| permission_level | No | connect |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it discloses the confirmation gate, the confirm_phrase format, that sharing uses the host's saved credential, and that no passwords pass through. It stops short of saying what delete or unassign actually destroys (e.g. whether existing assignments or downstream shares are cascaded) or whether operations are reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded purpose sentence followed by risk-tiered headings and an aligned action-to-parameters list. For a 15-parameter, 14-action tool the length is justified and no line is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the description covers action routing, safety gating, and per-action inputs. Remaining gaps are the permission_level vocabulary and the effects of destructive actions on related role/folder state.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% across 15 parameters, so the description must compensate, and it largely does by mapping required parameters to each of the 14 actions and constraining name to lowercase letters, digits, underscore or hyphen. Gaps remain: permission_level values are not enumerated despite having no schema enum, duration_hours semantics are unstated, and the exact path string expected in confirm_phrase per action is not given.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource plus its scope: managing roles, their membership, and host reachability. That scope cleanly separates it from siblings such as termix_hosts and termix_credentials, which handle hosts and secrets rather than role-based access.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly partitions actions into three tiers with different invocation conditions: reads run immediately, changes require confirm=true after asking the user, destructive calls require confirm=true plus a formatted confirm_phrase. Each action also lists its prerequisite parameters, so the agent knows exactly which inputs gate which action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v0.1.1- Added
termix_roles
5 tool updates
v0.1.0- First observed
termix_add_many_hosts - First observed
termix_call - First observed
termix_credentials - First observed
termix_health - First observed
termix_hosts
TDQS
Scored across 6 tools
Most tools have distinct resource focus, but termix_add_many_hosts overlaps with termix_hosts add, and termix_call can duplicate nearly any other tool. termix_health also overlaps with termix_call GET /health and host listing, though descriptions provide some guidance.
All names use the same termix_ prefix and snake_case, which is predictable. The suffix style is not strictly verb_noun—resources are mostly nouns with actions as parameters—but it remains readable and consistent.
Six tools is well within a reasonable range and covers the domain without excessive fragmentation. The generic escape hatch and batch-add tool each serve a clear purpose.
Core host CRUD, batch host creation, role/access management, credential reads, and health checks are covered. Minor gaps exist—credential writes are intentionally omitted and some operations rely on the generic call tool—but agents have workarounds.
Maintenance
Related MCP Connectors
Termalin's hosted MCP server. Claude, ChatGPT or any MCP client runs commands, moves files over SFTP, queries databases and reads server metrics and monitoring alerts on your servers, keylessly through Termalin Connectors: no SSH key is handed over and no inbound port is opened. Per-host command policy and an audit log. Needs a termal.in Pro or Team account (new accounts start with a 14-day Pro trial).
Work on your own computers from Claude or ChatGPT: run commands, edit and search files.
Manage hosts, redirects, SSL, and traffic analytics from Claude and other AI assistants.
Operate Linux, macOS and Windows from your LLM. Every action runs through an auditable allowlist.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceEnables Claude to execute commands on remote servers via SSH, with support for SSH config, private keys, password auth, and agent forwarding.94 npmISC
- AlicenseNot gradedqualityCmaintenanceEnables Claude to manage a Proxmox cluster through chat: inventory, power control, configuration changes, VM/container creation and cloning, snapshots, network/firewall/cluster visibility, guest command execution, and file writes via the QEMU Guest Agent.14 npmMIT
- AlicenseAqualityBmaintenanceEnables Claude to read and modify an Nginx Proxy Manager instance through its API, covering proxy, redirection, and 404 hosts, streams, certificates, access lists, audit logs, and any other API endpoint. Changes are merged into existing objects and guarded by read, change, and destructive safety levels that require user confirmation before anything is altered.4MIT
- AlicenseAqualityAmaintenanceEnables Claude to inspect and configure PiKVM devices through the web API and SSH, including power control, screenshots, keyboard input, virtual drives, health checks, configuration, and services, with safeguards that require confirmation for changes.15MIT