Skip to main content
Glama
SuxyEE

bt-panel-mcp-server

by SuxyEE

bt-panel-mcp-server

让支持 MCP 的 AI 助手安全地操作宝塔面板(BT Panel)。它既提供适合日常运维的高层工具,也内置当前官方 API 文档中的完整操作目录:先检索接口定义,再以受控方式调用。

npm version npm downloads License: MIT

GitHub | npm | 宝塔官方 API 文档

能力概览

能力域

可以做什么

可用模式

站点诊断

列出站点、读取 Nginx/应用/面板日志、查询网站域名与备份

readonly / full

服务器观测

CPU、内存、磁盘、网络、系统负载与面板操作日志

readonly / full

文件与配置读取

读取任意指定文件、查看站点 Nginx 配置、按行数截取大日志

readonly / full

网站生命周期

创建、启停、删除站点,设置备注和到期时间,查询 PHP 版本和目录保护状态

full

域名与备份

绑定/解绑域名,列出、创建和删除网站备份

full

文件与 Nginx 写入

保存网站文件或 Nginx 配置

full

官方 API 全覆盖

查询并调用 369 个内置官方文档操作:系统、网站、数据库、文件、计划任务、FTP、SSL/ACME、SSH 安全、推送、项目部署、Java、Docker、反代等

目录 readonly;调用 full

默认是 readonly,不会暴露写入或管理操作。只有明确设置 BT_MODE=full 才会启用完整管理能力。

Related MCP server: cPanel MCP Server

官方 API 覆盖范围

内置目录来自宝塔官方 API 文档当前验证基线(面板 v11.7.0,文档提交 1f8efe62fa9757d71a7259b063bd63e3775e2e3c),共 369 个可执行操作。它不是把数百个工具同时塞入客户端,而是提供下面的稳定流程:

search_bt_api  ->  get_bt_api_operation  ->  call_bt_api
查找能力           核对参数和路由              在 full 模式执行

官方模块

代表能力点

系统管理

CPU/内存/磁盘/网络、服务启停、面板重启、升级、清理、守护任务

网站管理

站点创建与删除、SSL/HTTPS、重写、运行目录、流量限制、反代、重定向、安全响应头

数据库

数据库和用户、备份、导入状态、慢日志、错误日志、Binlog、MySQL 配置与状态

文件

文件和目录浏览、读写、复制、上传、解压、回收站、文件历史、权限、Webshell 扫描

计划任务与 FTP

计划任务增删改查、执行日志、日志切割、自动备份、FTP 用户和权限管理

证书与安全

SSL 订单和证书、ACME 申请与续签、DNS API、SSH 安全配置与安全扫描

项目与容器

项目部署、Java/Tomcat/Spring Boot、Docker 容器/镜像/网络/卷/应用商店、反向代理插件

其他

推送、后台任务、Web SSH 终端配置、密码管理、风险扫描

目录覆盖的是官方文档中的操作定义。目标面板是否能实际执行,仍取决于面板版本、插件是否安装、API 白名单、账号权限及参数有效性。

工具清单

readonly 模式

工具

作用

list_sites

列出宝塔已管理的网站,可按名称或域名搜索

get_nginx_logs

读取指定站点的 Nginx 访问/错误日志,支持自动路径探测

get_app_logs

查找和读取 Laravel、ThinkPHP、Java、Node.js 等常见应用日志

get_panel_logs

查询面板操作日志,用于审计与排障

get_system_status

汇总 CPU、内存、磁盘、网络和系统负载

read_file

读取服务器上的指定文件,可限制最后 N 行

get_nginx_config

读取站点的 Nginx 虚拟主机配置

list_domains

查询站点绑定的域名和端口

list_backups

查询站点备份记录

search_bt_api

搜索 369 个官方 API 操作,按模块、操作名或说明筛选

get_bt_api_operation

返回一个官方操作的 HTTP 方法、路径、固定 action、必填参数与说明

full 模式新增工具

工具

作用

风险提示

manage_sites

创建、启停、删除站点;设置备注、到期时间

删除可选地连同目录、数据库、FTP 一起删除

manage_domains

绑定或解绑域名

影响站点可访问域名

manage_backups

创建或删除网站备份

删除后未必可恢复

save_nginx_config

覆盖站点 Nginx 配置

保存后立即影响站点服务

save_file

覆盖服务器上指定文件

可能影响应用运行或泄露敏感内容

