cloudflare-workspace-mcp
Provides tools for managing Cloudflare resources (Pages, D1, KV, R2, Zones, Workers) via REST API and deploying Pages projects using the wrangler CLI.
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., "@cloudflare-workspace-mcpshow me my Cloudflare Pages and D1 databases"
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.
🌊 Cloudflare Workspace MCP
一句话:让手机上的 AI 助手拥有真实的命令行工作区,并直接管理你的 Cloudflare 账户(Pages / D1 / KV / R2)。
这是干什么的?
让手机上的 AI 助手能真正"动手干活"。
普通的 MCP 服务器只给 AI 几个固定函数(查天气、发邮件之类)。这个项目给 AI 的是一个真实的命令行工作区,外加 Cloudflare 账户管理能力。
主要面向安卓端的 AI 助手(RikkaHub、Coomi 等)。在电脑上,AI 助手通常能直接调用本机终端,不太需要这个项目;但在 Android 上 AI 没有独立运行环境,本项目用 proot 沙箱补上——给手机里的 AI 一个完整的 Debian 环境。
场景 | 说明 |
让 AI 写代码并运行 | 手机上让 AI 自己 clone 项目、装依赖、跑命令、看输出 |
部署到 Cloudflare | 手机上让 AI 直接执行 |
管理 Cloudflare 资源 | 一句话让 AI 查 Pages / D1 / KV / R2,不用登录控制台 |
查/改手机上的文件 | AI 在工作区内读写文件,路径限制在工作区内 |
Related MCP server: cloudflare-mcp-pro
🚀 30 秒上手(手机 + AI,全自动)
只需要 3 步:
步骤 | 操作 |
1 | 下载本项目 ZIP(GitHub 页面 → Code → Download ZIP) |
2 | 把 ZIP 丢给手机上的 AI 助手(RikkaHub / Coomi 等),粘贴下面这句提示词: |
3 | 等 AI 装完,把 |
📋 复制这段提示词给 AI
请把 cloudflare-workspace-mcp.zip 解压到当前工作区,然后运行 bash install.sh。
如果安装中遇到问题,根据报错自动修复后重试,直到 install.sh 自检全部通过。
完成后告诉我:
1. MCP 客户端配置方法(run.sh 的绝对路径)
2. 需要我手动填写的 Cloudflare 凭据(.env 文件路径和获取地址)
全程自动执行,不要让我手动操作。🤖 AI 会自动做什么?
步骤 | AI 做的事 |
1 | 解压 ZIP 到工作区 |
2 | 运行 |
3 | 自检所有依赖,缺什么当场补装 |
4 | 输出 MCP 配置 + 提示你填凭据 |
💡 你唯一要手动做的:在
.env里填 Cloudflare API Token 和 Account ID(这是你的私有密钥,AI 无法替你生成)。install.sh 会提前创建好模板,不会等你用到 Cloudflare 功能才发现环境不完整。
手动安装(不想用 AI?)
# 1. 解压后进入目录,一键安装(自动装依赖 + 生成 run.sh + .env 模板 + 自检)
bash install.sh
# 2. 编辑工作区 .env 填入凭据
# ~/workspace/.env
# 3. 把 run.sh 接入 MCP 客户端MCP 客户端配置(mcpServers 里加一条):
{
"mcpServers": {
"cf-workspace": {
"command": "/绝对路径/cloudflare-workspace-mcp/run.sh",
"type": "stdio"
}
}
}和别的 MCP 有什么不一样?
对比项 | 本项目 | 官方 Cloudflare MCP | 社区远程 Workers MCP |
本地 shell 工作区 | ✅ 有(local / proot 双后端) | ❌ | ❌ |
Android 支持(无 root) | ✅ proot 沙箱 | ❌ | ❌ |
Cloudflare 管理 | ✅ Pages / D1 / KV / R2 | ✅ | ✅ |
凭据在哪 | 🔒 本机 | 远程服务 | 远程服务 |
可扩展性 | 完整 shell,想装什么装什么 | 只有预置函数 | 只有预置函数 |
部署方式 | 本地 | 远程 API | 远程 API |
核心区别:别的项目给 AI 的是"专用工具包",这个项目给 AI 的是"整间办公室"——而且是本地的,凭据不出设备。
Android / proot 后端
在 Android(Termux / RikkaHub 等)上,无需 root 即可获得完整 Debian 环境:
# 1. 准备 proot 二进制(来自 Termux 的 proot 或 RikkaHub 内置):
# libproot_exec.so + libproot_loader.so → ~/proot-bin/
# 2. 准备 Debian rootfs(约 1GB)→ ~/debian-fs/
# 3. install.sh 自动检测:存在 proot 则用 proot 后端;否则用 localCFMCP_BACKEND 取值:
值 | 行为 |
| 已运行在沙箱内(如 RikkaHub 工作区即 rootfs)→ 自动用 local,避免沙箱嵌套;否则检测到 proot 二进制则用 proot |
| 直接本机 shell |
| 强制 proot 沙箱 |
RikkaHub 用户注意:RikkaHub 的工作区本身就是 rootfs(已处于沙箱内),不要再套一层 proot——
auto会自动检测并回落 local。启动日志打印inSandbox=true/false供排查。
依赖说明:
cloudflare_api/cloudflare_status/d1_query是纯 REST(宿主 Node 原生 fetch),不需要 wrangler;只有cloudflare_deploy需要 wrangler(npm install -g wrangler)。
工具
工具 | 说明 |
| 在工作区执行任意 shell 命令( |
| 读取工作区文件(UTF-8) |
| 写入/覆盖工作区文件(自动建目录) |
| 列出工作区目录内容 |
| Cloudflare REST API 通用网关:任意 |
| 只读资源清单:Pages / D1 / KV / R2 / Zones / Workers, |
| 对 D1 执行只读 SQL(仅 SELECT,纯 REST,无需 wrangler/jq; |
| 部署到 Pages: |
环境变量
变量 | 必填 | 默认 | 说明 |
| ✅ | — | 工作区目录(映射为 |
|
|
| |
|
| proot 二进制/rootfs 所在目录 | |
| — | D1 数据库名( | |
| — | Pages 项目名( | |
|
| 部署源目录(相对工作区, | |
|
| 部署脚本(相对工作区,无显式参数时优先执行) | |
|
| Cloudflare 凭据文件 |
安全说明
凭据:
CLOUDFLARE_API_TOKEN/CLOUDFLARE_ACCOUNT_ID仅从工作区.env读取,注入命令环境,绝不写入仓库或输出。路径防护:
read_file/write_file拒绝解析到工作区之外的路径。只读 SQL:
d1_query强制SELECT前缀。部署授权:
cloudflare_deploy动线上,建议在 MCP 客户端层要求用户确认。危险操作:
execute_command是完整 shell,AI 可能执行任何命令——请只对可信的 AI 暴露此服务器。
开发
npm test # 语法检查
# CI(GitHub Actions):全新 Ubuntu 环境自动跑「install.sh 一键安装 → 启动 → 工具清单 → 执行命令」验证License
MIT
Available Tools
8 toolscloudflare_apiA
Cloudflare REST API 通用网关:用 method/path/body 直接调用 Cloudflare API(自动注入 token/account_id)。path 里可用 {account_id} 占位符(自动替换)。常用路径见工作区 CF_API.md。示例:GET /zones、GET /accounts/{account_id}/workers/scripts、GET /accounts/{account_id}/kv/namespaces、POST /zones。⚠️ 全权限直通,删除类操作需用户明确授权。
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | 请求体(POST/PATCH/PUT 时传),如 {"type":"full"} | |
| path | Yes | API 路径,如 /zones、/accounts/{account_id}/workers/scripts、/accounts/{account_id}/dns | |
| method | No | HTTP 方法:GET/POST/PATCH/PUT/DELETE,默认 GET |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description takes on the full burden of safety disclosure. It warns '全权限直通' (full-permission passthrough) and that delete operations require explicit user authorization, which is critical risk information. It also explains auto-injection of token/account_id and placeholder replacement, adding valuable behavior context beyond a simple call.
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 three sentences long, front-loaded with the primary purpose, and includes examples and a safety warning without unnecessary fluff. Every sentence earns its place, making it efficient and scannable.
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 complex raw API gateway, the description covers purpose, usage, parameter semantics, and safety. It lacks explicit mention of the response format or error behavior, which could be inferred from 'REST API', but for an agent to invoke correctly, the provided info is largely sufficient.
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%, so baseline is 3. The description goes beyond the schema by explaining that {account_id} placeholders are automatically replaced, and provides concrete path examples for each parameter context. This adds meaningful semantics that the schema alone does not convey.
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 it is a 'Cloudflare REST API 通用网关' (universal gateway) that directly calls Cloudflare API via method/path/body, with explicit examples like GET /zones and POST /zones. This distinguishes it from specialized siblings like d1_query and cloudflare_deploy by positioning it as a general-purpose API passthrough.
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 clear context for usage: it is a universal gateway for direct API calls, auto-injects credentials, and points to CF_API.md for common paths. However, it does not explicitly name alternatives or state when not to use this tool, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cloudflare_deployA
部署工作区目录到 Cloudflare Pages(动线上,需用户明确授权后调用)。project/branch/src_dir/build_cmd 均可参数化;不传参数且工作区有部署脚本(CFMCP_DEPLOY_SCRIPT,默认 deploy.sh)时优先执行脚本。需要 wrangler(npm install -g wrangler)。
| Name | Required | Description | Default |
|---|---|---|---|
| branch | No | 部署分支,默认 main | |
| project | No | Pages 项目名(默认 .env 的 CFMCP_PAGES_PROJECT) | |
| src_dir | No | 部署源目录(相对 /workspace),默认 .env 的 CFMCP_DEPLOY_SRC 或工作区根 | |
| build_cmd | No | 部署前构建命令(可选,如 node build.js) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries behavioral burden. It discloses the production-impacting nature, the need for explicit authorization, the script execution behavior, and the wrangler dependency. It does not cover rollback or error behavior, but the most critical safety and invocation traits are transparent.
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 concise sentences front-load the purpose and risk, then detail parameterization and dependencies. No redundant filler; every clause 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 deploy tool with four optional parameters and no output schema, the description covers prerequisites, invocation modes, and risk. It lacks explicit return-value expectations but is otherwise complete enough for an agent to use it correctly.
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?
Input schema has 100% coverage with descriptions for all four parameters, so the baseline is 3. The description only restates that parameters are configurable and adds the deploy-script context, which is useful but does not add per-parameter meaning beyond the schema.
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 uses a specific verb '部署' (deploy) with a clear resource 'Cloudflare Pages' and names all key inputs (project/branch/src_dir/build_cmd). It clearly distinguishes itself from sibling tools like cloudflare_status or d1_query by focusing on deployment.
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?
Provides explicit context: requires user authorization for production changes, and mentions the script-based fallback and wrangler prerequisite. However, it does not explicitly state when to prefer this over alternatives like execute_command or cloudflare_api, so it stops short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cloudflare_statusA
查看 Cloudflare 账户资源清单(只读,纯 REST)。type 可选:all(默认)/pages/d1/kv/r2/zones/workers。
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | 资源类型:all/pages/d1/kv/r2/zones/workers,默认 all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description takes on the full burden and explicitly discloses 'read-only, pure REST' behavior, plus the type parameter semantics. It does not cover additional details like auth or rate limits, but for a simple read-only listing tool, this is adequate.
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 a single, well-structured sentence. It front-loads the purpose, then lists the type options and default, with no unnecessary words.
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 one optional parameter, no output schema, and a straightforward listing purpose, the description provides sufficient context: what it does, the type values, and the read-only/REST nature. It could mention output format, but 'resource inventory' implies the response is a list of resources.
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?
The schema description already covers 100% of the parameter meaning with the same list of resource types and default. The description repeats this information without adding extra nuance, so it adds no value beyond the schema.
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 tool 'views the Cloudflare account resource inventory' with a specific verb and resource, and lists the distinct resource types. This distinguishes it from sibling tools like cloudflare_api (general API calls) and d1_query (querying D1).
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 clear context: it is a read-only, pure REST operation for listing resources, with a type parameter enumerating the resource categories. However, it does not explicitly mention alternatives or when not to use this tool, though the read-only scope makes its usage fairly obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
d1_queryA
对 D1 数据库执行只读 SQL(仅 SELECT,防误写库;纯 REST,无需 wrangler/jq)。database 默认取 .env 的 CFMCP_D1_DB。
| Name | Required | Description | Default |
|---|---|---|---|
| sql | Yes | SELECT 查询,如 SELECT count(*) FROM posts | |
| database | No | D1 数据库名(默认 .env 的 CFMCP_D1_DB) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
无 annotations,描述承担全部披露责任,明确说明只读、仅 SELECT、防止误写、默认数据库来源等关键行为,但未提认证或错误处理等细节。
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?
单句描述,先核心功能,再安全性和实现说明,再默认配置,信息密度高且无冗余,结构清晰。
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?
对于两个参数、无输出 schema 的简单工具,描述已覆盖核心用途和默认值,但缺少返回格式说明,略有不足。
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 覆盖率为 100%,描述只是重复了 sql 是 SELECT 查询和 database 默认值,没有增加超出 schema 的语义,因此按基线评 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?
描述明确说明“对 D1 数据库执行只读 SQL(仅 SELECT)”,动词+资源+限定条件清晰,与 read_file、execute_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?
明确表明用于只读 SQL 查询,并强调“纯 REST,无需 wrangler/jq”,隐含了使用场景,但没有明确列出“何时不用”或替代工具名称,因此扣一分。
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_commandB
在工作区内执行任意 shell 命令(local 后端直接本机 shell;proot 后端为 Debian 沙箱,Node + wrangler 已装)。cwd 默认 /workspace。
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | 工作目录(相对 /workspace 或绝对,默认 /workspace) | |
| command | Yes | 要执行的 shell 命令 | |
| timeout | No | 超时毫秒,默认 60000 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose the tool's behavioral traits. It provides some context (local shell vs. proot sandbox, Node/wrangler installed) but fails to mention critical safety aspects such as potential destructive effects, permission model, output behavior, or timeout handling. This is a significant gap for an arbitrary command execution tool.
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 a single concise sentence that is front-loaded with the key verb. However, it is too underspecified for a tool of this complexity; an effective description would include safety and output notes, making the current version too short to be fully useful.
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 no annotations, no output schema, and a complex tool that executes arbitrary commands, the description lacks essential information about return values (stdout/stderr), error handling, and execution environment details beyond the backend distinction. This incomplete context would leave an agent uncertain about how to interpret results or handle failures.
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?
The input schema already describes all three parameters (command, cwd, timeout) with clear descriptions, so schema coverage is 100%. The tool description only repeats the cwd default, adding no new parameter-level insight beyond what the schema provides, thus baseline score of 3 is appropriate.
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 it executes arbitrary shell commands in the workspace, using the verb 'execute' and resource 'shell commands'. This distinguishes it from sibling tools like read_file, write_file, and cloudflare_api, which handle file operations and API calls respectively.
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 (if you need to run a shell command) but does not explicitly mention when to use this tool over alternatives, nor does it state exclusions. It mentions backend differences (local vs. proot) but these are about behavior, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_filesA
列出工作区下目录内容(d 前缀=目录)。
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | 工作区内路径,默认 /workspace |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the output format for directories ('d 前缀=目录'), which is helpful. However, it does not mention other behavioral aspects such as recursion, hidden files, or read-only nature, leaving some ambiguity.
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 a single, concise sentence that immediately states the action and the key output detail. No filler words or redundant information.
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 simple list operation with one well-documented parameter and no output schema, the description is appropriately concise. It includes the critical 'd prefix' detail, but could add a note about whether hidden files are included or if the operation is recursive. Still, given the low complexity, it is complete enough.
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?
The schema description covers 100% of the parameter meaning, including a default value. The tool description adds a contextual note about directory prefixes but does not further elaborate on the path parameter, which is already well-documented.
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 tool's function with a specific verb ('列出' = list) and resource ('工作区下目录内容' = workspace directory contents), and even clarifies the output prefix for directories. This distinguishes it from sibling tools like read_file and write_file.
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?
No explicit when-to-use or comparison with alternatives is provided. However, the verb 'list' and the context of workspace make it evident that this tool is for directory exploration, which is implied by the name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_fileA
读取工作区下文件内容(UTF-8)。
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | 工作区内路径,如 /workspace/README.md |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It does add context beyond the simple name by specifying the UTF-8 encoding and workspace-relative scope. However, it does not mention behavior on errors (e.g., file not found), return format (e.g., raw string), or any constraints like file size limits. Thus, it provides some transparency but not comprehensive details.
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 a single, concise sentence that conveys the essential purpose and a key detail (UTF-8) without any unnecessary fluff. It is front-loaded with the verb and resource, making it immediately understandable.
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's simplicity (one parameter, no output schema) and lack of annotations, the description is minimally sufficient. It states the action and encoding but does not mention the return value or error behavior. Since there is no output schema, the description could have added that it returns the file content, which is a notable omission. Overall, it is 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?
The schema description coverage is 100%, so the 'path' parameter is already well-documented in the schema with an example. The tool description does not add additional parameter semantics beyond what the schema provides; the UTF-8 note in the description relates to file content, not the path parameter. Therefore, the baseline of 3 applies.
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 tool's function: reading file content within the workspace, with UTF-8 encoding specified. It uses a specific verb ('读取') and resource ('文件内容'), and the scope is defined as '工作区下' (under the workspace). This distinguishes it from siblings like write_file, list_files, and execute_command, which have different operations.
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 reading text file contents from the workspace but does not provide explicit guidance on when to use this tool versus alternatives, nor does it mention any exclusions (e.g., binary files, large files, or non-existent paths). The sibling context suggests it is for reading, but the description lacks explicit 'when to use' or 'when not to use' information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_fileA
写文件到工作区(自动创建父目录)。
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | 工作区内路径 | |
| content | Yes | 文件内容 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the important behavior of automatically creating parent directories, but it does not mention whether writes overwrite existing files or any path traversal restrictions. This is a partial disclosure.
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 a single, concise sentence that includes the core action, the target workspace, and a key behavioral detail. It is front-loaded and free of unnecessary words.
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 only two required parameters, no output schema, and low complexity, the description is fairly complete. It states the primary function and an important side effect. It could mention overwriting behavior, but for a write tool this is often assumed, so the description is sufficient for most use cases.
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% because both path and content have descriptions in the input schema. The description adds no new parameter-level details beyond the schema's own descriptions, so it stays at the baseline for high coverage.
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 uses a specific verb 'write' plus resource 'file to workspace' and adds a distinct behavioral detail (auto-creating parent directories). This clearly identifies the tool's function and distinguishes it from siblings like read_file and list_files.
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 does not explicitly state when to use this tool or mention alternatives, but it implies usage for writing files in the workspace. The context of sibling tool names provides some implicit guidance, but there is no explicit when-to-use or 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.
TDQS
Most tools have clearly distinct purposes: file operations, shell execution, Cloudflare resource listing, API gateway, D1 query, and deployment. However, cloudflare_status, cloudflare_api, and d1_query all offer Cloudflare data access with different scope, so an agent could be uncertain which to use for a given resource query.
Naming mixes verb_noun patterns for workspace tools (read_file, write_file, list_files) with product-prefixed names for Cloudflare tools (cloudflare_status, d1_query, cloudflare_deploy). The conventions are readable but not uniformly applied, reducing predictability.
Eight tools is well-scoped for a workspace-and-Cloudflare MCP server. Each tool fills a distinct role—file operations, command execution, resource inspection, generic API access, D1 queries, and deployment—without unnecessary bloat.
The set covers core file read/write/list and Cloudflare management via a generic API gateway, but lacks a dedicated delete_file operation and a D1 write query. These gaps can be worked around using execute_command or cloudflare_api, but they are obvious omissions for a workspace and database tool.
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
The bridge from K2 agents through Wrangler to your master AI - safe, approval-gated Cloudflare ops.
Develop, manage, and debug Railway projects, services, and deployments from within agents.
Deploy and manage your apps, databases, storage, and scheduled jobs from your AI agent
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceTransform your local machine into a powerful code command center. Automate file handling, run terminal commands, and leverage AI to enhance your development workflows—all securely and instantly, without cloud latency.14MIT
- AlicenseBqualityBmaintenanceA local stdio MCP server that provides 69 tools for Cloudflare REST API v4, including DNS, Zones, Workers, KV, R2, D1, Pages, Queues, Tunnels, SSL, WAF, Email Routing, Logpush and Workers AI, authenticated by a single API token.691022MIT
- AlicenseNot gradedqualityAmaintenanceEnables remote MCP clients to access local filesystem and shell commands by deploying a Cloudflare Worker relay and a local daemon, providing tools like read/write files, exec commands, git status, etc.8031MIT
- AlicenseNot gradedqualityDmaintenanceManage Cloudflare resources such as Workers, KV, R2, D1, Durable Objects, and more using natural language via the Model Context Protocol.1,623Apache 2.0
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/NingFlos/cloudflare-workspace-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server