deployment-mcp
Allows to run git pull on a remote host, enabling automated deployment of code updates from a Git repository.
Enables execution of npm commands (e.g., install, run build) on remote hosts as part of deployment scripts.
Supports restarting PM2 process manager on remote servers, used for managing Node.js application processes during deployment.
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., "@deployment-mcpPull latest code on my-app server using SSH"
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.
deployment-mcp
An MCP (Model Context Protocol) server that handles deployment operations over SSH.
Features
ssh_git_pull– SSH into a remote host and rungit pullin a specified repository directory.ssh_run_command– Execute an arbitrary shell command on a remote host and return its stdout, stderr and exit code.ssh_run_script– Upload and execute a multi-line shell script on a remote host (piped to bash; no temporary files created locally).write_ssh_config– Write or update aHostentry in the local~/.ssh/configfile.
All SSH tools support authentication via an inline PEM private key, a path to a key file, or a password.
Related MCP server: MCP SSH Server
Installation
npm install
npm run buildUsage
Run the MCP server over stdio (used by MCP-compatible AI clients):
node dist/index.jsMCP client configuration example
{
"mcpServers": {
"deployment": {
"command": "node",
"args": ["/path/to/deployment-mcp/dist/index.js"]
}
}
}Tool examples
ssh_git_pull
{
"host": "my-server.example.com",
"username": "deploy",
"privateKeyPath": "~/.ssh/id_rsa",
"repoPath": "/var/www/myapp",
"branch": "main"
}ssh_run_command
{
"host": "my-server.example.com",
"username": "deploy",
"privateKeyPath": "~/.ssh/id_rsa",
"command": "systemctl restart myapp"
}ssh_run_script
{
"host": "my-server.example.com",
"username": "deploy",
"privateKeyPath": "~/.ssh/id_rsa",
"workingDirectory": "/var/www/myapp",
"script": "#!/bin/bash\nset -e\ngit pull\nnpm install --omit=dev\nnpm run build\npm2 restart myapp"
}write_ssh_config
{
"alias": "my-server",
"hostname": "my-server.example.com",
"user": "deploy",
"identityFile": "~/.ssh/deploy_key",
"extraOptions": {
"StrictHostKeyChecking": "no",
"ServerAliveInterval": "60"
}
}Development
npm run dev # TypeScript watch mode
npm test # Run tests
npm run build # Compile TypeScriptAvailable Tools
4 toolsssh_git_pullB
SSH into a remote host and run git pull in the specified repository directory. Supports authentication via private key (PEM string or file path) or password.
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | Remote hostname or IP address | |
| port | No | SSH port (default 22) | |
| branch | No | Branch to pull (default: current tracking branch) | |
| password | No | SSH password (if not using a key) | |
| repoPath | Yes | Absolute path to the git repository on the remote host | |
| username | Yes | SSH username | |
| passphrase | No | Passphrase for the private key | |
| privateKey | No | PEM-encoded private key content | |
| privateKeyPath | No | Path to private key file (e.g. ~/.ssh/id_rsa) |
TDQS
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 mentions authentication methods but fails to disclose critical behaviors such as potential merge conflicts, the need for git to be installed on the remote, or any output/error handling. This lack of transparency could lead to misuse.
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 concise with two sentences, the first defining the core action and the second adding authentication support. It is front-loaded and avoids unnecessary detail, though it could be slightly more structured (e.g., bullet points).
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 the tool has 9 parameters, no output schema, and no annotations, the description covers the main action and authentication but omits important context like error scenarios, prerequisites (git on remote), and behavior of optional parameters. Adequate but not fully 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 baseline is 3. The description adds useful context on authentication options (private key vs password) but does not elaborate on other parameters like branch, port, or passphrase beyond what the schema already provides. No additional semantic value for those.
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 specific action: SSH into a remote host and run git pull in a specified repo directory. The name and description together precisely define the tool's purpose, distinguishing it from more general SSH command execution tools like ssh_run_command.
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 implies usage for updating a git repository via SSH but provides no explicit guidance on when to use this tool versus siblings (e.g., for other commands use ssh_run_command). No exclusions or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ssh_run_commandB
SSH into a remote host and run an arbitrary shell command. Returns stdout, stderr and the exit code.
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | Remote hostname or IP address | |
| port | No | SSH port (default 22) | |
| command | Yes | Shell command to run on the remote host | |
| password | No | SSH password (if not using a key) | |
| username | Yes | SSH username | |
| passphrase | No | Passphrase for the private key | |
| privateKey | No | PEM-encoded private key content | |
| privateKeyPath | No | Path to private key file (e.g. ~/.ssh/id_rsa) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must cover behavioral traits. It only mentions the return values but fails to disclose important aspects like potential destructiveness, authentication requirements, or side effects of executing remote commands.
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, consisting of two short sentences that are front-loaded with the core action and output. Every sentence adds value without 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 the tool has 8 parameters and no output schema, the description is too minimal. It does not explain authentication methods, error handling, or connection behavior, leaving significant gaps for an SSH tool.
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 parameters are already well-documented. The description adds no additional meaning beyond what the schema provides, meeting the baseline of 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 that the tool SSHs into a remote host and runs an arbitrary shell command, and specifies the output (stdout, stderr, exit code). This distinguishes it from siblings like ssh_git_pull and ssh_run_script, which have more specific purposes.
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 no guidance on when to use this tool versus its siblings (e.g., for one-off commands vs. running scripts). It lacks explicit context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ssh_run_scriptA
SSH into a remote host and execute a multi-line shell script. The script content is piped to bash remotely; no temporary files are created locally.
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | Remote hostname or IP address | |
| port | No | SSH port (default 22) | |
| script | Yes | Shell script content to execute on the remote host | |
| password | No | SSH password (if not using a key) | |
| username | Yes | SSH username | |
| passphrase | No | Passphrase for the private key | |
| privateKey | No | PEM-encoded private key content | |
| privateKeyPath | No | Path to private key file (e.g. ~/.ssh/id_rsa) | |
| workingDirectory | No | Working directory on the remote host |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses the method (piping to bash) and lack of local temp files, but omits details on output handling, error behavior, or authentication requirements beyond the parameters.
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 action. No superfluous information; every word 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 tool with 9 parameters and no output schema, the description is adequate but not complete. It covers the core behavior but lacks details on return values, error handling, or authentication context, which could aid an agent.
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 clear descriptions for all 9 parameters. The description adds no extra meaning beyond the schema, meeting the baseline without improvement.
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 (SSH and execute) and the resource (multi-line shell script). The mention of piping to bash and no temporary files distinguishes it from sibling tools like ssh_run_command, which likely runs single commands.
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 implies usage for multi-line scripts but does not explicitly state when to use this tool over siblings. No 'when not to use' or alternative tool names are given, leaving the agent to infer from the context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_ssh_configA
Write (or update) a Host entry in the local ~/.ssh/config file. If an entry with the same alias already exists it is replaced. Useful for setting up SSH config before running deployment commands.
| Name | Required | Description | Default |
|---|---|---|---|
| port | No | SSH port (default 22) | |
| user | Yes | SSH username | |
| alias | Yes | SSH host alias (used as the Host value in ~/.ssh/config) | |
| hostname | Yes | Actual hostname or IP address | |
| extraOptions | No | Additional SSH config options as key-value pairs | |
| identityFile | No | Path to the private key file (e.g. ~/.ssh/id_rsa) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It covers replacement of existing entries but misses important traits: what happens if the file doesn't exist, permissions required, backup behavior, or error handling. For a mutation tool, this is insufficient.
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, no fluff. The first sentence defines the core action, and the second provides context. Every word 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?
With 6 parameters including a nested object and no output schema, the description covers basic behavior but lacks details on file creation, error states, and default port behavior. It is adequate for simple use cases but incomplete for complex ones.
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 schema already documents all parameters. The description adds no extra meaning beyond the schema, making it adequate but not additive.
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?
Description clearly states the verb 'Write (or update)' and resource 'Host entry in local ~/.ssh/config file', and distinguishes itself from sibling tools (ssh_git_pull, ssh_run_command, ssh_run_script) which focus on running commands rather than configuring SSH.
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 phrase 'Useful for setting up SSH config before running deployment commands' implies when to use, but does not explicitly state when not to use or provide alternatives. No prerequisites or error conditions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
4 tool updates
v0.1.0- First observed
ssh_git_pull - First observed
ssh_run_command - First observed
ssh_run_script - First observed
write_ssh_config
TDQS
Tools are mostly distinct: git pull, command execution, script execution, and SSH config writing each target different actions. Some overlap between run_command and run_script but descriptions clarify the difference.
All tools use snake_case with ssh_ prefix, following a verb_noun pattern. `ssh_git_pull` is slightly inconsistent (compound verb) but overall pattern is predictable.
Four tools is a reasonable scope for a focused deployment server covering SSH execution and config. Could be expanded but not overly sparse.
Lacks critical deployment operations like file transfer (scp/rsync), service management, or environment setup. The set is too limited for typical deployment workflows.
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
Scoped, audited SSH exec, sessions, and SFTP on your saved servers without exposing credentials
Deploy and manage applications, databases, domains, and git repos
Develop, manage, and debug Railway projects, services, and deployments from within agents.
Run commands and read/write files on your servers over Termalin's keyless tunnels (hosted MCP).
Related MCP Servers
- FlicenseBqualityDmaintenanceEnables SSH operations including connecting to remote servers, executing commands, and transferring files between local and remote systems. Supports multiple SSH connections with both password and private key authentication methods.18-
- FlicenseBqualityDmaintenanceEnables seamless SSH operations including secure connections, file transfers, interactive shell sessions, and Docker container management on remote servers. Supports both password and SSH key authentication with credential management and connection pooling.18-
- AlicenseBqualityDmaintenanceEnables secure remote and local command execution via SSH, with session management and environment variable support.1363MIT
- AlicenseCqualityFmaintenanceEnables SSH remote command execution on remote machines with persistent connections, supporting automatic key discovery and connection pooling.230MIT
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/jsilvanus/deployment-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server