基于Python的文本编辑器服务器,使用FastMCP构建,提供强大的文件操作工具。该服务器通过标准化API以独特的多步骤方法实现读取、编辑和管理文本文件,显著提高了LLMs和AI助手的代码编辑准确性和可靠性。
skim读取整个文件并带有行号read读取特定行范围并带有行号前缀find_line在文件中查找特定文本find_function在Python和JavaScript/JSX文件中查找并提取函数定义listdir列出目录内容run_tests运行Python测试编辑器-MCP包含一些强大的功能,这些功能伴随着一定的安全考虑:
为了缓解这些风险:
PROTECTED_PATHS环境变量来限制对敏感文件和目录的访问。此文本编辑器的独特设计解决了通常影响LLM代码编辑的关键问题:
编辑器实现了多项保障措施,以确保系统稳定并防止资源耗尽:
此MCP是在Claude Desktop上开发和测试的。您可以在任何平台上下载Claude Desktop。 对于Linux上的Claude Desktop,您可以使用一个非官方安装脚本(使用官方文件),推荐仓库: https://github.com/emsi/claude-desktop/tree/main
一旦安装了Claude Desktop,请按照以下说明安装此特定MCP:
安装编辑器MCP最简单的方法是使用提供的安装脚本:
# 克隆仓库
git clone https://github.com/danielpodrazka/editor-mcp.git
cd editor-mcp
# 运行安装脚本
chmod +x install.sh
./install.sh
此脚本将:
editor-mcp命令在您的PATH中可用# 直接从GitHub安装
uvx install git+https://github.com/danielpodrazka/mcp-text-editor.git
# 或从本地克隆安装
git clone https://github.com/danielpodrazka/mcp-text-editor.git
cd mcp-text-editor
uvx install -e .
pip install git+https://github.com/danielpodrazka/mcp-text-editor.git
# 或从本地克隆安装
git clone https://github.com/danielpodrazka/mcp-text-editor.git
cd mcp-text-editor
pip install -e .
从锁文件安装:
uv pip install -r uv.lock
uv pip compile requirements.in -o uv.lock
安装完成后,可以使用以下任一方法启动编辑器MCP服务器:
# 使用安装的脚本
editor-mcp
# 或使用Python模块
python -m text_editor.server
您可以将编辑器MCP添加到您的MCP配置文件中:
{
"mcpServers": {
"text-editor": {
"command": "editor-mcp",
"env": {
"MAX_SELECT_LINES": "100",
"ENABLE_JS_SYNTAX_CHECK": "0",
"FAIL_ON_PYTHON_SYNTAX_ERROR": "1",
"FAIL_ON_JS_SYNTAX_ERROR": "0",
"PROTECTED_PATHS": "*.env,.env*,config*.json,*secret*,/etc/passwd,/home/user/.ssh/id_rsa"
}
}
}
}
编辑器MCP支持多个环境变量以自定义其行为:
{
"mcpServers": {
"text-editor": {
"command": "/home/daniel/pp/venvs/editor-mcp/bin/python",
"args": ["/home/daniel/pp/editor-mcp/src/text_editor/server.py"],
"env": {
"MAX_SELECT_LINES": "1_00",
"ENABLE_JS_SYNTAX_CHECK": "0",
"FAIL_ON_PYTHON_SYNTAX_ERROR": "1",
"FAIL_ON_JS_SYNTAX_ERROR": "0",
"PROTECTED_PATHS": "*.env,.env*,config*.json,*secret*,/etc/passwd,/home/user/.ssh/id_rsa"
}
}
}
}
编辑器MCP提供了13种强大的工具,用于文件操作、编辑和测试:
set_file设置当前要编辑的文件。
参数:
filepath (str):文件的绝对路径返回值:
skim读取当前文件的全文。每行都带有行号前缀。
返回值:
示例输出:
{
"lines": [
[1, "def hello():"],
[2, " print(\"Hello, world!\")"],
[3, ""],
[4, "hello()"]
],
"total_lines": 4,
"max_select_lines": 50
}
read从当前文件读取从起始行到结束行的文本。
参数:
start (int):起始行号(基于1的索引)end (int):结束行号(基于1的索引)返回值:
示例输出:
{
"lines": [
[1, "def hello():"],
[2, " print(\"Hello, world!\")"],
[3, ""],
[4, "hello()"]
],
"start_line": 1,
"end_line": 4
}
select从当前文件中选择一段行,以便后续覆盖操作。
参数:
start (int):起始行号(基于1的索引)end (int):结束行号(基于1的索引)返回值:
注意:
max_select_lines验证选择overwrite准备用新文本覆盖当前文件中的选定范围。
参数:
new_lines (list):要覆盖选定范围的新行列表返回值:
注意:
overwrite()以生成差异预览confirm()以应用或cancel()以丢弃待处理更改ENABLE_JS_SYNTAX_CHECK环境变量禁用confirm应用覆盖操作的待处理更改。
返回值:
注意:
cancel丢弃覆盖操作的待处理更改。
返回值:
注意:
delete_file删除当前设置的文件。
返回值:
new_file创建新文件,并自动将其设置为后续操作的当前文件。
参数:
filepath (str):新文件的路径返回值:
行为:
受保护文件注意事项:
*.env)的文件可以正常创建config.env,填充示例配置,但以后不能重新打开它注意:
find_line在当前文件中查找匹配提供的文本的行。
参数:
search_text (str):要在文件中搜索的文本返回值:
示例输出:
{
"status": "success",
"matches": [
[2, " print(\"Hello, world!\")"]
],
"total_matches": 1
}
注意:
find_function在当前Python或JavaScript/JSX文件中查找函数或方法定义。
参数:
function_name (str):要查找的函数或方法名称返回值:
示例输出:
{
"status": "success",
"lines": [
[10, "def hello():"],
[11, " print(\"Hello, world!\")"],
[12, " return True"]
],
"start_line": 10,
"end_line": 12
}
注意:
listdir列出目录的内容。
参数:
dirpath (str):要列出的目录路径返回值:
run_tests 和 set_python_path用于使用pytest运行Python测试和配置Python环境的工具。
FAIL_ON_PYTHON_SYNTAX_ERROR:控制Python语法错误是否自动取消覆盖操作(默认:1)
FAIL_ON_JS_SYNTAX_ERROR:控制JavaScript/JSX语法错误是否自动取消覆盖操作(默认:0)
DUCKDB_USAGE_STATS:控制是否在DuckDB数据库中收集使用统计信息(默认:0)
STATS_DB_PATH:存储统计DuckDB数据库的路径(默认:"text_editor_stats.duckdb")
DUCKDB_USAGE_STATS时使用PROTECTED_PATHS:无法访问的文件模式或绝对路径的逗号分隔列表
*.env,.env*,config*.json,*secret*,/etc/passwd,/home/user/credentials.txt*.env - 匹配以.env结尾的文件,如.env、dev.env、prod.env.env* - 匹配以.env开头的文件,如.env、.env.local、.env.production*secret* - 匹配名称中包含'secret'的任何文件编辑器-MCP需要:
安装开发依赖项:
# 使用pip
pip install pytest pytest-asyncio pytest-cov
# 使用uv
uv pip install pytest pytest-asyncio pytest-cov
对于JavaScript/JSX语法验证,您需要Node.js和Babel。文本编辑器使用npx babel来检查JS/JSX语法:
# JavaScript/JSX语法检查所需
npm install --save-dev @babel/core @babel/cli @babel/preset-env @babel/preset-react
# 您也可以全局安装这些包,如果您愿意
# npm install -g @babel/core @babel/cli @babel/preset-env @babel/preset-react
编辑器需要:
@babel/core 和 @babel/cli - 核心Babel包用于语法检查@babel/preset-env - 用于标准JavaScript(.js)文件@babel/preset-react - 用于React JSX(.jsx)文件# 运行测试
pytest -v
# 运行带覆盖率的测试
pytest -v --cov=text_editor
测试套件涵盖: