SSH MCP Server
Server Quality Checklist
Latest release: v0.1.3
- Disambiguation5/5
Every tool has a clearly distinct purpose with no ambiguity. Tools like check_ssh_connection, download_file, execute_command, and upload_file each handle specific SSH/SFTP operations without overlap. Even execute_command and execute_interactive_command are clearly differentiated by their interactive input capability.
Naming Consistency5/5All tools follow a consistent verb_noun naming pattern with snake_case throughout. The naming is predictable and readable, with clear action-object pairs like check_ssh_connection, download_file, list_directory, and upload_file.
Tool Count5/5Seven tools is well-scoped for an SSH server, covering connection management, file operations, and command execution. Each tool earns its place with no redundancy, providing a focused yet complete set of SSH capabilities.
Completeness5/5The tool surface provides complete coverage for SSH operations: connection management (check/list), file transfer (upload/download), directory listing, and command execution (both regular and interactive). There are no obvious gaps or dead ends for typical SSH workflows.
Average 4/5 across 7 of 7 tools scored. Lowest: 3.3/5.
See the Tool Scores section below for per-tool breakdowns.
- No community issues in the last 6 months
- 0 commits in the last 12 weeks
- No stable releases found
- No critical vulnerability alerts
- No high-severity vulnerability alerts
- No code scanning findings
- CI status not available
This repository is licensed under MIT License.
This repository includes a README.md file.
No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.
Tip: use the "Try in Browser" feature on the server page to seed initial usage.
Add a glama.json file to provide metadata about your server.
If you are the author, simply .
If the server belongs to an organization, first add
glama.jsonto the root of your repository:{ "$schema": "https://glama.ai/mcp/schemas/server.json", "maintainers": [ "your-github-username" ] }Then . Browse examples.
Add related servers to improve discoverability.
How to sync the server with GitHub?
Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.
To manually sync the server, click the "Sync Server" button in the MCP server admin interface.
How is the quality score calculated?
The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).
Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.
Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).
Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.
Tool Scores
- Behavior2/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It describes what the tool returns but doesn't mention important behavioral aspects like whether this is a read-only operation, if it requires authentication, potential timeouts, or error handling behavior. The return format documentation is helpful but insufficient for full behavioral transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections for Args and Returns, making it easy to parse. It's appropriately sized - every sentence adds value. The only minor improvement would be front-loading the purpose more prominently, but overall it's efficient and organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter diagnostic tool with no output schema, the description provides adequate coverage of what the tool does and what it returns. However, it lacks context about prerequisites (e.g., does it require pre-configured SSH connections?), error scenarios, or performance characteristics that would be helpful for an AI agent to use it effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description provides excellent parameter semantics despite 0% schema description coverage. It clearly explains that 'connection_name' is optional ('如果不指定则使用默认连接' - if not specified, use default connection) and describes what it represents ('SSH连接名称' - SSH connection name). This fully compensates for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose as '检查SSH连接状态' (check SSH connection status), which is a specific verb+resource combination. However, it doesn't differentiate from sibling tools like 'list_ssh_connections' - both involve SSH connections but serve different functions (status check vs. listing available connections).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines2/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. While it mentions '如果不指定则使用默认连接' (if not specified, use default connection), this is parameter usage guidance rather than tool selection guidance. There's no mention of when this tool is appropriate versus other SSH-related tools in the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It describes the return structure (Dict with connections, default_connection, total_count) which is valuable behavioral information. However, it doesn't mention whether this is a read-only operation, if it requires authentication, potential rate limits, or error conditions. The description adds some behavioral context but leaves significant gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately concise with two sentences: one stating the purpose and one describing the return structure. Both sentences earn their place by providing essential information. The structure is front-loaded with the purpose first, followed by return details. Minor improvement could be separating the return description more clearly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless read operation with no output schema, the description provides the purpose and return structure, which covers the basics. However, without annotations, it should ideally mention that this is a read-only operation and any authentication requirements. The sibling context suggests this is part of an SSH toolset, but the description doesn't leverage this context to provide more complete guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters with 100% schema description coverage, so the baseline is 4. The description correctly indicates this is a parameterless operation by not mentioning any inputs, which aligns perfectly with the empty input schema. No additional parameter information is needed or provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: '列出所有可用的SSH连接配置' (List all available SSH connection configurations). This is a specific verb+resource combination that tells what the tool does. However, it doesn't explicitly differentiate from sibling tools like 'check_ssh_connection' which might verify connection status rather than list configurations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines2/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. There's no mention of prerequisites, when this tool is appropriate versus other SSH-related tools like 'check_ssh_connection', or any context about typical use cases. The agent must infer usage from the purpose alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well by disclosing key behaviors: it mentions timeout defaults, output size limits with truncation warnings, memory risks for unlimited output, and SSH connection fallback. It also references return format consistency with 'execute_command'. However, it doesn't cover error handling, security implications, or execution environment details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded with the core purpose first. The Args/Returns structure is clear, though slightly verbose in Chinese. Every sentence adds value: purpose statement, parameter explanations with defaults and warnings, and return format reference. Minor improvement possible by tightening the language.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 parameters with 0% schema coverage, no annotations, and no output schema, the description does an excellent job compensating. It explains all parameters thoroughly, mentions behavioral traits like truncation and memory risks, and references the return format. For a complex interactive execution tool, it's nearly complete but could benefit from more on error cases or security notes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate fully. It successfully adds meaning for all 5 parameters: explains 'command' as shell command, 'input_data' as data to send, 'timeout' as execution timeout in seconds with default, 'max_output_size' as byte limit with default and truncation warning, and 'connection_name' as SSH connection with default fallback. This provides comprehensive semantic context beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool '执行交互式命令(可以发送输入数据)' which translates to 'Execute interactive commands (can send input data)'. This specifies the verb 'execute' and resource 'interactive commands', distinguishing it from the sibling 'execute_command' by emphasizing interactive capability with input data. However, it doesn't explicitly differentiate from all siblings like SSH-related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for interactive commands that require input data, suggesting when to use this over 'execute_command'. However, it doesn't provide explicit guidance on when NOT to use it or mention alternatives like 'execute_command' for non-interactive scenarios. The context is clear but lacks comprehensive exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses that this is a read operation (获取) with timeout control and SSH connection handling, but doesn't mention potential side effects (e.g., whether it caches results), authentication requirements, rate limits, or error handling beyond the return structure. The behavioral disclosure is basic but covers the core operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and well-structured with clear sections for Args and Returns. Every sentence adds value: the purpose statement is direct, parameter explanations are necessary, and return value documentation is comprehensive. Minor improvement could be front-loading more critical behavioral information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 3 parameters with no schema descriptions and no output schema, the description provides complete parameter semantics and detailed return value structure. It covers the essential context for a directory listing tool, though could benefit from mentioning SSH prerequisites or connection state requirements given the sibling tools context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fully compensates by explaining all 3 parameters: remote_path (path to directory, default '.'), timeout (operation timeout in seconds, default 30), and connection_name (SSH connection name, default uses default connection). It adds crucial meaning beyond the bare schema, specifying defaults and usage context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb '获取' (get/retrieve) and resource '远程目录的结构化文件列表' (structured file list of remote directory), making the purpose specific and actionable. It distinguishes from siblings like download_file, upload_file, or execute_command by focusing solely on directory listing without file transfer or command execution.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving remote directory contents via SSH, but doesn't explicitly state when to use this vs. alternatives like check_ssh_connection for connection testing or list_ssh_connections for connection management. It provides context through parameter defaults but lacks explicit guidance on tool selection scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well by disclosing: protocol used (SFTP), path resolution behavior (absolute vs relative paths), default timeout (60 seconds), default connection behavior, and detailed return structure. It doesn't mention error handling beyond the error field or rate limits, but covers core behavioral aspects adequately for a file transfer operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections (purpose, Args, Returns). Every sentence adds value: first states core purpose, parameter explanations provide essential context, return documentation is comprehensive. Slightly verbose in parameter explanations but all content is functional. Could be more front-loaded with key behavioral notes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter mutation tool with no annotations and no output schema, the description provides excellent coverage: clear purpose, parameter semantics, return structure, and behavioral context. Missing only minor details like authentication requirements or error scenarios beyond the error field. Given the complexity, it's nearly complete and highly usable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fully compensates by providing rich semantic context for all 4 parameters: explains local_path path resolution rules, clarifies remote_path must be absolute, specifies timeout default and unit, describes connection_name default behavior. Each parameter gets practical usage guidance beyond basic type information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('使用SFTP协议上传文件到远程服务器' - upload file to remote server using SFTP protocol) and resource (file). It distinguishes from siblings like download_file (opposite direction) and list_directory/list_ssh_connections (different operations). The verb+resource combination is precise and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context through parameter explanations (e.g., '如果不指定则使用默认连接' - if not specified, use default connection), but doesn't explicitly state when to use this tool versus alternatives like execute_command for remote operations. It mentions sibling tools indirectly through connection_name parameter context but lacks explicit comparison guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well by specifying the SFTP protocol, timeout behavior with default, connection selection logic, and return format details. It explains what happens with relative vs absolute paths and describes the comprehensive return dictionary structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured with a clear purpose statement followed by well-organized Args and Returns sections. Every sentence adds value - no wasted words, and the most important information (what the tool does) is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter tool with no annotations and no output schema, the description provides excellent coverage of parameters, behavior, and return values. The only minor gap is not explicitly mentioning error conditions or edge cases, but it's otherwise comprehensive for this complexity level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fully compensates by explaining all 4 parameters in detail: remote_path as absolute path, local_path with guidance on absolute vs relative paths, timeout with default value, and connection_name with default behavior. It adds significant value beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('使用SFTP协议从远程服务器下载文件到本地' - download files from remote server to local using SFTP protocol), identifies the resource (remote files), and distinguishes it from sibling tools like upload_file. It's precise about the protocol and direction of transfer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context about when to use this tool (SFTP file downloads) and implicitly distinguishes it from upload_file for the opposite operation. However, it doesn't explicitly mention when NOT to use it or alternatives like execute_command for different remote operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure and does so effectively. It describes timeout behavior, output truncation risks, memory concerns with unlimited output, default connection fallback, and detailed return structure including success status, exit codes, output streams, truncation flags, and error information. This provides comprehensive behavioral context beyond basic functionality.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly structured and front-loaded with the core purpose first, followed by organized parameter explanations and return value documentation. Every sentence earns its place by providing essential information without redundancy. The bilingual format (Chinese purpose with English parameter names) is efficiently handled without wasting space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of remote command execution with 4 parameters, no annotations, and no output schema, the description provides complete context. It covers the tool's purpose, all parameter meanings with defaults and warnings, detailed return structure, and behavioral characteristics like timeout handling and output truncation. This is comprehensive for an agent to understand and use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fully compensates by providing detailed semantic information for all 4 parameters. It explains what each parameter controls (command to execute, timeout seconds, output size limit with memory warnings, optional connection name with default behavior), including default values, special cases (0 for unlimited), and practical implications. This adds significant value beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('在远程服务器上执行shell命令' - execute shell commands on remote servers) and distinguishes it from siblings like check_ssh_connection (verification), download_file/upload_file (file transfer), list_directory (browsing), and execute_interactive_command (interactive execution). It precisely identifies both the verb (execute) and resource (shell commands on remote servers).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context about when to use this tool (for executing shell commands on remote servers) and implicitly distinguishes it from execute_interactive_command by describing batch execution with timeout and output limits. However, it doesn't explicitly state when NOT to use this tool or provide direct comparison statements with alternatives like 'use execute_interactive_command for interactive sessions'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GitHub Badge
Glama performs regular codebase and documentation scans to:
- Confirm that the MCP server is working as expected.
- Confirm that there are no obvious security issues.
- Evaluate tool definition quality.
Our badge communicates server capabilities, safety, and installation instructions.
Card Badge
Copy to your README.md:
Score Badge
Copy to your README.md:
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/liang04/ssh-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server