使用说明

项目简介

Editor MCP 是一个基于 Python 的文本编辑器服务器,它使用 FastMCP 框架实现了 Model Context Protocol (MCP)。该服务器提供了一系列工具,允许客户端通过标准化的 API 对服务器端的文件系统进行文本文件的读取、编辑和管理。其核心功能是作为一个 MCP 服务器,为 LLM 应用提供文件编辑的上下文服务。

主要功能点

  • 文件管理
    • 设置当前工作文件(通过绝对路径)。
    • 创建新文件。
    • 删除文件。
  • 读取操作
    • 读取整个文件内容(带行号)。
    • 读取指定行范围的内容(带行号)。
    • 在文件中查找包含特定文本的行。
  • 编辑操作
    • 选择要编辑的行范围。
    • 预览编辑更改的差异。
    • 覆盖选定行的内容。
    • 接受或取消编辑更改。
    • 支持 Python 和 JavaScript/React 代码的语法检查(编辑时)。
  • 安全特性
    • 内容ID验证,防止并发修改冲突。
    • 编辑行数限制,防止资源耗尽。
    • 语法检查,维护代码完整性。

安装步骤

  1. 克隆仓库

    git clone https://github.com/danielpodrazka/editor-mcp.git
    cd editor-mcp
  2. 运行安装脚本 (推荐)

    chmod +x install.sh
    ./install.sh

    或者,您可以使用 'uvx', 'pip' 或 'uv pip' 手动安装,详细步骤请参考仓库 README.md 的 "Installation" 部分。

服务器配置

要将 Editor MCP 添加到 MCP 客户端的配置文件中,您需要配置 'mcpServers' 字段。以下是一个示例配置,展示了如何配置 'text-editor' 服务器:

{
  "mcpServers": {
     "text-editor": {
       "command": "editor-mcp",
       "env": {
         "MAX_EDIT_LINES": "100",  // (可选) 设置最大编辑行数,默认为 50
         "ENABLE_JS_SYNTAX_CHECK": "0" // (可选) 禁用 JavaScript 语法检查,默认为启用 (1)
       }
     }
  }
}

配置参数说明:

  • 'command': 启动 Editor MCP 服务器的命令,通常为 'editor-mcp' (如果使用安装脚本安装) 或 'python -m text_editor.server' (如果手动安装)。
  • 'env': (可选) 环境变量配置,用于自定义服务器行为:
    • 'MAX_EDIT_LINES': 限制单次编辑操作的最大行数,防止资源滥用。
    • 'ENABLE_JS_SYNTAX_CHECK': 控制是否启用 JavaScript/JSX 语法检查。设置为 "0"、"false" 或 "no" 可禁用。

基本使用方法

  1. 启动服务器

    安装完成后,您可以使用以下命令启动 Editor MCP 服务器:

    editor-mcp

    或者

    python -m text_editor.server
  2. 使用 MCP 客户端连接

    配置您的 MCP 客户端,使其能够连接到名为 'text-editor' 的 MCP 服务器。客户端将通过 JSON-RPC 协议与服务器通信,调用服务器提供的工具来执行文件操作。

  3. 常用工具示例

    • 'set_file': 设置要操作的文件

      { "tool_call": { "tool_name": "set_file", "parameters": { "absolute_file_path": "/path/to/your/file.txt" } } }
    • 'read': 读取文件指定范围的行

      { "tool_call": { "tool_name": "read", "parameters": { "start": 1, "end": 10 } } }
    • 'find_line': 在文件中查找包含特定文本的行

      { "tool_call": { "tool_name": "find_line", "parameters": { "search_text": "keyword" } } }
    • 'select' 和 'overwrite' 和 'decide': 编辑文件内容 (两步操作)

      // 1. 选择要编辑的行范围
      { "tool_call": { "tool_name": "select", "parameters": { "start": 5, "end": 8 } } }
      
      // 2. 获取 'select' 工具返回的 id,以及要替换的新内容后,调用 'overwrite' 工具
      { "tool_call": { "tool_name": "overwrite", "parameters": { "new_lines": ["new line 1", "new line 2"] } } }
      
      // 3. 查看 'overwrite' 工具返回的 diff 预览,确认修改后,调用 'decide' 工具接受修改
      { "tool_call": { "tool_name": "decide", "parameters": { "decision": "accept" } } }

    更多工具的详细使用方法和参数,请参考仓库 README.md 的 "Available Tools" 部分。

信息

分类

开发者工具