Agent-feels-local SSH orchestration MCP server — persistent bash, hash-protected editing, SFTP, tunnels, multi-host orchestration over AsyncSSH
If you already use Portal, the portal mcp server is the piece that lets your assistant work with it directly. Agent-feels-local SSH orchestration MCP server — persistent bash, hash-protected editing, SFTP, tunnels, multi-host orchestration over AsyncSSH.
MCP client 经 stdio(或可选 HTTP)连到 server;14 个工具先过安全 gate + 审计,SSH 工具再走进程内 asyncssh 连接池(跨工具复用同一条 TCP,每 host 可开多条),local_exec / 控制面工具不走 SSH。
The toolset is worth reading before you wire it up, because it tells you what the integration is really for:
agent — first 的精简工具面**:action / mode 字段合并语义重复的入口,每个工具只提供一条 bash 难以廉价合成的保证,减少 agent 选工具的歧义。工具 schema(name + description + inputSchema)合计约占 ~9k tokens(≈remote_transfer — SFTP 增量短路(size+mtime 或 sha256)+ 进度心跳防 idle 超时 + 批量单点容错remote_job — 后台 submit/poll/cancel/list,给 agent"丢后台、中途思考、随时打断"的能力Client — server stderr 去向portal-mcp-server on PyPI is all you need. Most clients run it directly, so configuration is a few lines and a restart.
Configuration is passed through the environment: GITHUB_TOKEN. Treat anything key-shaped as a real credential — scope it to the minimum the server needs, and rotate it if it ever lands in a shared config.
Plenty of developer tooling servers cover similar ground. The differences that matter in practice are scope of access and how much setup stands between you and a working tool call. Portal's toolset — agent, remote_transfer, remote_job and 1 more — is a fair guide to whether it matches your workflow. It is maintained by TMYTiMidlY; worth a glance at recent repository activity before you build anything load-bearing on it.
We check each listing at SyncDev against the project's documentation before it goes live — if something here drifts out of date, it is a bug worth reporting.
| Tool | What it does |
|---|---|
| agent | first 的精简工具面**:action / mode 字段合并语义重复的入口,每个工具只提供一条 bash 难以廉价合成的保证,减少 agent 选工具的歧义。工具 schema(name + description + inputSchema)合计约占 **~9k tokens**(≈ 200k 上下文窗口的 **~4–5%**;tiktoken o200k_base 实测约 8.8k)。 |
| remote_transfer | SFTP 增量短路(size+mtime 或 sha256)+ 进度心跳防 idle 超时 + 批量单点容错 |
| remote_job | 后台 submit/poll/cancel/list,给 agent"丢后台、中途思考、随时打断"的能力 |
| Client | server stderr 去向 |
{
"mcpServers": {
"portal": {
"command": "uvx",
"args": ["portal-mcp-server"],
"env": {
"GITHUB_TOKEN": "your-value"
}
}
}
}Add to claude_desktop_config.json, then restart Claude Desktop.
| Variable | Description | Required |
|---|---|---|
| GITHUB_TOKEN | Credential the server authenticates with. | Yes |
Kill hallucinated APIs — version-accurate, up-to-date library documentation injected straight into context.
Microsoft's official browser automation server — drive a real browser through the accessibility tree, no screenshots needed.
GitHub's official server — repos, issues, pull requests, Actions and code security, straight from your assistant.
Issue tracking at the speed of conversation — Linear's official hosted server with OAuth and zero install.
Local repository surgery — status, diffs, commits, branches and history for any repo on disk.
Timezone sanity for AI — current time anywhere and correct conversions, without the model doing date math.