termalin-web

Run commands and read/write files on your servers over Termalin's keyless tunnels (hosted MCP).

我该使用它吗

质量与安全性

A
描述质量
100%
模式完整度
90%
命名质量
83%
投毒风险
100%
权限匹配度
100%
协议合规性
100%

基于对工具定义和协议合规性的自动分析。

上下文开销

~1,533token 数(工具定义)
~1.2 KB典型响应大小
对注意力有中等影响(占 128k 上下文窗口的 1.20%)

这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。

安装

一键安装

将以下内容添加到你的 `claude_desktop_config.json` 文件中:

{
  "mcpServers": {
    "termalin-web": {
      "url": "https://termal.in/api/v1/mcp"
    }
  }
}

远程端点

https://termal.in/api/v1/mcpstreamable-http

它能做什么

工具清单

工具(8)

🟢 只读🟡 写入🔴 删除⚪ 未知
🟢hosts_list

List the servers reachable through Termalin (your tunnel agents). Returns id, name, whether the server is online, and the default login user. Use the id with ssh_exec.

输入模式

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
🟢generate_password(length)

Generate a strong random password — handy when creating a user or setting a password on a server. Returns the password only; nothing is stored.

输入模式

{
  "type": "object",
  "properties": {
    "length": {
      "type": "integer",
      "description": "length (default 20, 8-128)"
    }
  },
  "additionalProperties": false
}
🔴ssh_exec(host, command, username, timeoutSeconds)

Run a single shell command on one of your servers and return its combined output and exit code. Runs keyless over Termalin's tunnel — no SSH key, and the server needs no open inbound port. Each call is a fresh shell (cd does not persist — chain with &&). Keep a call under about 90 seconds: for anything longer, start it in the background (nohup … > log 2>&1 &) and check on it with later calls.

输入模式

{
  "type": "object",
  "properties": {
    "host": {
      "type": "string",
      "description": "Server id from hosts_list"
    },
    "command": {
      "type": "string",
      "description": "Shell command to execute"
    },
    "username": {
      "type": "string",
      "description": "Login user (defaults to the tunnel's user, else root)"
    },
    "timeoutSeconds": {
      "type": "number",
      "description": "Max seconds to wait (default 60). Calls longer than about 90 seconds are usually cut off by the network before they answer — run long jobs in the background instead."
    }
  },
  "required": [
    "host",
    "command"
  ],
  "additionalProperties": false
}
🟢sftp_list(host, path, username)

List a directory on one of your servers over SFTP. Returns each entry's name, whether it's a directory, size and modified time. Runs keyless over Termalin's tunnel, like ssh_exec.

输入模式

{
  "type": "object",
  "properties": {
    "host": {
      "type": "string",
      "description": "Server id from hosts_list"
    },
    "path": {
      "type": "string",
      "description": "Directory to list (default the login home, \".\")"
    },
    "username": {
      "type": "string",
      "description": "Login user (defaults to the tunnel's user, else root)"
    }
  },
  "required": [
    "host"
  ],
  "additionalProperties": false
}
🟢sftp_read(host, path, username)

Read a text file from one of your servers over SFTP and return its contents. Files over 512 KB or non-text (binary) files are refused — use ssh_exec (e.g. sed/tail) for those.

输入模式

{
  "type": "object",
  "properties": {
    "host": {
      "type": "string",
      "description": "Server id from hosts_list"
    },
    "path": {
      "type": "string",
      "description": "Absolute or home-relative file path"
    },
    "username": {
      "type": "string",
      "description": "Login user (defaults to the tunnel's user, else root)"
    }
  },
  "required": [
    "host",
    "path"
  ],
  "additionalProperties": false
}
🔴sftp_write(host, path, content, username)

Create or overwrite a text file on one of your servers over SFTP. 'content' is written as UTF-8. Capped at 512 KB; for binary uploads use a terminal/scp instead.

输入模式

{
  "type": "object",
  "properties": {
    "host": {
      "type": "string",
      "description": "Server id from hosts_list"
    },
    "path": {
      "type": "string",
      "description": "Destination file path (created or overwritten)"
    },
    "content": {
      "type": "string",
      "description": "UTF-8 text to write"
    },
    "username": {
      "type": "string",
      "description": "Login user (defaults to the tunnel's user, else root)"
    }
  },
  "required": [
    "host",
    "path",
    "content"
  ],
  "additionalProperties": false
}
🔴data_query(host, engine, query, database, username, ...)

Run a database query on one of your servers — passwordless. It executes the engine's own client on the host over Termalin's keyless tunnel, using the database's local trust (Postgres peer auth via `sudo -u postgres`, MySQL/MariaDB unix-socket via `sudo mysql`, redis-cli, mongosh, sqlite3) — so no database password is needed or stored anywhere. Read-only by default: only SELECT/SHOW-style statements run unless allowWrites is set (full-access keys only). SQL engines return CSV/TSV with a header. For MongoDB pass a shell expression, e.g. db.products.find({}).limit(20).toArray().

输入模式

{
  "type": "object",
  "properties": {
    "host": {
      "type": "string",
      "description": "Server id from hosts_list"
    },
    "engine": {
      "type": "string",
      "enum": [
        "postgres",
        "mysql",
        "mariadb",
        "redis",
        "mongodb",
        "sqlite"
      ],
      "description": "Database engine on that server (default postgres)"
    },
    "query": {
      "type": "string",
      "description": "The statement / command / expression to run"
    },
    "database": {
      "type": "string",
      "description": "Database name (for sqlite: the .db file path)"
    },
    "username": {
      "type": "string",
      "description": "SSH login user (defaults to the tunnel's user, else root)"
    },
    "allowWrites": {
      "type": "boolean",
      "description": "Allow a non-read statement (full-access keys only; default false)"
    },
    "timeoutSeconds": {
      "type": "number",
      "description": "Max seconds to wait (default 60). Calls longer than about 90 seconds are usually cut off by the network before they answer — run long jobs in the background instead."
    }
  },
  "required": [
    "host",
    "query"
  ],
  "additionalProperties": false
}
🟢data_tables(host, engine, database, username)

List the tables / collections / keys of a database on one of your servers — passwordless, over the same local-client path as data_query.

输入模式

{
  "type": "object",
  "properties": {
    "host": {
      "type": "string",
      "description": "Server id from hosts_list"
    },
    "engine": {
      "type": "string",
      "enum": [
        "postgres",
        "mysql",
        "mariadb",
        "redis",
        "mongodb",
        "sqlite"
      ],
      "description": "Database engine on that server (default postgres)"
    },
    "database": {
      "type": "string",
      "description": "Database name (for sqlite: the .db file path)"
    },
    "username": {
      "type": "string",
      "description": "SSH login user (defaults to the tunnel's user, else root)"
    }
  },
  "required": [
    "host"
  ],
  "additionalProperties": false
}

社区

评价此服务器

证据

最近观测

已验证未记录版本8 个工具
已验证未记录版本8 个工具
已验证未记录版本8 个工具