remote-admin-mcp
Click on "Install 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., "@remote-admin-mcpcheck the status of nginx on production"
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.
SSH MCP Server
MCP Server für SSH-basierte Server-Administration. Ermöglicht KI-Assistenten die Verwaltung von Remote-Servern via SSH.
Supported MCP Clients
graph LR
subgraph Getestet
K[Kiro CLI]
C[Claude Desktop]
end
subgraph Kompatibel
A[Alle MCP-fähigen Clients<br/>stdio + StreamableHTTP]
end
K --> MCP[SSH MCP Server]
C --> MCP
A --> MCPClient | Transport | Status |
stdio | ✅ getestet | |
stdio | ✅ getestet | |
Jeder MCP-Client | stdio / StreamableHTTP | ✅ kompatibel |
Related MCP server: cygnus-ssh-mcp
Features
Verwalte Linux-Server per SSH — direkt aus dem KI-Assistenten heraus. Keine Agents, Daemons oder Tools auf den Zielservern nötig. Nur ein SSH-Zugang reicht.
graph LR
AI[KI-Assistent] -->|MCP| S[SSH MCP Server]
S -->|SSH/SFTP| R1[Server 1]
S -->|SSH/SFTP| R2[Server 2]
S -->|SSH/SFTP| RN[Server N]Agentless: Kein Setup auf den Zielservern — funktioniert mit jedem SSH-Zugang
Remote Command Execution: Einzelbefehle oder mehrzeilige Scripts ausführen
Sudo Support: Befehle mit
sudoausführen, ohne interaktives PasswortFile Operations: Dateien lesen (teilweise/komplett), schreiben, suchen, chirurgisch editieren
File Transfer: Upload/Download via SFTP
Service Management: Systemd Services starten, stoppen, restarten, Status prüfen
Code Navigation: Funktions-/Klassen-Übersicht aus Quelldateien extrahieren (grep-basiert, kein Language Server nötig)
Multi-Server: Beliebig viele Server parallel verwalten
Connection Pooling: SSH-Verbindungen werden 5 Minuten wiederverwendet
User Approval: Schreibende Operationen erfordern Bestätigung durch den Operator
Audit Log: Alle Aktionen werden protokolliert (Pfad konfigurierbar)
Installation
Von PyPI
pip install remote-admin-mcpMit uv (empfohlen für Entwicklung)
# Virtuelle Umgebung erstellen und Abhängigkeiten installieren
uv venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
uv pip install -e ".[dev]"Mit pip
# Virtuelle Umgebung erstellen
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# Abhängigkeiten installieren
pip install -e ".[dev]"Konfiguration
Kopiere
.env.examplezu.env:
cp .env.example .envBearbeite
.envmit deinen Server-Zugangsdaten:
SSH_SERVER_1_NAME=production
SSH_SERVER_1_HOST=prod.example.com
SSH_SERVER_1_PORT=22
SSH_SERVER_1_USER=admin
SSH_SERVER_1_PASSWORD=your-password
SSH_SERVER_2_NAME=staging
SSH_SERVER_2_HOST=staging.example.com
SSH_SERVER_2_PORT=22
SSH_SERVER_2_USER=deploy
SSH_SERVER_2_PASSWORD=your-passwordMCP Tools
list_servers
Liste alle konfigurierten Server auf.
execute_command
Führe einen Befehl auf einem Remote-Server aus.
Parameter:
server(string): Server-Namecommand(string): Auszuführender Befehluse_sudo(boolean): Mit sudo ausführen
read_file
Lese eine Datei vom Remote-Server.
Parameter:
server(string): Server-Namepath(string): Dateipfad
write_file
Schreibe eine Datei auf den Remote-Server.
Parameter:
server(string): Server-Namepath(string): Dateipfadcontent(string): Dateiinhalt
get_service_status
Prüfe den Status eines systemd Services.
Parameter:
server(string): Server-Nameservice(string): Service-Name
manage_service
Verwalte einen systemd Service (start/stop/restart/reload).
Parameter:
server(string): Server-Nameservice(string): Service-Nameaction(string): Aktion (start/stop/restart/reload)
Verwendung mit KI-Assistenten
Kiro CLI / Claude Desktop (uvx — empfohlen)
Kein manuelles Installieren nötig — uvx lädt und cached das Paket automatisch:
{
"mcpServers": {
"ssh": {
"command": "uvx",
"args": ["remote-admin-mcp"],
"env": {
"SSH_SERVER_1_NAME": "production",
"SSH_SERVER_1_HOST": "prod.example.com",
"SSH_SERVER_1_USER": "admin",
"SSH_SERVER_1_KEY_FILE": "~/.ssh/id_ed25519"
}
}
}
}Alternative: Mit .env-Datei
{
"mcpServers": {
"ssh": {
"command": "uvx",
"args": ["--env-file", "/path/to/.env", "remote-admin-mcp"]
}
}
}Alternative: Lokale Installation
{
"mcpServers": {
"ssh": {
"command": "/path/to/.venv/bin/ssh_mcp_server"
}
}
}Beispiele
Log-Analyse:
"Zeige mir die letzten 100 Zeilen vom nginx error log auf production"Service Restart:
"Starte den nginx Service auf staging neu"Config ändern:
"Lies die nginx.conf auf production und erhöhe worker_processes auf 4"Sicherheit
Schreibende Tools erfordern User-Approval durch den MCP Client
Lese-Tools (
list_servers,read_file,search_in_file,get_file_structure) sind auto-approvedSSH-Key-Authentifizierung empfohlen (Passwort-Auth möglich)
.envsollte NICHT ins Git committed werden
Audit Log
Alle Aktionen werden in ein Logfile geschrieben:
[2026-04-12 13:14:00] [production] execute: tail -100 /var/log/syslog
[2026-04-12 13:14:05] [production] write_file: /etc/nginx/nginx.conf — Config updateDefault: ~/.ssh-mcp-audit.log. Konfigurierbar per Environment-Variable:
SSH_MCP_AUDIT_LOG=/var/log/ssh-mcp-audit.logEntwicklung
# Tests ausführen
pytest -v
# Linting
ruff check src/Lizenz
MIT — siehe LICENSE
Available Tools
9 toolsexecuteA
Execute a command or multi-line script on a remote server via SSH. For single commands use command, for multi-line scripts use script. Requires approval.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Human-readable explanation of what this command does and why (for audit log) | |
| script | No | Multi-line bash script (alternative to command) | |
| server | Yes | Server name | |
| command | No | Single command to execute | |
| timeout | No | Timeout in seconds (default: 30, max: 300) | |
| use_sudo | No | Use sudo |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description is responsible for disclosing behavior. It mentions SSH and that approval is required, but fails to warn about potential side effects of executing commands, permissions needed, or how output is returned. This is a significant gap for a potentially destructive tool.
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 extremely concise with two sentences, front-loading the core function and providing a key usage pointer. No wasted words.
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?
Despite the compact schema, the tool is a remote execution tool with no output schema and missing information about return values, error handling, and side effects. The description does not complete the picture for an AI agent to understand what to expect after invocation.
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 schema already covers all parameters at 100%, but the description adds valuable clarification on when to use `command` versus `script`. This goes beyond schema details and aids correct invocation.
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 clearly states the tool executes commands or scripts on a remote server via SSH, using a specific verb and resource. It distinguishes itself from sibling file and service management tools.
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 provides guidance on choosing between `command` and `script` parameters, which is useful. However, it does not explicitly mention when not to use this tool or point to alternatives like read_file or write_file for safer operations, leaving some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_file_structureA
Get an overview of functions, classes and key definitions in a source file. Returns symbol names with line numbers. Use this to understand a large file before reading or editing specific sections.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File path | |
| server | Yes | Server name | |
| language | No | Language hint (auto-detected from extension if omitted) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses the return value ('symbol names with line numbers') but does not mention limitations, error behavior, or whether it scans recursively. The description is truthful but minimal.
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 sentences: the first states the core functionality and return value, the second gives usage guidance. No filler or redundancy; every sentence earns its place.
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?
For a simple overview tool with 3 parameters and no output schema, the description covers purpose, return value, and usage context. It could mention output structure or unsupported file types, but it is largely complete for the tool's scope.
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 100%, so all parameters (path, server, language) are already documented. The description adds no additional parameter semantics beyond what the schema provides, meeting the baseline.
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 'Get an overview of functions, classes and key definitions in a source file', which is a specific verb+resource statement. It clearly distinguishes itself from siblings like read_file (whole file content) and search_in_file (text matching) by focusing on structural symbols.
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 description explicitly states when to use the tool: 'Use this to understand a large file before reading or editing specific sections.' This gives a clear context without enumerating exclusions or alternatives, but it is sufficient guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_serversA
List all configured SSH servers with their connection details. Call this first to discover available server names.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It states the operation is a listing without side effects, but does not mention any requirements, permissions, or potential errors. The description is minimally transparent but lacks depth.
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 exactly two sentences, with the first stating the action and the second providing usage direction. Every word earns its place; no fluff or redundancy.
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?
For a simple 0-parameter tool without an output schema, the description gives the core function and a direct usage hint. It could be slightly more specific about what 'connection details' includes, but the overall context is sufficiently complete for a discovery operation.
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 input schema has zero parameters, so the description has no parameter details to add. Per the rubric, a baseline of 4 applies for zero-parameter tools, and the description does not need to compensate for any schema gaps.
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 uses a specific verb ('List') and resource ('configured SSH servers'), clearly distinguishing it from sibling tools like execute or read_file. It also adds the scope ('all configured') and output intent ('connection details').
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 instruction 'Call this first to discover available server names' provides a clear when-to-use context and implies a discovery role before other operations. It stops short of naming alternatives or exclusions, but for a listing tool this is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_fileA
Read a file or specific line range from a remote server. For large files (>200 lines), always use lines+offset to read only the relevant section. Use tail=true to read from end (e.g. log files).
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File path | |
| tail | No | Read from end of file | |
| lines | No | Number of lines to read | |
| offset | No | Line offset (skip N lines from start) | |
| server | Yes | Server name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full transparency burden. It discloses the ability to read line ranges and tail behavior, but it does not mention error handling, permissions, or behavior for non-text files. It adds some context but leaves important behavioral details unspecified.
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 two sentences with no wasted words. The main purpose is front-loaded, followed by two concise usage tips. It earns every word and is easy to parse.
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?
For a tool with 5 parameters and no output schema, the description adequately covers the key contextual aspects: file size handling and tail usage. It lacks details on return format or error cases, but these are not essential for basic operation. The guidance on large files is especially valuable.
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 100%, so baseline is 3. The description adds meaning beyond the schema by explaining the purpose of lines+offset for large files and tail for log files. This effectively clarifies how parameters interact and when to use them.
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 clearly states the tool's function: 'Read a file or specific line range from a remote server.' It uses a specific verb (read) and resource (file from remote server), and distinguishes it from siblings by specifying the ability to read specific ranges and from the end. This differentiates it from search/replace/write tools.
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 description provides explicit usage guidance for large files ('always use lines+offset') and for logs ('use tail=true'). It lacks explicit alternatives/exclusions, but the context is clear. It doesn't say 'use this instead of X', but it gives actionable rules for parameter selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
replace_in_fileA
Replace a specific text passage in a remote file without loading the full content. Preferred over write_file for editing large files. Returns error if old_text not found. Supports dry_run preview.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File path | |
| count | No | Max replacements (default: 1, 0 = all) | |
| reason | No | Human-readable explanation of what is being changed and why (for audit log) | |
| server | Yes | Server name | |
| dry_run | No | Preview changes without applying | |
| new_text | Yes | Replacement text | |
| old_text | Yes | Exact text to find (multi-line supported) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses error behavior ('Returns error if old_text not found') and dry-run support ('Supports dry_run preview'), but omits other behavioral traits like permissions management, atomicity, or success response format. This is moderate transparency, not exhaustive.
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?
Three concise sentences, front-loaded with the core action and key differentiators. Every sentence adds value: purpose, usage guidance, and error/dry-run behavior. No filler or redundancy.
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 no output schema and no annotations, the description should cover return values and potential failure modes more completely. It mentions error on old_text not found but not success output or count behavior. However, the core purpose and usage context are well covered, making it adequate but with clear gaps.
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 100%, so the baseline is 3. The description adds no parameter-specific explanations beyond the schema; it does not clarify count semantics, the purpose of reason, or how dry_run works. It neither helps nor hinders parameter understanding beyond what the schema already provides.
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 clearly states a specific verb+resource: 'Replace a specific text passage in a remote file'. It also distinguishes from siblings by noting 'without loading the full content' and 'Preferred over write_file for editing large files', making its purpose unique.
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 description explicitly says 'Preferred over write_file for editing large files', giving a clear alternative and condition for use. However, it does not mention other siblings like search_in_file or read_file, nor does it state when NOT to use this tool, leaving some usage ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_in_fileA
Search for a text pattern in a remote file using grep. Returns matching lines with line numbers and surrounding context. Use this to locate code sections before editing.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File path | |
| server | Yes | Server name | |
| pattern | Yes | Grep regex pattern | |
| max_matches | No | Maximum number of matches | |
| context_lines | No | Lines of context around each match |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosing behavioral traits. It implies a read-only operation ('Search...using grep') and explains return value structure, but it does not explicitly state safety (e.g., no modification), permissions required, or behavior on no matches. This is adequate but not rich.
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 sentences, front-loaded with the core purpose, no fluff. Each sentence earns its place: one defines the action and method, the other defines output and usage context.
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 no output schema, the description appropriately explains the return values (matching lines, line numbers, context). It also provides usage context. It does not cover edge cases like file-not-found or empty results, but for a read-only search tool with well-specified parameters, this is reasonably complete.
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 100%, so every parameter is documented. The description adds minimal semantic value by stating the output includes 'surrounding context' which aligns with the context_lines parameter. Baseline of 3 is appropriate since the schema does the heavy lifting.
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 clearly states the action ('Search for a text pattern in a remote file') and specifies the mechanism ('using grep') and output ('matching lines with line numbers and surrounding context'). It effectively distinguishes itself from sibling tools like read_file (reads full file) and replace_in_file (modifies content) by focusing on search/location.
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?
Provides explicit guidance: 'Use this to locate code sections before editing.' This tells agents when to invoke the tool. However, it does not mention when not to use it or explicitly name alternatives, though the sibling context implies the distinction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
serviceA
Manage or query a systemd service. Use action=status to check, or start/stop/restart/reload to control. Actions other than status require sudo.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action to perform | |
| reason | No | Human-readable explanation of why this service action is needed (for audit log) | |
| server | Yes | Server name | |
| service | Yes | Service name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosing behavior. It accurately distinguishes read-only status from mutating control actions and highlights the sudo requirement. This is valuable practical context beyond the raw schema.
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 two concise sentences, front-loaded with the core purpose and followed by actionable usage notes. Every sentence earns its place with no redundancy or 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?
The tool is simple, and the schema covers all parameters comprehensively. The description addresses the main behavioral requirements (action types, sudo) and is complete enough for an agent to select and invoke the tool correctly, even without an output schema.
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 100%, so the baseline is 3. The description repeats the action enum values but does not add deeper meaning to parameters like reason or server beyond what the schema already provides. No additional semantic value is offered.
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 clearly states the tool manages or queries a systemd service, with specific actions enumerated. This distinguishes it from sibling tools like execute or read_file, which address different domains. The verb+resource pair is specific and unambiguous.
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 description provides clear guidance on when to use status vs control actions and explicitly notes the sudo requirement for non-status actions. It does not explicitly mention alternatives, but the action-level guidance is strong and contextually sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transfer_fileA
Transfer a file between local machine and remote server via SFTP. Use direction=upload to send, direction=download to receive.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Human-readable explanation of what is being transferred and why (for audit log) | |
| server | Yes | Server name | |
| direction | Yes | Transfer direction | |
| local_path | Yes | Local file path | |
| remote_path | Yes | Remote file path |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the SFTP protocol and direction semantics, but omits important behavioral aspects such as authentication requirements, overwrite behavior, failure handling, and whether the server must be previously configured. This is a network operation, so these gaps are significant.
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 a single, front-loaded sentence that states the core function and then explains direction usage. Every word earns its place, with no unnecessary detail 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?
The tool has 5 parameters and no output schema. The description covers the primary purpose and direction semantics but misses some context like server prerequisites (e.g., server must exist in list_servers), overwrite behavior, and response/status information. Overall, it is reasonably complete for a simple file transfer but leaves a few gaps.
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 schema covers 100% of parameters, but the description adds value by clarifying that 'upload' means send from local to remote and 'download' means receive from remote to local, which the schema enum alone does not explicitly state. Other parameters rely on schema descriptions, so the net contribution is moderate.
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 clearly states the tool transfers files between local and remote via SFTP, with a specific verb and resource. It distinguishes itself from sibling local file tools (read_file, write_file) by explicitly mentioning the remote server and SFTP.
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 description provides clear context about the tool's function and explains the direction parameter, but it does not explicitly state when to use this tool versus alternatives like read_file or write_file, nor does it mention any exclusions. Usage is implied rather than explicitly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_fileA
Overwrite an entire file on remote server via SFTP. WARNING: replaces full file content. For surgical edits on large files, use replace_in_file instead. Requires approval.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File path | |
| reason | No | Human-readable explanation of what is being written and why (for audit log) | |
| server | Yes | Server name | |
| content | Yes | File content |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral disclosure burden. It warns about destructive overwriting and notes the approval requirement, which is critical safety and operational information. It does not describe return values or edge cases, so a perfect score is not warranted.
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 sentences that front-load the warning and purpose, with no wasted words. The alternative and approval requirement are briefly noted.
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?
The description covers the core behavior, the destructive nature, an alternative, and the approval requirement. Missing return value or error context, but no output schema exists and the tool is straightforward. It is sufficiently complete for an agent to use correctly, but not exhaustive.
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 100% with terse descriptions. The tool description adds some context by clarifying that content is the full file content and that the target is a remote server, but it does not provide detailed per-parameter semantics beyond that. Baseline for high coverage is 3.
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 clearly states the tool overwrites an entire file on a remote server via SFTP, using a specific verb and resource. It also distinguishes itself from replace_in_file by warning about full content replacement.
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 explicitly directs users to replace_in_file for surgical edits on large files, providing a clear alternative. The approval requirement also sets expectations for when this tool can be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clear, distinct purpose: server discovery, command execution, file reading/writing/transfer, service control, and file inspection/editing. The overlap between write_file and replace_in_file is explicitly disambiguated by descriptions, and file-reading tools are differentiated by intent (full read, search, structure).
Most tools follow a verb_noun pattern (list_servers, read_file, write_file, transfer_file, search_in_file, replace_in_file), with a couple of exceptions: 'execute' is a bare verb and 'service' is a noun used as a command. However, the pattern is recognizable and predictable overall.
9 tools is well-scoped for a remote administration server. Each tool covers a necessary function without bloat, and the count is within the ideal range for a specialized MCP server.
The tool surface covers the core remote admin workflows: discovering servers, executing commands, reading/editing/writing files, transferring files, and managing services. Minor gaps exist (e.g., no explicit directory listing or delete/rename file tool), but these can be worked around via the execute tool.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Let AI operate servers without SSH. Choose actions, approve risky changes, and audit every step.
Operate Linux, macOS and Windows from your LLM. Every action runs through an auditable allowlist.
Provides capabilities that let LLM agents perform a range of infrastructure management tasks.
Scoped, audited SSH exec, sessions, and SFTP on your saved servers without exposing credentials
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables AI assistants to securely connect to and manage remote servers via SSH, supporting command execution, file transfers via SFTP, and multi-server management with both password and SSH key authentication.9562MIT

cygnus-ssh-mcpofficial
AlicenseAqualityBmaintenanceEnables AI assistants to manage remote servers via SSH with 43 specialized tools for command execution, file editing, directory operations, and background tasks across Linux, macOS, and Windows.445GPL 3.0- AlicenseNot gradedqualityFmaintenanceEnables AI assistants to execute commands and transfer files on remote servers over SSH connections.1MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to securely execute commands, transfer files, and manage port forwarding on remote servers via SSH.16836Apache 2.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/intershopper/remote-admin-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server