call_bt_api

执行内置官方目录中的任意操作

包含删除、重启、升级、证书、容器和数据库等高风险操作

BT_API_KEYrequest_timerequest_token 与目录规定的 action 不接受 MCP 调用方传入,均由服务端生成或注入。

快速开始

1. 开启宝塔 API

登录宝塔面板,进入「设置」->「常用设置」:

宝塔面板设置截图

  1. 记下面板端口,例如 35335

  2. 记下安全入口;例如 /a5cbfadd。它需要放进 BT_PANEL_URL,但 API 请求会自动从站点根路径发起。

  3. 打开 API 接口,复制接口密钥,并将 MCP 运行主机 IP 加入 API 白名单。

2. 配置 MCP 客户端

推荐通过 npx 运行:

{
  "mcpServers": {
    "bt-panel": {
      "command": "npx",
      "args": ["-y", "bt-panel-mcp-server"],
      "env": {
        "BT_PANEL_URL": "https://服务器IP:面板端口/安全入口",
        "BT_API_KEY": "你的API密钥",
        "BT_MODE": "readonly"
      }
    }
  }
}

本地源码运行时,把 args 改为本项目 dist/index.js 的绝对路径。配置文件位置因 Cursor、Claude Desktop、Windsurf、Cherry Studio、Cline 等客户端而不同,请使用各客户端的 MCP 设置入口。

3. 先做只读连通性检查

重启 MCP 客户端后,先让 AI 执行:

列出宝塔面板的所有网站,并告诉我当前服务器 CPU、内存和磁盘使用情况。

成功后再按需把 BT_MODE 改为 full 并重启客户端。不要在不理解影响范围时直接要求 AI 删除、升级或重启服务。

环境变量

变量

必填

默认值

说明

BT_PANEL_URL

-

面板地址,例如 https://192.0.2.10:35335/a5cbfadd;支持端口和安全入口

BT_API_KEY

-

宝塔 API 接口密钥;只放在 MCP 服务器环境变量中

BT_MODE

readonly

readonly 仅开放查询/目录工具;full 开放所有管理和官方 API 调用

BT_ALLOW_INSECURE_TLS

false

仅在确认目标可信且无法配置有效证书时设为 true;生产环境应保持 TLS 校验开启

安全入口、API 密钥、密码、Token、证书私钥和数据库凭据都不应写入自然语言提示词、URL、浏览器代码或 Git 仓库。

使用官方 API 目录

查询一个能力

例如让 AI 查找 Docker 容器、数据库或证书操作:

搜索宝塔官方 API 中与 Docker 容器列表有关的操作,列出可用 ID 和必填参数。

也可以直接调用 search_bt_api

{ "query": "容器列表", "module": "docker", "include_parameters": false }

获取准确参数

对要执行的操作先调用 get_bt_api_operation

{ "operation": "database/GetDatabasesList" }

返回结果会包含请求方法、路径、固定 action、必填参数、类型和官方说明。不要根据猜测拼参数。

执行操作

确认目的和参数后,在 BT_MODE=full 下调用 call_bt_api

{
  "operation": "database/GetDatabasesList",
  "params": {
    "p": 1,
    "limit": 20,
    "sid": 0
  }
}

对于带密码、私钥、DNS API Key 或容器配置的操作,params 仍可能包含敏感数据;仅在用户已明确授权向其自己的宝塔面板发送这些值时执行。

常见工作流

故障排查

1. 列出站点并确认目标名称
2. 读取最近 200 行 Nginx error 日志
3. 读取应用日志,比较同一时间段的异常
4. 查询系统负载、内存、磁盘和网络
5. 只在原因明确后修改配置;修改前先读取原文件并保留回滚内容

可直接对 AI 说:

排查 example.com 最近的 502:先看 Nginx 错误日志、再看应用日志和系统负载;只报告证据,不修改任何配置。

建站和内容发布

1. 用 manage_sites 创建站点和目录
2. 用 list_domains / manage_domains 核对域名绑定
3. 用 save_file 写入 index.html 或应用配置
4. 用 get_nginx_config 复核虚拟主机配置
5. 在公网或目标网络访问站点,确认 HTTP 状态、证书和内容

数据库、证书、Docker 或计划任务

1. search_bt_api 找到准确的官方操作
2. get_bt_api_operation 读取参数、前置条件与影响范围
3. full 模式下 call_bt_api 执行
4. 再用对应查询操作验证最终状态、日志或任务结果

