在与AI协作编写代码或文档时,一个精准、可靠的文本编辑工具是必不可少的基础设施。Claude 内置的文本编辑器工具正是为此而生,但它被绑定在 Claude 内部,无法与其他 MCP 客户端共享。MCP Text Editor Server 的出现,将这两套经过实战检验的正式工具——text_editor_20241022(Claude 3.5 Sonnet)和 text_editor_20250124(Claude 3.7 Sonnet)——做成了独立的开源 MCP 服务器,让任何 MCP 客户端都能使用这套精密的文本编辑能力。
项目基本信息
| 信息项 | 详情 |
|---|---|
| 项目名称 | MCP Text Editor Server |
| GitHub 地址 | https://github.com/bhouston/mcp-server-text-editor |
| 项目描述 | Claude 内置文本编辑工具的独立 MCP 服务器实现,支持查看、编辑和创建文本文件 |
| 作者 | bhouston |
| 开源协议 | MIT License |
| 开源状态 | 公开状态 |
| Languages | TypeScript |
| 支持平台 | Windows / macOS / Linux |
| 最后更新 | 持续更新中 |
一、项目介绍
MCP Text Editor Server 用短短几百行 TypeScript 代码,精炼地实现了 Claude 内置文本编辑器工具的全部功能,并将其封装为一个标准的 MCP 服务器。它的核心设计理念是 “与 Claude 内置工具保持完全一致的 API”。
核心工具:text_editor
该服务器仅暴露一个名为 text_editor 的 MCP 工具,但它通过 command 参数支持五种操作模式,覆盖了文件处理的完整生命周期:
| 命令 | 功能 | 关键参数 | 使用场景 |
|---|---|---|---|
view | 查看文件或目录内容 | path, view_range(可选) | 读取代码、检查目录结构 |
create | 创建新文件 | path, file_text | 新建代码文件、文档 |
str_replace | 精确替换字符串 | path, old_str, new_str | 修改变量名、重构代码 |
insert | 在指定行插入文本 | path, insert_line, new_str | 添加新函数、补充内容 |
undo_edit | 撤销上一次编辑 | path | 回退错误修改 |
两个版本并存的设计考量
项目同时实现了两个版本的 Claude 文本编辑器工具,但统一使用 text_editor 作为工具名以避免冲突。这种设计让用户可以根据需求选择版本,同时保持了与 Claude 原生体验的高度一致性。
二、核心优势
与 Claude 工具箱直接对标
这是该项目最独特的价值。Claude 内置的文本编辑工具经过大规模使用和迭代,其 API 设计(特别是 str_replace 的精确匹配机制)已经过大量真实场景的验证。该项目将这些经验直接“移植”到了 MCP 生态中,让其他 AI 客户端也能受益。
精确的文本替换机制
str_replace 要求提供 old_str 进行精确匹配,这避免了基于行号替换容易出现的“偏移”问题。在多轮编辑中,这种机制大大提高了可靠性——除非明确指定,否则 AI 不会意外修改错位置。
极简的接口设计
整个服务器只有一个工具、五种命令。这种设计降低了 AI 模型选择工具时的心智负担,也让代码实现保持简单和可维护。
轻量且可扩展
项目依赖极少,构建后的代码体量小,启动快速。同时,作为独立 MCP 服务器,它可以被任何支持 MCP 的客户端使用,不受特定 AI 平台限制。
MIT 开源协议
采用完全商业友好的 MIT 协议,可以自由集成、修改和分发。
三、适用场景
跨平台的代码编辑助手
你可以让任何 MCP 客户端(如 Cursor、Windsurf、Claude Desktop)直接编辑你的项目文件。例如:“在 src/utils.js 第 15 行插入一个新的工具函数。”AI 调用 text_editor 的 insert 命令即可完成。
多轮重构与代码修改
利用 str_replace 的精确匹配特性,AI 可以安全地进行多轮代码修改而不产生偏移。这在重命名变量、调整函数签名等场景中尤其可靠。
自动化文档生成
让 AI 读取现有的代码文件,分析后自动生成或更新 Markdown 文档,并将结果通过 create 命令写入新文件。
文件内容审查
使用 view 命令,AI 可以读取文件内容,检查代码风格、查找潜在错误或生成代码审查意见。
四、安装教程
环境要求
| 工具 | 用途 | 下载/安装方式 |
|---|---|---|
| Node.js | 运行环境 | 18 或以上 |
| npm / pnpm | 包管理器 | 推荐 pnpm |
安装方式一:通过 npx 直接使用(推荐)
无需手动安装,直接在 MCP 客户端配置中使用 npx:
{
"mcpServers": {
"textEditor": {
"command": "npx",
"args": ["-y", "mcp-server-text-editor"]
}
}
}安装方式二:从 npm 安装
npm install mcp-server-text-editor
# 或
pnpm add mcp-server-text-editor配置 MCP 客户端
编辑你的 MCP 客户端配置文件(以 Claude Desktop 为例):
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
添加上述配置后,完全退出并重启客户端。
本地开发安装
git clone https://github.com/bhouston/mcp-server-text-editor.git
cd mcp-server-text-editor
pnpm install
pnpm build然后将配置中的 command 指向你本地的 Node 和构建后的 dist/index.js 文件。
五、使用示例
配置完成后,你可以在 AI 客户端中使用自然语言指挥 AI 完成各种文件操作。
示例一:查看文件内容
用户:查看 src/app.ts 的前 30 行代码。AI 调用 text_editor 工具,传入 command: "view"、path: "src/app.ts"、view_range: [1, 30],返回指定行范围的内容。
示例二:创建新文件
用户:在项目根目录创建一个 CHANGELOG.md 文件,内容是“# Changelog”。AI 调用 text_editor 工具,传入 command: "create"、path: "CHANGELOG.md"、file_text: "# Changelog"。
示例三:精确替换文本
用户:把utils/helpers.ts文件中的function oldHelper重命名为function newHelper。
AI 调用 text_editor 工具,传入 command: "str_replace"、path: "utils/helpers.ts"、old_str: "function oldHelper"、new_str: "function newHelper"。
示例四:插入代码
用户:在index.ts的第 10 行之后插入一个 import 语句:import { newHelper } from './utils/helpers';。
AI 调用 text_editor 工具,传入 command: "insert"、path: "index.ts"、insert_line: 10、new_str: "import { newHelper } from './utils/helpers';"。
示例五:撤销编辑
用户:刚才的修改不对,帮我撤销 index.ts 的最后一次编辑。AI 调用 text_editor 工具,传入 command: "undo_edit"、path: "index.ts"。
六、常见问题
问:str_replace 替换失败,提示找不到 old_str 怎么办?
答:这是 str_replace 的精确匹配机制在起作用。常见原因:
- 空格或缩进不匹配。
- 文件已被其他程序修改,内容与 AI 获取的版本不一致。
- 目标文本在文件中出现多次(此时工具会报错提示匹配不唯一)。
解决办法:提供更长的 old_str 以确保唯一性,或在替换前先使用 view 确认当前文件的准确内容。
问:insert_line 的行号如何计算?插入后会影响其他行吗?
答:insert_line 指定的是插入位置。例如,insert_line: 5 表示在第 5 行之后插入新内容。插入后,原第 6 行及之后的行号会自动增加,不会覆盖任何已有内容。
问:undo_edit 能撤销多久前的编辑?
答:当前实现只保留最后一次编辑的撤销信息。如果你连续做了多个编辑,undo_edit 只能撤销最近的那一个。多次调用不会连锁撤销。
问:可以在多个 MCP 客户端中同时使用这个服务器吗?
答:技术上可以,但需要注意并发编辑的冲突问题。建议在同一时间段内仅在一个客户端中使用该服务器编辑特定文件,避免产生不可预期的修改。
七、总结
MCP Text Editor Server 是一个小而美的项目——它将 Claude 内环境经过验证的文本编辑工具做成了独立的 MCP 服务器,让这套精密的编辑能力惠及更广泛的 MCP 生态。其设计的巧妙之处在于:只暴露一个工具、五种命令,却覆盖了文件操作的完整生命周期;采用精确匹配而非行号逻辑,提高了多轮编辑的可靠性。
对于需要用 AI 辅助代码编辑、文档编写的开发者来说,这几乎是一个必装的基础设施级 MCP 服务器。花两分钟完成配置,你将获得一个在任何 MCP 客户端中都能使用的、与 Claude 同款的文本编辑能力。
回Vera,确实是个痛点,我现在的做法是先让AI用系统命令`mkdir -p`建好目录再创建文件。
对于一个只有几万Star的项目来说,这个工具的影响力远超它的Star数。
我把它和`mcp-fetch`配合使用,AI获取网页内容后直接用`text_editor`保存成Markdown文件。
比较了一下,这个工具比直接使用文件系统MCP进行编辑更靠谱,因为有撤销和精确替换的能力。
如果能支持语法高亮预览(在`view`的时候返回带格式的内容),阅读体验会更好。