MCP Extension

Claude Code Extension

Manage your Linux servers directly from Claude using natural language. Ask Claude to check system status, manage packages, configure services, transfer files, and more. Across one server or an entire fleet.

Overview

The ManageLM Claude Code extension connects Claude to your infrastructure through the MCP (Model Context Protocol). Once connected, Claude can manage your servers using natural language: no scripts, no SSH, no context switching.

You describe what you need in plain English. Claude selects the right skill, sends the instruction to the agent running on your server, and returns the result. All within the conversation.

Features

Natural Language

Describe tasks in plain English. Claude picks the right skill, agent, and parameters automatically.

31 Skills

Packages, services, users, network, security, files, Docker, databases, certificates, VPN, Kubernetes, and more.

Multi-Server

Target a single server, a group, or broadcast to all agents. Claude handles multi-server responses.

File Transfers

Upload and download files (text and binary) between your local machine and remote servers through Claude.

Security Audits

Run security audits, search findings across your fleet, and remediate issues, all conversationally.

Task History & Revert

Review what changed, inspect file diffs, and revert any task that modified server configuration.

Architecture

Claude Code ── MCP ──> ManageLM Portal ── WebSocket ──> Agent on Server (cloud control (outbound only, (local LLM, plane) no inbound ports) skill execution)

Claude communicates with the ManageLM portal via MCP. The portal dispatches tasks to agents over WebSocket. Agents execute tasks using a local LLM and report results back. No SSH, no inbound ports on your servers.

Installation

From the marketplace

terminal
claude plugin marketplace add managelm/claude-extension
claude plugin install managelm@managelm

Manual MCP configuration

Add the server from the terminal with claude mcp add --transport http managelm https://app.managelm.com/mcp, or in a project .mcp.json:

.mcp.json
{
  "mcpServers": {
    "managelm": {
      "type": "http",
      "url": "https://app.managelm.com/mcp"
    }
  }
}