涉及删除、覆盖、重启、升级、清理 Binlog、证书替换、容器删除或数据库用户权限变更时,应先说明目标对象、影响范围和回滚方式,再执行。

边界与安全模型

  • readonly 不提供写入和官方 API 调用,但 read_file 仍能读取指定文件;不要读取无关的 .env、私钥或凭据文件。

  • full 是权限开关,不是自动授权。执行破坏性操作前应取得针对具体目标的明确许可。

  • call_bt_api 只允许调用内置官方目录中的操作,不接受任意 URL、任意 HTTP 方法或用户自定义 action

  • API 目录来自文档,不是目标主机的能力探测。某些 Docker、Java、反向代理、SSL 或商业插件接口在未安装时会失败。

  • HTTPS 默认验证服务端证书。自签名证书需要显式设置 BT_ALLOW_INSECURE_TLS=true,此时应确保访问网络可信。

  • API 接口可能随宝塔面板版本变更;每次面板大版本升级后,应先在测试环境验证关键调用。

常见问题

提示 Missing required environment variables

检查 MCP 进程环境中是否同时有 BT_PANEL_URLBT_API_KEY,修改后完全重启客户端。

请求超时、403 或 API 白名单错误

确认面板地址/端口正确,MCP 主机 IP 已加入 API 白名单,且防火墙、安全组允许访问面板端口。安全入口需要写入 BT_PANEL_URL

HTTPS 连接报证书错误

优先为面板配置可信证书。只有在确认内网链路和目标身份可信时才设置 BT_ALLOW_INSECURE_TLS=true

官方操作执行失败

先用 get_bt_api_operation 重查参数,再确认面板版本、对应插件、账户权限和 API 白名单。文档目录覆盖不保证旧版本面板或未安装插件支持该操作。

full 模式有什么风险

它可以修改站点、配置、文件、数据库、证书、容器和系统服务。对生产环境应保持备份、先读取现状、执行后独立验证,并保留回滚内容。

本地开发与目录更新

npm ci
npm run build
node dist/index.js

更新官方目录时,先获取 cnb.cool/btpanel/docs,再运行:

$env:BT_OFFICIAL_DOCS_DIR = 'D:\src\btpanel-docs'
$env:BT_OFFICIAL_DOCS_REVISION = (git -C $env:BT_OFFICIAL_DOCS_DIR rev-parse HEAD)
npm run generate:api-catalog
npm run build

生成后应检查操作数量、抽查 GET/POST 路由和必填参数,再在目标面板或测试面板验证重点插件接口。

技术栈

  • TypeScript

  • Node.js >= 20

  • @modelcontextprotocol/sdk

  • 宝塔官方 API 文档目录生成器

License

MIT

Available Tools

9 tools
get_app_logsA

【应用层日志 — 业务/程序运行记录】读取后端应用程序自身输出的业务日志。记录的是代码运行过程中的 INFO/WARN/ERROR 信息:SQL 报错、接口异常、业务逻辑错误、堆栈跟踪等。适合排查:业务逻辑 Bug、数据库异常、第三方接口报错、程序崩溃、性能慢查询等。注意:此工具【不包含】HTTP 请求记录,那些属于 Nginx 层,应使用 get_nginx_logs。支持框架:Laravel、ThinkPHP、Java、Node.js,默认 auto 自动探测所有常见路径。

ParametersJSON Schema
NameRequiredDescriptionDefault
site_nameNo网站名称(域名),工具会自动探测网站根目录下常见框架的日志路径(Laravel/ThinkPHP/Java/Node.js 等)。与 log_path 二选一,优先自动探测。
frameworkNo应用框架类型,默认 auto(自动逐一探测所有常见路径)。log_path 已填时忽略此参数auto
last_linesNo读取最后 N 行,默认 200,最大 2000
log_pathNo手动指定日志文件绝对路径,如 /www/wwwroot/example.com/storage/logs/laravel.log。工具会先自动探测,探测失败后才需要填此参数。

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses auto-detection of log paths, fallback to manual path, and supported frameworks. However, it does not mention any side effects or authentication needs, but for a read-only tool this is acceptable. Clarity on limitations (no HTTP logs) adds transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single coherent paragraph that front-loads the purpose, then lists use cases, exclusions, and framework support. While comprehensive, it could be slightly more concise; however, every sentence contributes context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers purpose, usage, and parameters well, but without an output schema, it lacks details about the return format (e.g., raw log lines, timestamps). It also doesn't mention file size limits or handling of large files. This gap reduces completeness for a tool with four parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, but the description adds significant value: explaining the relationship between site_name and log_path, the framework enum behavior, and the fallback logic. This goes beyond the schema and aids correct invocation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool reads application logs (business/program records) and explicitly distinguishes from get_nginx_logs by noting it does not include HTTP request logs. The verb '读取' (read) and resource '业务日志' (business logs) are specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit guidance on when to use (troubleshooting SQL errors, interface exceptions, business logic errors, etc.) and when not to (HTTP logs, which should use get_nginx_logs). This provides clear context for tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_nginx_configC

