Server Maintenance MCP Server
Server Quality Checklist
Latest release: v1.0.0
- Disambiguation5/5
Each tool has a clearly distinct purpose: listing servers, testing connectivity, executing commands, gathering system info, reading/writing files, listing directories, and managing services. No overlap in functionality, making agent selection straightforward.
Naming Consistency4/5All tools share the 'ssh_' prefix and mostly follow a verb_noun pattern (e.g., ssh_list_servers, ssh_execute_command, ssh_read_file). However, ssh_system_info and ssh_service_status are noun_noun rather than verb_noun, creating a minor inconsistency.
Tool Count5/5With 8 tools, the set is well-scoped for a server maintenance domain. Each tool covers a core operation without redundancy or bloat, appropriate for the server's purpose.
Completeness4/5The toolset covers the main lifecycle for remote server management: listing, testing, executing, inspecting, file transfer, and service control. Minor gaps exist such as file deletion or rename, but agents can work around these with execute_command, so no dead ends.
Average 3.8/5 across 8 of 8 tools scored.
See the Tool Scores section below for per-tool breakdowns.
- No community issues in the last 6 months
- 2 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
Add a LICENSE file by following GitHub's guide. Once GitHub recognizes the license, the system will automatically detect it within a few hours.
If the license does not appear after some time, you can manually trigger a new scan using the MCP server admin interface.
MCP servers without a LICENSE cannot be installed.
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 must disclose behavioral traits, but it does not warn about the potential for destructive side effects, privilege escalation via sudo, or that commands run with the SSH user's permissions. It also doesn't mention idempotency, error handling, or that output includes stdout/stderr and exit codes. This is a significant gap for a tool that can mutate remote state.
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 two sentences, with the purpose front-loaded and no extraneous detail. Every word earns its place: the first sentence states the core action, the second highlights key options. It is appropriately sized for the tool's simplicity and avoids redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness2/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having five parameters and no output schema, the description does not explain the return format (stdout, stderr, exit code) or any failure modes (e.g., unreachable server, authentication errors). It also lacks guidance on safe usage or prerequisites. Given the tool's potential for side effects and its complexity, more detail is needed for an agent to call it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides descriptions for all five parameters (100% coverage), so the description's mention of 'working directory, timeouts, and sudo' adds no new meaning beyond restating the schema. The baseline for high coverage is 3, and the description does not enrich parameter understanding with examples or constraints beyond what is already in the 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 states 'Execute a bash or shell command on a remote server over SSH' with a clear verb, resource, and method. It distinguishes itself from sibling tools like ssh_read_file, ssh_write_file, and ssh_list_directory, which handle specific file operations, and from ssh_system_info or ssh_service_status, which gather info. The purpose is unambiguous and contextually distinct.
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 mentions supported features (working directory, timeouts, sudo) but does not explicitly guide when to use this tool versus alternatives, such as stating 'use ssh_read_file for file retrieval' or 'use ssh_test_connection to verify connectivity'. It relies on the agent inferring from sibling names that this is for arbitrary command execution. No exclusions or alternative recommendations are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior2/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. It reveals the return fields but does not state whether the operation is read-only, what errors may occur (e.g., invalid path, connection failure), or any side effects. For a tool with no annotation coverage, this is a significant gap in disclosing operational behavior.
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 a single, efficient sentence that front-loads the action and resource, and then lists the return fields with zero wasted words. Every element earns its place.
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?
The tool is simple with 2 parameters and no output schema, and the description covers the core function and return fields. However, it lacks context about error handling, whether listing is recursive, or any operational constraints. Given no annotations and no output schema, more detail on edge cases or limitations would be helpful, but the basic usage is adequately specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for both parameters (path and serverId), so the schema already documents them clearly. The description adds no extra meaning beyond what the schema provides; it does not elaborate on defaults, formatting, or constraints. Baseline 3 is appropriate given the high schema coverage.
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 action (List), the resource (remote directory contents), the method (via SFTP), and the specific fields returned (filename, file type, file size, permissions, modification timestamp). This unambiguously distinguishes it from siblings like ssh_read_file (reads file content) and ssh_execute_command (runs commands).
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 this tool is for listing directories, but it does not explicitly state when to use it versus alternatives, nor does it mention any exclusions or prerequisites. Sibling names give context, but no direct guidance is provided, leaving the agent to infer usage from the verb and resource.
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?
The word 'gather' implies a read-only operation, but with no annotations provided, the description carries the full burden. It does not disclose whether elevated permissions are needed, whether any remote commands are executed that could have side effects, or how connection/authentication failures are surfaced. This is acceptable for a seemingly non-destructive tool, but not fully transparent.
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 one concise sentence with the action and object front-loaded, followed by a concrete list of what the overview includes. Every word contributes meaning and there is no redundancy with the tool name.
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?
The description covers the output content (OS, kernel, uptime, load, RAM, disk) which is helpful given there is no output schema. However, it does not mention response structure, error conditions, required permissions, or whether it executes privileged commands. These missing details reduce completeness for an SSH-based tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter serverId is already well described in the schema ('The ID of the configured server'). The description's mention of 'remote server' adds minimal semantic value beyond that, so it neither compensates for nor conflicts with the 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 starts with a specific verb and object ('Gather comprehensive diagnostic overview of a remote server') and enumerates the exact data points returned (OS version, kernel, uptime, load averages, RAM, disk mounts). This clearly distinguishes it from sibling tools like ssh_execute_command or ssh_read_file, which serve different purposes.
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 use case is implied: use this when you need overall system health/configuration of a server. However, there is no explicit guidance on when to prefer this over ssh_execute_command, ssh_service_status, or other siblings, nor any exclusions or alternatives mentioned.
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, the description carries the burden of disclosure. It explicitly lists mutating actions (start, stop, restart), which reveals the tool can change system state, but it does not mention operational consequences like service downtime or reversibility.
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?
A single, dense sentence conveys the tool's purpose and scope with no filler. It front-loads the main actions and target objects, which is ideal for an agent quickly classifying the tool.
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?
The description is clear for basic routing, but absent any annotations or output schema it does not explain return values, permission requirements, or consequences of stop/restart actions. The mutating operations are named, yet the agent has to infer the operational context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema parameter coverage is 100% (serverId, serviceName, action, limit), and the description does not add parameter detail. Baseline 3 is appropriate because the schema already documents parameters and the description does not need to repeat them.
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 names a specific action set – check status, view logs, start, stop, restart – and precise targets (systemd service or Docker container on remote server). It clearly communicates what the tool does and differentiates it from generic commands like ssh_execute_command.
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 use case is clear: any agent needing to inspect or control a systemd service or Docker container. It does not explicitly mention alternatives or when not to use it, but the described scope is specific enough to route an agent correctly.
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 is the only source of behavioral information. It clarifies that this is a read-only enumeration and explicitly excludes sensitive credentials, which is important safety-relevant behavior. It could mention authentication requirements or return format, but the stated exclusions add meaningful transparency.
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 a single concise sentence that leads with the primary action and result. It avoids unnecessary filler and places the most important information first.
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 simple listing tool with one optional parameter, the description provides sufficient context: what is listed, what fields are available, and what is deliberately excluded. It could mention output format or pagination, but the absence is not critical for this straightforward read-only operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, 'tag', is fully described in the schema itself, so the description adds no additional meaning beyond what the schema already provides. The baseline score applies because the schema covers the parameter adequately.
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 uses a specific verb ('List') and clear resource ('configured remote servers'), and it distinguishes this tool from its siblings by focusing on discovery/inventory rather than execution or inspection. The inclusion of 'metadata, tags, and connection details' further clarifies the read-only purpose.
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 gives clear contextual purpose — listing configured SSH servers — but does not explicitly state when to prefer this tool over siblings like ssh_execute_command or ssh_test_connection. There is no when-to-use or when-not-to-use guidance, though the purpose is easy to infer.
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?
Annotations are absent, so the description carries the full burden. It states the operation is read-only ('Read') and mentions SFTP transport, but does not disclose error handling, auth requirements, or return format. It adds some behavioral context about offset and limit support, but lacks depth on what happens in edge cases. A score of 3 reflects adequate but not thorough transparency.
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 a single, well-structured sentence. It front-loads the primary action, then adds the supporting detail about offset and limits. No unnecessary words, making it efficient for an agent to parse.
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 the tool's simplicity and that the schema covers parameter details, the description provides the essential purpose and use case. It does not mention error conditions or binary file handling, but for a read operation these are minor. The lack of an output schema means the agent must infer return value, but 'read contents' implies the file text. Overall, it is reasonably complete for its complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All four parameters are documented in the schema with descriptions, giving 100% coverage. The description reinforces the purpose of offsetLines and maxLines for log inspection, but adds no new semantic meaning beyond what the schema already states. Baseline of 3 is appropriate.
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 tool reads remote file contents over SFTP, with a specific verb and resource. It distinguishes from sibling write/list/execute tools by focusing on read-only file access. The mention of offset and line limits adds specificity for large files.
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?
It identifies the use case (inspecting log files and large config files) which gives context for when to use it. However, it does not explicitly contrast with alternatives like ssh_execute_command or ssh_write_file, so there are no exclusions mentioned. This earns a 4 rather than a 5.
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, the description must disclose behavior. It mentions measuring round-trip latency, which implies a read-only, non-destructive operation. However, it does not explicitly state that no changes are made to the server, nor does it explain error handling or the nature of the test (e.g., ping vs. SSH handshake). This leaves some behavioral details implicit.
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 a single sentence with no filler. It front-loads the primary action and result, and includes the parameter scope without redundancy. Every word contributes to the understanding of the tool.
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 simple tool with one optional parameter and no output schema, the description covers the core purpose and parameter semantics. It does not explicitly mention what the tool returns (e.g., a success/failure status or latency values), but the phrase 'measure round-trip latency' implies the output. Given the low complexity, the description is nearly complete, though a brief note on the response format would make it fully self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema already explains serverId ('The server ID to test. If omitted, tests all configured servers.'). The description essentially repeats this information ('to a specified server or all configured servers'), adding no new meaning beyond the schema. Baseline of 3 is appropriate.
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 states a specific verb ('Test') and resource ('SSH connectivity') and adds the outcome ('measure round-trip latency'). This clearly distinguishes it from sibling tools like ssh_execute_command or ssh_list_servers, which have different purposes. The scope ('specified server or all configured servers') further clarifies the tool's function.
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 gives clear context for when to use this tool: testing connectivity and latency. It doesn't explicitly mention alternatives or exclusions, but the purpose is distinct enough that an agent can infer when to select it. There's no misleading guidance, and the context is unambiguous.
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 burden of disclosing side effects. It clearly states that existing files may be overwritten and that a timestamped backup (.bak-...) is created by default, adding meaningful behavioral context beyond the name and schema.
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?
Two concise sentences front-load the core operation and then add the most important behavioral default. There is no redundant or filler content.
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 straightforward file write tool with fully documented parameters and no output schema, the description covers the core operation and the key side-effect behavior. It could add explicit guidance on when not to use it, but the essential context for invoking it correctly is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all five parameters. The description adds the backup filename convention (.bak-...) and default behavior, but does not need to compensate for missing parameter documentation.
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 states a specific verb and resource: 'Create or update a remote file over SFTP.' It clearly distinguishes this from sibling tools like ssh_read_file and ssh_execute_command by naming the transport (SFTP) and the write action.
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 writing files over SFTP, and sibling names make the read/execute/listing alternatives obvious. However, it does not explicitly state when to use this tool versus alternatives or mention any exclusions or prerequisites.
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: