mcp文本编辑器添加福利群:解决AI开发者的「MCP实战痛点」这是一个基于模型上下文协议(Model Context Protocol, MCP)的服务器,通过标准化API提供面向行的文本文件编辑功能。该服务器针对大型语言模型(LLM)工具进行了优化,采用高效的文件部分访问机制以最小化令牌消耗。
要在Claude.app中使用此编辑器,请在提示中添加以下配置:
code ~/Library/Application\ Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"text-editor": {
"command": "uvx",
"args": [
"mcp-text-editor"
]
}
}
}

或者使用docker:
{
"mcpServers": {
"text-editor": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"--mount",
"type=bind,src=/some/path/src,dst=/some/path/dst",
"mcp/text-editor"
]
}
}
}

MCP文本编辑器服务器旨在客户端-服务器架构中实现安全高效的基于行的文本文件操作。它实现了模型上下文协议,确保可靠的文件编辑功能,并具备强大的冲突检测与解决能力。面向行的方法使其非常适合需要同步文件访问的应用程序,例如协作编辑工具、自动化文本处理系统,或任何需要多个进程安全修改文本文件的场景。部分文件访问功能对于基于LLM的工具特别有价值,因为它通过仅加载文件的必要部分来帮助减少令牌消耗。
pyenv install 3.11.6
pyenv local 3.11.6

curl -LsSf https://astral.sh/uv/install.sh | sh
uv venv
source .venv/bin/activate # 在Windows上:.venv\Scripts\activate
uv pip install -e ".[dev]"

uvx mcp-text-editor
要通过Smithery自动为Claude Desktop安装文本编辑器服务器:
npx -y @smithery/cli install mcp-text-editor --client claude
pyenv install 3.13.0
pyenv local 3.13.0

docker build --network=host -t mcp/text-editor .
curl -LsSf https://astral.sh/uv/install.sh | sh
uv venv
source .venv/bin/activate # 在Windows上:.venv\Scripts\activate
uv pip install -e ".[dev]"

启动服务器:
python -m mcp_text_editor
使用docker启动服务器:
docker run -i --rm --mount "type=bind,src=/some/path/src,dst=/some/path/dst" mcp/text-editor

使用检查器:
npx @modelcontextprotocol/inspector docker run -i --rm --mount "type=bind,src=/some/path/src,dst=/some/path/dst" mcp/text-editor

服务器提供多个用于文本文件操作的工具:
获取一个或多个文本文件的内容,并指定行范围。
单范围请求:
{
"file_path": "path/to/file.txt",
"line_start": 1,
"line_end": 10,
"encoding": "utf-8" // 可选,默认为utf-8
}

多范围请求:
{
"files": [
{
"file_path": "file1.txt",
"ranges": [
{"start": 1, "end": 10},
{"start": 20, "end": 30}
],
"encoding": "shift_jis" // 可选,默认为utf-8
},
{
"file_path": "file2.txt",
"ranges": [
{"start": 5, "end": 15}
]
}
]
}

参数:
file_path:文本文件的路径line_start/start:开始行号(从1开始)line_end/end:结束行号(包含,null表示文件末尾)encoding:文件编码(默认:"utf-8")。指定文本文件的编码(例如,"shift_jis"、"latin1")单范围响应:
{
"contents": "文件内容",
"line_start": 1,
"line_end": 10,
"hash": "内容的sha256哈希",
"file_lines": 50,
"file_size": 1024
}

多范围响应:
{
"file1.txt": [
{
"content": "第1-10行内容",
"start": 1,
"end": 10,
"hash": "哈希1",
"total_lines": 50,
"content_size": 512
},
{
"content": "第20-30行内容",
"start": 20,
"end": 30,
"hash": "哈希2",
"total_lines": 50,
"content_size": 512
}
],
"file2.txt": [
{
"content": "第5-15行内容",
"start": 5,
"end": 15,
"hash": "哈希3",
"total_lines": 30,
"content_size": 256
}
]
}

应用补丁到文本文件,具有强大的错误处理和冲突检测。支持在单次操作中编辑多个文件。
请求格式:
{
"files": [
{
"file_path": "file1.txt",
"hash": "从get_contents获取的sha256哈希",
"encoding": "utf-8", // 可选,默认为utf-8
"patches": [
{
"start": 5,
"end": 8,
"range_hash": "被替换内容的sha256哈希",
"contents": "第5-8行的新内容\n"
},
{
"start": 15,
"end": null, // null表示文件末尾
"range_hash": "被替换内容的sha256哈希",
"contents": "要追加的内容\n"
}
]
}
]
}

重要提示:
end: null可用于将内容追加到文件末尾成功响应:
{
"file1.txt": {
"result": "ok",
"hash": "新内容的sha256哈希"
}
}

带提示的错误响应:
{
"file1.txt": {
"result": "error",
"reason": "内容哈希不匹配",
"suggestion": "get", // 建议使用get_text_file_contents
"hint": "请先运行get_text_file_contents以获取当前内容和哈希"
}
}

"result": "error",
"reason": "内容哈希不匹配 - 文件已被修改",
"hash": "当前哈希",
"content": "当前文件内容"
} }
### 常见使用模式 1. 获取当前内容和哈希: ```python contents = await get_text_file_contents({ "files": [ { "file_path": "file.txt", "ranges": [{"start": 1, "end": null}] # 读取整个文件 } ] })
result = await edit_text_file_contents({
"files": [
{
"path": "file.txt",
"hash": contents["file.txt"][0]["hash"],
"encoding": "utf-8", // 可选,默认为"utf-8"
"patches": [
{
"line_start": 5,
"line_end": 8,
"contents": "新内容\n"
}
]
}
]
})

if result["file.txt"]["result"] == "error":
if "hash mismatch" in result["file.txt"]["reason"]:
# 文件被另一个进程修改
# 获取新内容并重试
pass

服务器处理各种错误情况:
权限被拒绝
哈希不匹配和范围哈希错误
编码问题
连接问题
性能问题
uv pip install -e ".[dev]"make all测试位于tests目录中,可以使用pytest运行:
# 运行所有测试
pytest
# 运行带有覆盖率报告的测试
pytest --cov=mcp_text_editor --cov-report=term-missing
# 运行特定测试文件
pytest tests/test_text_editor.py -v

当前测试覆盖率:90%
mcp-text-editor/ ├── mcp_text_editor/ │ ├── __init__.py │ ├── __main__.py # 入口点 │ ├── models.py # 数据模型 │ ├── server.py # MCP服务器实现 │ ├── service.py # 核心服务逻辑 │ └── text_editor.py # 文本编辑器功能 ├── tests/ # 测试文件 └── pyproject.toml # 项目配置
MIT
此项目在整个代码库中使用Python类型提示。请确保任何贡献都保持这一点。
所有错误情况都应得到适当处理并返回有意义的错误消息。服务器不应因无效输入或文件操作而崩溃。
新功能应包括适当的测试。尝试保持或提高当前测试覆盖率。
所有代码都应使用Black格式化并通过Ruff检查。导入排序应由isort处理。