读取指定网站的 Nginx 配置文件(/www/server/panel/vhost/nginx/<域名>.conf)。适合查看反代、SSL、location 规则等配置。只读,不修改。

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesget:读取 Nginx 配置文件内容 | save:保存修改后的配置内容(谨慎操作,保存后即生效)
site_nameYes网站名称(主域名),对应 /www/server/panel/vhost/nginx/<site_name>.conf
contentNo【save】新的配置文件内容,完整替换原文件

TDQS

C2.9/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description states '只读,不修改' (read-only), but the input schema allows a 'save' action that modifies the config file. This is a direct contradiction. Annotations are absent, so the description carries full burden but is misleading.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise (two short sentences) and front-loaded with the core purpose. However, it omits the save functionality, which makes it incomplete; but for what it covers, it is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, and description does not explain return values or error conditions. More critically, it fails to describe the save action, leaving the tool's full behavior undocumented. Schema compensates for parameters but not for behavioral gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema coverage is 100%, so baseline is 3. The description adds no additional meaning beyond schema; it does not elaborate on parameters or their usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it reads Nginx config for a specific site, and specifies the file path. It distinguishes from siblings by being specific to Nginx config. However, the claim '只读,不修改' (read-only) contradicts the schema which includes a 'save' action, reducing clarity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description says it is suitable for viewing reverse proxy, SSL, location rules, implying when to use. It does not mention when not to use or alternatives, but siblings are distinct (logs, system status, etc.), providing implicit context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_nginx_logsA

【Nginx 层日志 — HTTP 请求记录】读取 Nginx 的访问日志(access)或错误日志(error)。记录的是每一条 HTTP 请求:IP、时间、URL、状态码(200/404/499/502)、响应大小、来源页面、UserAgent。适合排查:HTTP 状态码异常、流量来源分析、爬虫/攻击识别、Nginx 配置问题、静态资源 404 等。注意:此工具【不包含】任何业务逻辑、数据库、接口报错等应用层信息。工具会自动在 /www/wwwlogs/ 目录探测日志路径,无需手动填写。

ParametersJSON Schema
NameRequiredDescriptionDefault
site_nameYes网站域名,如 fish.o2oe.net。工具会自动在 /www/wwwlogs/ 下探测日志文件,无需手动指定路径。
log_typeNo日志类型:access(Nginx 访问日志,记录每条 HTTP 请求)或 error(Nginx 错误日志,记录文件缺失/配置错误等),默认 accessaccess
last_linesNo读取最后 N 行,默认 200,最大 2000
log_pathNo手动指定日志文件绝对路径(可选)。工具会先自动探测,自动探测失败后才需要填此参数。

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so description carries full burden. It discloses automatic log path detection ('自动在 /www/wwwlogs/ 目录探测日志路径'), lists recorded fields, and clarifies scope (Nginx layer only). The behavior is clearly described without contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than necessary but well-structured: starts with purpose and fields, then use cases, then limitations and auto-detection. It could be more concise by removing repetition from schema descriptions, but it remains clear and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 4 parameters, no output schema, and siblings focusing on other log types, the description adequately explains what logs contain (fields listed), when to use, and limitations. It does not detail the exact return format, but the listed fields provide sufficient context. Lacks mention of error log message structure, but overall complete for typical use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, baseline 3. The description adds value by explaining auto-detection of log paths and providing context (e.g., '无需手动指定路径') beyond schema descriptions. However, some schema info is repeated (e.g., default values). The added context justifies a score of 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it reads Nginx access/error logs and lists specific fields (IP, time, URL, status code, etc.). It explicitly distinguishes from application logs and alternative siblings like get_app_logs by stating it does not include business logic or database info. The verb '读取' and resource 'Nginx层日志' are specific and non-tautological.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit use cases: HTTP status code anomalies, traffic analysis, crawler/attack identification, Nginx config issues, static resource 404s. It also clearly states what the tool does not cover ('不包含任何业务逻辑、数据库、接口报错等应用层信息'), implicitly guiding users to get_app_logs for application-level issues. This is explicit when-to-use and when-not-to-use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_panel_logsA

