X1pheR

nexterm-mcp

Community X1pheR
Updated

A deliberately bounded Model Context Protocol server for managing Nexterm through its supported REST API.

nexterm-mcp

A typed Model Context Protocol server for broad management of Nexterm through its supported REST API.

This community project is not affiliated with or endorsed by the Nexterm project.

Design

nexterm-mcp maps Nexterm resources and actions to explicit MCP tools instead of exposing a generic HTTP request primitive. This keeps tool inputs discoverable, validates common fields before a request is sent, provides MCP read/destructive annotations, and keeps the Nexterm API key outside model-visible arguments.

Version 0.2.0 provides 89 MCP tools and is contract-tested against Nexterm v1.2.2-BETA routes. The original 0.1.0 entry/folder/identity tool names remain available.

The adapter intentionally does not mirror every Nexterm endpoint. Endpoints that require plaintext credential material, return newly generated credentials, mutate authentication/authorization, or represent interactive transports are excluded rather than weakened into an unsafe generic tool.

Coverage

Area Coverage Notes
Service/account status Supported nexterm_status verifies API-key authentication through /api/accounts/me and reads the service version.
Entries Broad List, recent, get, create, update, delete, duplicate, typed SSH import, reposition and Wake-on-LAN.
Folders Full resource CRUD List, create, update/move and delete.
Identities Metadata read only Credential-bearing identity create/update/delete/move is intentionally excluded.
Tags Full List, CRUD, assign/unassign and per-entry tag discovery.
Organizations Resource/settings + read List/get/CRUD, member reads, member-permission reads and session settings. Membership and permission mutations are excluded.
Scripts Broad List/search, all/source discovery, get, CRUD and reposition. Script content is model-visible.
Snippets Broad List/source discovery, get, CRUD and reposition. Command content is model-visible.
Themes Full resource management List/get/CSS, CRUD and active-theme selection.
Sources Full List/get/validate/CRUD and synchronization actions.
Monitoring Full Overview, global settings and server/integration history for Nexterm's 1h, 6h and 24h ranges.
Audit Broad Log query, metadata and organization audit settings. Binary recording download is excluded.
Backup Broad safe subset File listing/deletion, settings, storage, provider deletion, backup listing/create/restore. Provider create/update is excluded because it accepts plaintext passwords.
Proxmox integrations Safe subset Read, delete, sync and entry start/stop/shutdown. Create/update is excluded because Nexterm requires a plaintext password.
Engines Metadata read only Token-generating create/regenerate operations are intentionally excluded.

Explicit exclusions

The following Nexterm API areas are not exposed as normal MCP tools in 0.2.0:

  • generic/raw HTTP or arbitrary Nexterm API requests;
  • Nexterm API-key management;
  • account password, TOTP, passkey and authentication-provider management;
  • user and permission administration;
  • organization invitations, member removal, permission mutation, invitation response and leave actions;
  • identity credential create/update/delete/move;
  • Proxmox integration create/update because the API requires a plaintext password;
  • backup-provider create/update because the API may require a plaintext password;
  • engine registration/token generation or token regeneration;
  • audit recording binary download;
  • interactive terminal, connection, SFTP, WebSocket, share and session transports;
  • Nexterm AI operations.

These are security or protocol boundaries, not missing raw escape hatches. A future credential-mutating tool should use a non-model-visible delivery mechanism such as private local files rather than accepting passwords or private keys as MCP arguments.

Security defaults

  • The API key is read from a private local file and never accepted as a tool argument.
  • API-key files must be regular non-symlink files with no group or other permissions.
  • Common credential-shaped response fields are removed recursively before MCP output is returned.
  • HTTP error bodies are not echoed into MCP errors.
  • All mutation tools fail closed unless NEXTERM_MUTATIONS_ENABLED=true.
  • Delete, restore, stop and shutdown operations that can cause irreversible or disruptive effects are marked destructive in MCP annotations.
  • There is no raw request tool.

See SECURITY.md for the full security model.

Requirements

  • Python 3.12+
  • Nexterm with API-key support (v1.2.2-BETA or a compatible newer release)
  • An MCP client that supports stdio servers

Configuration

Variable Required Default Meaning
NEXTERM_BASE_URL yes - Nexterm base URL, for example https://nexterm.example.com.
NEXTERM_API_KEY_FILE yes - Absolute path to a private mode-0600 file containing the Nexterm API key.
NEXTERM_TIMEOUT_SECONDS no 15 HTTP timeout, maximum 120 seconds.
NEXTERM_MUTATIONS_ENABLED no false Enables all non-read-only tools when set to true.

Example MCP registration:

{
  "mcpServers": {
    "nexterm": {
      "command": "nexterm-mcp",
      "env": {
        "NEXTERM_BASE_URL": "https://nexterm.example.com",
        "NEXTERM_API_KEY_FILE": "/run/secrets/nexterm-api-key",
        "NEXTERM_MUTATIONS_ENABLED": "false"
      }
    }
  }
}

Use an MCP gateway or client-side allowlist when a consumer only needs a subset of the 89 tools. In particular, keep mutations and administrative reads away from consumers that only need entry discovery.

Entry model

Entry create/update supports the currently validated Nexterm v1.2.2-BETA connection fields rather than an arbitrary config object:

  • name, entry_type, renderer, icon;
  • protocol: ssh, telnet, rdp, vnc, sftp, ftp, ftps, demo;
  • ip, port, keyboard_layout;
  • monitoring_enabled;
  • node_name, vmid;
  • rdp_security;
  • jump_host_ids;
  • mac_address, wake_on_lan_enabled, wol_broadcast_address;
  • identity_ids, folder_id, organization_id.

Partial entry updates first read the current entry and merge changed connection fields into the existing Nexterm config object. This preserves fields that a compatible Nexterm release may already store but that the caller did not ask to change.

Compatibility

The API contract currently follows Nexterm v1.2.2-BETA. Nexterm is still evolving, so a newer release may add or change routes or validation fields. nexterm_status reports the server version returned by Nexterm, while tests pin the adapter's known route contract.

The adapter deliberately relies on Nexterm's own authorization checks. A Nexterm API key acts with the permissions of its linked Nexterm account; the MCP server does not invent a second authorization model.

Development

python -m venv .venv
. .venv/bin/activate
pip install -e '.[test]'
pytest

Build a wheel with:

python -m pip wheel --no-deps --wheel-dir dist .

License

MIT

MCP Server ยท Populars

MCP Server ยท New

    mixelpixx

    Konnect *BETA Release

    AI-assisted PCB design for KiCAD 10. Native KiCAD plugin โ€” a single Rust binary exposing 171 schematic, layout, routing, design-review, and manufacturing tools to Claude, or the LLM of your choosing

    Community mixelpixx
    mixelpixx

    Nimrod

    Web research for Claude over MCP: quality-scored Google search, clean extraction, deep research. Hosted connector for claude.ai/Desktop/Code + Nimrod Desktop toolkit (skills, agent, hooks).

    Community mixelpixx
    Minima-AI-Inc

    minima

    On-premises conversational RAG with configurable containers

    Community Minima-AI-Inc
    Minima-AI-Inc

    minima MCP server

    On-premises conversational RAG with configurable containers

    Community Minima-AI-Inc
    eas4ai

    Code Graph MCP Server

    MCP Server for code intelligence

    Community eas4ai