mcp-remote-agent
Provides tools for remote file read/write, search, and command execution on Linux servers, enabling Windsurf (by Codeium) to manage remote servers.
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., "@mcp-remote-agentcheck the disk space on the remote server"
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.
agentport
AI Remote Development Gateway for MCP, CLI, SSH, and persistent daemon jobs
Enable AI Agents to develop on remote Linux servers through the most stable available channel: native MCP tools, CLI fallback, daemon HTTP APIs, SSH recovery, and persistent remote jobs.
One-line Summary
Give AI Agents a stable remote development gateway: direct file operations, command execution, diagnostics, long-running job control, and recovery paths when a desktop tool's native MCP transport is unavailable or unstable.
Analogy: VS Code Remote SSH is for humans; agentport is for AI.
Architecture Overview
agentport is split into a local agent gateway and a remote Linux
daemon:
AI desktop tool
-> CLI daemon gateway, native MCP tools, or SSH recovery
-> local agentport gateway
-> remote daemon HTTP API
-> remote Linux workspaceThe local side registers MCP tools when available, provides a CLI fallback for tools that can run terminal commands, reads private connection config, and turns daemon errors into agent-readable messages. The remote daemon performs token auth, safe path checks, file operations, command execution, persistent development jobs, audit logging, health checks, Dashboard responses, and hot config reload.
For desktop tools that spawn multiple MCP stdio children per software, agentport now keeps one local "core" process per software key and lets other sessions attach through a localhost proxy broker. This reduces duplicate connection churn without forcing single-session usage.
Remote setup safety policy:
remote_setupdefaults to client-only mode (deploy=false).Existing remote daemon files are not overwritten by default.
Overwrite requires explicit
deploy=trueandforceDeploy=true.For existing servers, read
AUTH_TOKENSfrom remote.envand reuse token pairs instead of regenerating/replacing server credentials.For first-time server bootstrap, run read-only detection first, then deploy once from one operator computer, then reuse generated token pairs on all other client computers.
For multi-computer usage, do not share one token. Create one unique
clientId=tokenper computer/software.
For design rationale, deployment model, and security boundaries, see the project documentation in this repository.
Core Features
Feature | Description |
Remote File R/W |
|
Remote Search |
|
Command Execution |
|
Batch Operations |
|
Native MCP Tools | Structured |
CLI Daemon Gateway |
|
Persistent Jobs | Remote daemon jobs for tests, builds, logs, status, and cancel |
Async Execution |
|
Config Hot Reload |
|
Execution Backpressure | Queue timeout returns clear 429 with exec running/max/queued state |
Dynamic Connections | Switch between multiple servers without restarting MCP |
Multi-session Reuse | One local core instance per software key, extra sessions attach via local proxy broker |
Health Check | Automatic remote service status detection |
Encoding Handling | Auto base64 encode special chars, clean CRLF/BOM |
Agent Integration Priority
agentport is a remote development gateway with multiple runtime channels.
Choose by task type:
SSH-first CLI for stable base operations: use
--route sshfor health, read/write, stat, glob, grep, and one-off command execution.CLI daemon gateway for long-running development: use
node cli.js statusand persistentjobcommands for tests, builds, polling, and durable logs.Native MCP for convenience when available: if
remote_*tools are visible and stable, use them for quick structured operations.HTTP/manual last: only use direct REST calls or manual commands when SSH, daemon, and native MCP are all unavailable.
CLI fallback examples:
node cli.js doctor
node cli.js list
node cli.js connect <connection-name>
node cli.js health
node cli.js ssh-health
node cli.js health --route ssh
node cli.js read /path/to/workspace/AGENTS.md
node cli.js bash "pwd && ls -la" --cwd /path/to/workspace
node cli.js bash "pwd && ls -la" --route ssh --json
node cli.js write /path/to/workspace/tmp.txt --content "hello"For long-running development tasks, use the persistent daemon job gateway:
node cli.js status
node cli.js job start "npm test" --cwd /path/to/workspace
node cli.js job status <job-id>
node cli.js job logs <job-id> --tail 200
node cli.js job cancel <job-id>
node cli.js job list --limit 20The job gateway is designed for AI tools whose native MCP stdio transport may disconnect during long work. Jobs continue inside the remote daemon, and the AI can reconnect through the CLI to inspect status and logs.
When daemon transport is unhealthy, use lightweight SSH jobs as a recovery path:
node cli.js job start "sleep 30" --route ssh
node cli.js job status <job-id> --route ssh
node cli.js job logs <job-id> --route ssh --json
node cli.js job cancel <job-id> --route sshSee AGENT_GUIDE.md for the full install and agent bootstrap workflow.
Execution Backpressure
The remote daemon protects itself with an execution slot queue:
Setting | Default | Description |
|
| Timeout for a running command |
|
| Maximum commands running at the same time |
|
| Maximum time a request waits for an execution slot |
When all execution slots are busy, new command requests wait in a queue. If the
queue wait exceeds EXEC_QUEUE_TIMEOUT_MS, the daemon returns HTTP 429 with
the current exec state:
{
"error": "Too many concurrent exec operations",
"exec": {
"running": 4,
"max": 4,
"queued": 1,
"timeoutMs": 120000,
"queueTimeoutMs": 15000
}
}remote_health also reports this exec state, which helps distinguish service
disconnects from an overloaded execution queue.
Quick Start
1. Clone the repository
git clone https://github.com/knownothing20/agentport.git
cd agentport2. Install dependencies
npm install2.1 First-Time Onboarding (Do This Order)
Confirm target host first (example:
192.168.31.183) and verify SSH.Finish local install (
git clone+npm install) before any remote deploy action.Detect remote state first (read-only): daemon dir,
.env, process, port3183.If remote daemon already exists: stay client-only (
deploy=false) and reuse/add token safely.If remote daemon is missing: one-time bootstrap only (
deploy=truefrom one operator machine).Use one unique token per
machine+softwareclient (win11-codex,macbook-workbuddy), never reuse one token across machines.If Dashboard is needed on this machine, ensure token is also in
ADMIN_TOKENS, then open:http://<host>:3183/?token=<admin-token>http://<host>:3183/dashboard?token=<admin-token>
Stability expectation: if native MCP is unstable or reports
Transport closed, continue withnode cli.js ... --route ssh.
2.2 Install on another computer
For a new computer or another AI desktop tool, see INSTALL_OTHER_MACHINE.md.
Short version:
git clone https://github.com/knownothing20/agentport.git
cd agentport
npm install
cp local/connections.json.example local/connections.json
npm run doctorThen copy your private local/connections.json, optional
local/agentport.json, and SSH keys from the old computer through a
secure channel. Update any absolute key paths for the new machine.
3. CLI Guided Setup (Recommended)
Use the interactive wizard to scan your SSH environment and guide you through configuration:
npm run setupThe wizard will:
Auto-scan your local SSH keys, config, and known_hosts
Display scan results and let you choose an authentication method
Guide you through entering server address and username
Test the SSH connection
Auto-save config to
local/connections.json
4. Manual Configuration (Alternative)
If you prefer not to use the guided wizard:
cp agentport.example.json local/agentport.json
# Edit local/agentport.json, fill in all variablesKey variables:
Variable | Description |
| Absolute path to the skill installation directory |
| Path to the target AI tool's MCP config file |
| Remote daemon address |
| Client authentication token |
| Remote daemon command concurrency limit, default |
| Queue wait timeout before HTTP |
5. Sync configuration
node sync.cjs6. Deploy remote daemon
# Create daemon directory on remote server
ssh USER@SERVER "mkdir -p /path/to/daemon"
# Upload server files to remote server
scp server/server.js server/agentport-manager.sh server/package.json USER@SERVER:/path/to/daemon/
# Upload generated .env config (created by sync.cjs in step 4)
scp local/server/.env USER@SERVER:/path/to/daemon/
# SSH to remote server
ssh USER@SERVER
cd /path/to/daemon
npm install
nohup bash agentport-manager.sh >> boot.log 2>&1 &7. Restart AI tool
After configuration takes effect, restart your AI tool to activate MCP registration.
8. Verify fallback mode
If your AI tool does not expose native remote_* MCP tools, verify the CLI
fallback:
npm run doctor
node cli.js healthAt least one configured connection should report "ok": true.
Supported AI Tools
AI Tool | MCP Config Path (Windows) | MCP Config Path (macOS/Linux) |
WorkBuddy |
|
|
Claude Desktop |
|
|
Cursor |
|
|
Windsurf |
|
|
Tools without custom MCP | Use | Use |
Tool List
Tool | Function |
| Scan local SSH environment (keys, config, known hosts) |
| Check remote service reachability |
| Read remote file (ETag cache) |
| Write remote file (auto clean CRLF/BOM) |
| Get file metadata |
| Search by glob pattern |
| Search remote file contents |
| Execute remote command |
| Execute multi-line script |
| Batch operations |
| Async execution |
| Query async task |
| Config hot reload |
| Connection diagnostics |
For detailed usage, see SKILL.md
Directory Structure
agentport/
|-- SKILL.md # Complete agent documentation
|-- README.md # This file (English)
|-- README_CN.md # Chinese documentation
|-- AGENT_GUIDE.md # Agent install and usage guide
|-- index.js # MCP server main program
|-- cli.js # CLI fallback for tools without native MCP
|-- package.json # Client dependencies
|-- agentport.example.json # Public config template
|-- sync.cjs # Variable sync script
|-- test.cjs # Test script
|-- LICENSE # MIT License
|-- CHANGELOG.md # Version changelog
|-- local/ # Local private config directory
| |-- config-guide.md # Configuration guide
| |-- connections.json.example # Multi-server config example
| `-- server/
| `-- .env # Server config generated by sync.cjs
`-- server/
|-- server.js # Remote daemon process
|-- agentport-manager.sh # Process guardian script
|-- setup-autostart-agentport.sh # Autostart config script
|-- dashboard.html # Web Dashboard UI
|-- .env.example # Server config template
`-- package.json # Server dependenciesConfiguration Files
File | Location | Description |
|
| Main configuration (copy from |
|
| Multi-server connections (optional, see |
|
| Server configuration (auto-generated by |
See local/config-guide.md for detailed configuration guide.
Dashboard
agentport provides a Web Dashboard for monitoring and management:
Enable Dashboard
Set in local/agentport.json:
{
"variables": {
"serverEnableDashboard": "true"
}
}Access Dashboard
After starting the service, visit:
http://your-server:3183/?token=<admin-token>http://your-server:3183/dashboard?token=<admin-token>
Dashboard uses admin auth. If you want one token to work for both API calls and
Dashboard on a client machine, add that token to both AUTH_TOKENS and
ADMIN_TOKENS in remote .env.
Dashboard Features
Feature | Description |
Service Status | View Node.js, dependencies, port, disk status |
Audit Statistics | View request stats, success rate, by type/client analysis |
Error Logs | View recent error logs |
Config Management | View and modify server config (requires Admin Token) |
Autostart Configuration
Method 1: Using setup-autostart-agentport.sh (Recommended)
# SSH to remote server
ssh USER@SERVER
cd /path/to/daemon
# Install autostart
bash setup-autostart-agentport.sh install
# Check status
bash setup-autostart-agentport.sh status
# Uninstall autostart
bash setup-autostart-agentport.sh uninstallMethod 2: Manual crontab configuration
# Edit crontab
crontab -e
# Add the following line
@reboot /path/to/daemon/agentport-manager.sh # agentport autostartMethod 3: Using systemd (Optional)
Create /etc/systemd/system/agentport.service:
[Unit]
Description=agentport daemon
After=network.target
[Service]
Type=simple
User=your-user
WorkingDirectory=/path/to/daemon
ExecStart=/bin/bash /path/to/daemon/agentport-manager.sh
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.targetThen enable:
sudo systemctl enable agentport
sudo systemctl start agentportSecurity Features
Workspace Isolation: File operations restricted within
WORKSPACE_ROOTToken Authentication: Client token + admin token
Path Restrictions: Prevent unauthorized access
Script Interpreter Whitelist: Only allow safe interpreters
Command Execution Limits: Configurable
ALLOW_BASH_EXECandALLOWED_COMMANDS
Version History
See CHANGELOG.md
License
MIT License - See LICENSE
Contributing
Issues and Pull Requests are welcome!
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
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/knownothing20/AgentPort'
If you have feedback or need assistance with the MCP directory API, please join our Discord server