Self-hosted users: Replace app.managelm.com with your own portal URL. With the plugin installed, set MANAGELM_MCP_URL instead (for example export MANAGELM_MCP_URL=https://portal.example.com/mcp) before starting Claude Code: the plugin uses it in place of the SaaS endpoint.

Local testing

terminal
claude --plugin-dir ./path/to/managelm-claude

Authentication

ManageLM uses OAuth 2.0 with PKCE. On first connection, Claude opens your browser to authorize access.

  1. Create a ManageLM account if you don't have one

  2. Go to Settings > MCP Credentials in the portal and enable them

  3. When Claude connects for the first time, a browser window opens for authorization

  4. Approve access: tokens are managed automatically from here

Access tokens expire after 30 minutes and are refreshed automatically. You should never need to re-authenticate manually.

Legacy auth: Header-based authentication (X-MCP-Id / X-MCP-Secret) is also supported for programmatic use, but OAuth with PKCE is recommended.

Skill-Based Tools

Each skill accepts a target (hostname, group, or "all") and a free-text instruction describing what you want done. Claude selects the appropriate skill automatically based on your request.

Core skills

SkillDescription
baseCore read-only utilities: read files, search content, check system info, monitor resources, network diagnostics
systemSystem administration: OS info, performance tuning, hostname, timezone, kernel parameters, reboot
packagesPackage management: install, remove, update, search across apt/dnf/yum/pacman/zypper/apk
servicesService and process management: systemd units, cron jobs, logs, process control
usersUser and access management: accounts, groups, SSH keys, sudo, password policies
networkNetwork management: interfaces, routes, DNS, ports, connectivity testing, traffic analysis
securitySecurity hardening: audits, fail2ban, SSH hardening, SELinux/AppArmor, SSL/TLS, auth logs
filesFile management: read, write, upload, download files (text and binary)

Extended skills

Additional skills can be imported from the built-in catalog using the available_skills tool:

SkillDescription
firewallFirewall management: iptables, nftables, firewalld, ufw
dockerDocker and Podman: containers, images, compose, volumes, networks
apacheApache HTTP Server: virtual hosts, modules, SSL, configuration
nginxNginx: server blocks, reverse proxy, SSL, load balancing
mysqlMySQL/MariaDB: databases, users, queries, backups, replication
postgresqlPostgreSQL: databases, roles, queries, backups, extensions
backupBackup management: create, schedule, restore, verify backups
certificatesSSL/TLS certificates: Let's Encrypt, self-signed, inspection, renewal
gitGit operations: clone, pull, status, log on remote servers
dnsDNS server management: zones, records, BIND, systemd-resolved
vpnVPN management: WireGuard, OpenVPN configuration
kubernetesKubernetes: pods, deployments, services, logs, kubectl operations

Tip: Ask Claude "What skills are available for web-prod-01?" and it will use get_agent_skills to show you exactly what's assigned and what can be imported.

Discovery & Management Tools

These 32 built-in tools let Claude explore your infrastructure, run scans, check task status and manage operations. Some only appear when they apply: the monitor, certificate, backup, credential and keystore searches follow the optional features enabled on your account, and the hosting tools appear once a hosting connector exists.

ToolDescription
search_agentsList servers (status, OS, health, groups, site) or filter by CPU/memory/disk usage, OS, status, group or site
get_agent_infoDetailed info for a single server: health, skills, recent tasks
get_agent_skillsSee assigned and available skills for a server
list_available_skillsDiscover skills not yet imported into your account
get_account_infoCheck account plan, usage limits, current consumption, groups and sites
list_team_membersTeam members with roles, permissions and registered SSH public keys
search_inventorySearch installed packages, running services and containers across all servers
search_securitySearch audit findings, pentest findings and threat alerts across all servers, with a time range
search_activitySearch logins, failed logins, sudo commands and file changes, with a time range
search_ssh_keysSearch SSH keys on servers and in team profiles, with identity mapping
search_sudo_rulesSearch sudo and Windows administrator privileges
search_certificatesSearch x509 certificates discovered on your servers (expiring, weak, self-signed, unmanaged)
search_pkiSearch the certificates ManageLM issues and renews
search_monitorsSearch monitors and their current status
search_backupsSearch backups and their last run
search_credentialsSearch rotating credentials: what rotated, what is due, what failed (metadata only)
search_keystoreSearch keystore keys, the applications using them, usage and refusals (metadata only)
list_connectorsList hosting connectors with sync status
search_cloudSearch VMs, volumes, networks and security groups across hosting providers
get_cloud_infoDetailed info for one hosting resource, including the actions it allows
cloud_actionStart, stop, reboot or snapshot a VM (disruptive actions ask for confirmation)
run_security_auditRun a security audit and return the findings
run_inventory_scanRun an inventory scan and return the components found
run_access_scanRun an SSH and sudo access scan
run_certificate_scanRun a certificate discovery scan
run_activity_scanRun an activity scan over the last 24 hours
get_task_statusCheck status of a running or completed task
get_task_historyReview recent tasks for a server
get_task_changesView file changes made by a task
answer_taskAnswer a question from an interactive task
revert_taskRevert file changes from a previous task

Targeting

Every skill-based tool accepts a target parameter that determines which server(s) to run the task on:

TargetBehaviorExample
HostnameRun on a single serverweb-prod-01
Group nameRun on all servers in the groupproduction
"all"Broadcast to every server you have access toall

Claude automatically resolves targets. If you say "Check disk usage on all production servers", Claude uses the group name production as the target.

Slash Skills

The extension includes two user-invocable skills you can trigger directly:

/managelm:setup

Walk through connecting Claude to your ManageLM portal. Guides you through configuring the MCP endpoint, authenticating, and verifying the connection.

/managelm:troubleshoot

Diagnose connection issues, task failures, and agent problems. Works through connection checks, agent status, task errors, and tool availability in order.

Example Usage

Just describe what you need in natural language. Claude handles skill selection, targeting, and execution:

claude
# System info
> Check disk usage on web-prod-01
> Which servers have CPU usage above 80%?
> Show me the last 50 lines of /var/log/syslog on monitoring-1

# Package management
> Install nginx on all servers in the staging group
> What packages are installed on web-prod-01 that match "python"?
> Update all packages on db-primary

# File operations
> Upload my local config.yml to /etc/myapp/config.yml on db-primary
> Show me the contents of /etc/nginx/nginx.conf on lb-01

# Security
> Run a security audit on all production servers
> Search for any security findings related to SSH across all servers
> Harden SSH configuration on web-prod-01

# Services
> Restart nginx on lb-01
> Show me all failed systemd units on db-primary

# Infrastructure discovery
> List all my servers and their status
> Which servers are running Docker?
> Search for any server with PostgreSQL installed

Security

Requirements

Troubleshooting

401 Unauthorized

The sign-in did not complete, or the token was revoked (for example after you reset your MCP credentials in Settings > MCP & API). Run /mcp, select the ManageLM server (listed as plugin:managelm:managelm when it comes from the plugin) and authenticate again.

Connection refused or timeout

Verify the portal URL in your MCP configuration is correct and reachable. The endpoint should be https://your-portal.com/mcp.

No agents listed

Either no agents are enrolled, or your account role restricts agent visibility. Check the portal dashboard to verify agents are enrolled and your user has access.

OAuth flow not starting

Ensure the MCP server is configured with "type": "http" (not "stdio"). Plugins need Claude Code 2.0.12 or later.

Skill not available on agent

Use get_agent_skills to see what's assigned. Skills must be assigned to agents by an admin in the portal. Use list_available_skills to discover importable skills from the catalog.

Task timeout

Regular tasks have a default timeout (configurable in portal settings). File transfers have a 300-second timeout. For large operations, break the task into smaller steps.

Tools not appearing in Claude

The MCP connection may not be established. Check the MCP status in Claude Code. Try /managelm:troubleshoot for guided diagnostics, or run /reload-plugins to refresh.