读取宝塔面板自身的操作日志,包括登录记录、配置变更、安装/卸载软件等操作历史。适合审计谁在什么时候操作了面板。

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo返回最近 N 条面板操作日志,默认 30,最大 100

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description indicates a read-only operation (reading logs) without contradictions, as there are no annotations. It provides some behavioral context (examples of log types) but does not disclose potential side effects, permissions, or limitations beyond that.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence in Chinese, efficiently conveying purpose and examples. It is well front-loaded but could benefit from slightly more structure, such as separating use case from examples.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter and no output schema, the description covers essential information: what logs are retrieved and an auditing use case. The sibling tools provide context, making the description fairly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides a complete description of the 'limit' parameter, including default and range. The description does not add additional meaning beyond what the schema conveys, so a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it reads Baota panel operation logs, listing specific examples like login records, configuration changes, and software installations. This precisely identifies the tool's function and distinguishes it from sibling tools like get_app_logs or get_nginx_logs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It mentions the tool is suitable for auditing who operated the panel and when, providing a clear use case. However, it does not explicitly state when not to use it or compare it to alternatives, leaving some inference to the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_system_statusA

获取服务器实时状态:CPU 使用率、内存占用、磁盘分区使用情况、网络实时流量、系统负载。适合排查性能问题或确认服务器资源是否充足。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the tool is real-time and lists returned metrics, but does not mention auth requirements, rate limits, or any potential side effects. The disclosure is adequate for a simple read-only tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with purpose and followed by usage context. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no parameters and no output schema, the description sufficiently explains what it returns (CPU, memory, disk, network, load) and its use case. No missing information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so schema coverage is 100%. The description adds value by listing the specific metrics returned, which is not in the schema. Baseline 4 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves real-time server status listing specific metrics (CPU, memory, disk, network, system load). It distinguishes itself from sibling tools that handle logs or configs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states it is suitable for troubleshooting performance issues or confirming resource sufficiency, providing clear context for when to use it. It does not explicitly mention when not to use, but the context is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_backupsD

查询网站的备份列表,包括备份 ID、文件名、创建时间。

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYeslist:查看网站备份列表 | create:立即备份网站 | delete:删除某个备份
site_nameYes网站名称(主域名)
backup_idNo【delete】备份记录 ID,从 list 结果中获取

TDQS

D1.7/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided. The description fails to disclose that the tool can create and delete backups, only describing the list behavior. This is a significant omission and potentially misleading for an AI agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, but it is underspecified. It omits crucial information about the other actions, making it not appropriately sized for the tool's actual functionality.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, no annotations, and the description only covers one of the three possible operations. The tool requires more context to be used correctly, such as when to use each action and what the response looks like.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already provides detailed descriptions for all parameters including the action enum. The description adds no additional semantic value beyond what is in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description only mentions querying the backup list, but the input schema includes 'create' and 'delete' actions. This is misleading as the tool performs multiple operations. The description does not accurately represent the full purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use which action (list, create, delete) or how to choose among them. No alternatives mentioned despite sibling tools being available.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_domainsC

查询网站绑定的所有域名列表,包括域名、端口、添加时间。

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYeslist:查询网站域名列表 | add:绑定新域名 | delete:删除域名绑定
site_nameYes网站名称(主域名),用于定位网站
domainNo【add/delete】要操作的域名,如 www.example.com
portNo【add/delete】域名端口,默认 80

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description fails to disclose behavioral traits such as side effects of add/delete actions, required site_name validity, or that the tool modifies state beyond querying.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, which is concise, but it omits the add/delete functionality entirely, making it incomplete. The sentence earns its place only partially by listing output attributes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 4 parameters and 2 required, with no output schema and no annotations, the description should explain the different action modes and prerequisites. It only covers the 'list' case, leaving add/delete behavior underspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers all parameters with descriptions (100% coverage). The description adds value by specifying output fields (domain, port, addition time) not present in the schema, though it does not elaborate on the action parameter beyond its enum.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'query list of all domains bound to the website' which matches the tool name 'list_domains', but the input schema reveals the tool can also add and delete domains, which is not mentioned. This creates ambiguity about the tool's full purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus sibling tools (e.g., list_sites, get_nginx_config). The action parameter provides options but no contextual advice on appropriate usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_sitesA

列出宝塔面板中所有托管的网站,包括域名、根目录、运行状态。查询日志前先用此工具确认网站名称和路径。

ParametersJSON Schema
NameRequiredDescriptionDefault
searchNo按网站名称或域名模糊搜索,不填则返回所有网站

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses the return content (domain, root directory, running status). Since no annotations are provided, the description carries the burden, and it adequately describes what the tool does. However, it does not mention any potential side effects or limitations, though for a read-only list tool this is sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise: two sentences, no filler. The first sentence states purpose and output, the second gives usage guidance. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no output schema, the description adequately specifies the return fields (domain, root directory, running status). The search parameter behavior is fully explained. For a simple list tool with one optional parameter, the description is complete and actionable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema describes the 'search' parameter as '按网站名称或域名模糊搜索' (fuzzy search by name or domain). The description adds '不填则返回所有网站' (if left blank, returns all sites), which clarifies default behavior beyond the schema. With 100% schema description coverage, the baseline is 3, and the added detail justifies a 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: '列出宝塔面板中所有托管的网站,包括域名、根目录、运行状态。' (List all hosted websites in BT panel, including domain, root directory, running status.) It distinguishes from siblings like list_domains by specifying the included fields.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidance: '查询日志前先用此工具确认网站名称和路径。' (Before querying logs, use this tool to confirm website name and path.) This tells the agent when to use this tool, adding contextual value.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_fileA

读取服务器上任意文件内容(只读)。适合查看 Nginx 配置文件、PHP 配置、应用配置文件、自定义日志路径等。建议配合 last_lines 参数避免读取超大文件。

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes服务器上文件的绝对路径,如 /etc/nginx/nginx.conf
last_linesNo只读取最后 N 行。不填则返回全部内容(注意大文件请务必填此参数)

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description discloses it is read-only and warns about large files, but does not cover other behavioral aspects like permissions, error handling, or file size limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with two sentences that front-load the purpose, examples, and a key recommendation—no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is fairly complete given the simple tool: it covers purpose, usage examples, and a warning. However, it lacks details about error handling or return format, and could better address sibling tool differentiation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for both parameters; the tool description adds a recommendation to use last_lines, but the schema already fully explains parameter meanings, so minimal added value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it reads any file content (read-only) and provides specific use cases like config files and log paths, distinguishing from sibling tools that focus on specific logs or listings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for when to use (viewing config files, custom logs) and recommends using the last_lines parameter for large files, but does not explicitly state when not to use or mention alternatives among siblings.

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.

  1. 9 tool updatesv0.1.0
    • First observedget_app_logs
    • First observedget_nginx_config
    • First observedget_nginx_logs
    • First observedget_panel_logs
    • First observedget_system_status
    • First observedlist_backups
    • First observedlist_domains
    • First observedlist_sites
    • First observedread_file

TDQS

A3.5/5.0

Scored across 9 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: app logs, nginx logs, panel logs, nginx config, system status, backups list, domains list, sites list, and file reading. No overlapping functionality; descriptions explicitly differentiate between log types.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern in snake_case: get_app_logs, get_nginx_config, get_nginx_logs, get_panel_logs, get_system_status, list_backups, list_domains, list_sites, read_file. Naming is predictable and uniform.

Tool Count5/5

9 tools is well-scoped for a BT panel management server, covering logs, config, status, and listings. It is neither too few nor too many, and each tool serves a necessary function without redundancy.

Completeness4/5

The tool set thoroughly covers diagnostic and monitoring needs (logs, status, config, file reading, listings). However, it lacks write operations like creating or modifying sites, which limits full lifecycle management. The set is complete for read-only scenarios.

Maintenance

ActivitySlowing
ResponsivenessNo issues

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

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables AI assistants to discover, install, configure, and manage MCP servers through natural language conversation, automating tedious manual setup across multiple clients.
    11
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    MCP server for EasyPanel that enables AI agents to manage servers, projects, services, databases, and domains via 40 curated tools or raw tRPC access to all 347 API procedures.
    42
    29
    4
    MIT