AX本地操作 MCP 服务器 v2.6.0
一个功能强大的 MCP (Model Context Protocol) 服务器,名为 ax_local_operations,为大模型应用提供安全的本地文件操作、行级编辑、文件搜索、文件比较、文件哈希、文件权限、文件压缩、文件监控、命令执行和任务管理功能。
作者本人推荐,特点:
- 使用这个ax_local_operations,你可以在任何接受MCP的对话应用里, 把它变成可以操作电脑的助手. 而不仅仅是一个对话聊天工具.
- 最佳实践: 使用
Qwen应用, 加入 ax_local_operations 这个MCP之后, qwen 可以接受用户的指示, 从而完成一些诸如编码, 部署环境, 检测设备硬件等等的实际工作. 而不是仅仅聊天. 还可以使用Jan,lmStudio这些应用都可以加入ax_local_operations 这个MCP之后,从而实现更智能的助手功能。 - 对比其它MCP, 比如其它的本地文件MCP, 专注于文件操作. 但没有命令执行工具,所以这个MCP适合做对话应用,而不是命令行工具。
使用注意,:
- 在对话中建议第一句就告诉AI: "当前的工作目录是:
/User/research/work", 这样可以让AI在工作中使用临时写入文件不必影响原设备环境.
🌐 平台兼容性
支持的平台
| 平台 | 支持状态 | 说明 |
|---|---|---|
| macOS | ✅ 完全支持 | 所有工具均可正常使用 |
| Linux | ✅ 完全支持 | 所有工具均可正常使用(包括 sudo_config) |
| Windows | ✅ 基本支持 | 11个工具可用,2个工具部分支持 |
工具平台支持详情
完全跨平台支持(Windows/macOS/Linux)
以下工具在所有平台上均可正常使用:
- ✅ file_operation - 文件操作
- ✅ file_edit - 文件编辑
- ✅ file_search - 文件搜索
- ✅ file_compare - 文件比较
- ✅ file_hash - 文件哈希
- ✅ file_permissions - 文件权限管理(使用系统对应的命令:attrib/icacls 或 chmod)
- ✅ file_watch - 文件监控
- ✅ execute_command - 命令执行
- ✅ task_manager - 任务管理
- ✅ time_tool - 时间工具
- ✅ environment_memory - 环境记忆
平台限制
file_archive - 文件压缩工具
- macOS/Linux: ✅ 完全支持(使用系统命令 zip/unzip/tar/gzip)
- Windows: ⚠️ 需要安装额外工具
- 需要安装 Git Bash、WSL 或第三方压缩工具
- 或手动安装 zip/unzip/tar/gzip 命令行工具
sudo_config - Sudo配置工具
- Linux: ✅ 完全支持
- macOS: ❌ 不支持(不适用)
- Windows: ❌ 不支持(不适用)
Windows 用户注意事项
- 路径格式: 使用反斜杠
\或正斜杠/均可,Node.js 会自动处理 - 权限管理: 使用 Windows 原生的
attrib和icacls命令 - 压缩工具: 如需使用 file_archive,建议:
- 安装 Git for Windows(自带 Bash 和常用工具)
- 或使用 WSL (Windows Subsystem for Linux)
- 或安装 7-Zip 并将其添加到系统 PATH
🔧 开发者与 API 状态概览
本项目已完成核心工具的参数别名与统一输出格式重构(API-001 / API-002 进入“接近完成”阶段):
| 标准 | 描述 | 状态 |
|---|---|---|
| API-001 | 参数别名统一(path/file_path/dir_path 等) | NEAR DONE |
| API-002 | 统一输出格式:`output_format = text | json |
剩余仅为边缘场景再审阅与未来可选增强(例如更精细的 diff 输出拆分、搜索流式增量返回等)。
开发新增工具请阅读:tools/tools_dev_guide.md(已提供安全、参数、输出、测试、Checklist 全量规范)。
统一输出机制简述
所有工具通过 output_format 控制输出:
text:人类可读摘要json:结构化数据(适合上层模型二次推理/程序化处理)both:同时返回(先文本后 JSON)
典型调用示例(文件比较):
{
"name": "file_compare",
"arguments": {
"file1": "/path/to/a.js",
"file2": "/path/to/b.js",
"output_format": "both"
}
}
典型 JSON 片段(仅示例):
{
"action": "compare",
"left": "/path/to/a.js",
"right": "/path/to/b.js",
"diff_stats": { "added": 12, "removed": 4, "modified": 3 }
}
搜索工具示例(限制深度 + 超时 + 忽略策略):
{
"name": "file_search",
"arguments": {
"search_path": "src",
"pattern": "class ",
"max_depth": 6,
"timeout_ms": 4000,
"ignore": ["node_modules", "*.log"],
"output_format": "json"
}
}
若结果被截断(大小/超时/数量),JSON 中会包含
truncated: true或timed_out: true等标记字段。
✨ 功能特性
📁 文件操作工具
- 读取文件 - 安全读取本地文件内容
- 写入文件 - 创建或更新文件内容
- 列出目录 - 查看目录结构和文件列表
- 创建目录 - 创建新的目录结构
- 删除文件/目录 - 安全删除文件和目录
✏️ 文件编辑工具 (v1.1.0 新增)
- 删除行 - 删除指定行号范围的内容
- 插入行 - 在指定位置插入新内容
- 替换行 - 替换指定行号范围的内容
- 追加行 - 在文件末尾追加新内容
🔍 文件搜索工具 (v1.2.0 新增)
- 内容搜索 - 在文件中搜索指定内容
- 正则表达式 - 支持正则表达式搜索
- 文件类型过滤 - 按文件类型过滤搜索结果
- 大小写控制 - 支持区分/不区分大小写搜索
📊 文件比较工具 (v1.2.0 新增)
- 差异对比 - 比较两个文件的差异
- 行级对比 - 显示具体的行级差异
- 多种输出格式 - 支持文本和JSON格式输出
🔐 文件哈希工具 (v1.2.0 新增)
- 多种算法 - 支持MD5、SHA1、SHA256、SHA512
- 文件完整性 - 验证文件完整性
- 快速计算 - 高效的文件哈希计算
🛡️ 文件权限工具 (v1.2.0 新增)
- 权限修改 - 修改文件权限
- 递归应用 - 支持递归应用权限
- 权限显示 - 显示详细的权限信息
📦 文件压缩工具 (v1.2.0 新增)
- 多种格式 - 支持ZIP、TAR、GZ、TAR.GZ格式
- 压缩解压 - 支持压缩和解压操作
- 批量处理 - 支持目录批量压缩
👁️ 文件监控工具 (v1.2.0 新增)
- 实时监控 - 监控文件变化
- 事件类型 - 支持创建、删除、修改事件
- 定时监控 - 可设置监控时长
📋 任务管理工具 (v2.0.1 新增)
- 任务分解 - 支持创建复杂任务和子任务
- 优先级管理 - 支持低、中、高、紧急四个优先级
- 进度跟踪 - 实时跟踪任务完成进度
- 排期管理 - 支持设置截止日期
- 状态管理 - 待处理、进行中、已完成、已取消
- 模型隔离 - 不同模型拥有独立的任务列表
🧠 环境记忆工具 (v2.1.0 新增)
- 环境信息管理 - 自动读取和存储环境变量信息
- 动态更新 - 识别会话中的环境相关信息并自动记录
- 智能使用 - 根据会话上下文智能使用记忆的环境信息
- 文件存储 - 信息存储在
~/.local_file_operations/.env文件中
⚡ 命令执行工具
- 执行本地命令 - 在指定工作目录下执行系统命令
- 安全限制 - 自动过滤危险命令,保护系统安全
🔒 安全特性
🕒 时间工具 (v2.0.2 新增)
当前时间 - 获取当前真实时间
多种格式 - ISO、RFC3339、UNIX(秒/毫秒)、本地格式
时区支持 - 指定 IANA 时区(如
Asia/Shanghai)路径限制 - 禁止访问敏感系统目录
命令过滤 - 阻止执行危险的系统命令
权限控制 - 确保操作在安全范围内
🚀 快速开始
环境要求
- Node.js >= 18.0.0
- npm 或 yarn
安装依赖
cd /Users/abc/research/mcp
npm install
📋 配置说明
LM Studio 配置
{
"mcpServers": {
"ax_local_operations": {
"command": "/Users/abc/.nvm/versions/node/v22.16.0/bin/node",
"args": ["/Users/abc/research/mcp/index.js"],
"env": {
"PATH": "/Users/abc/.nvm/versions/node/v22.16.0/bin:/usr/local/bin:/usr/bin:/bin",
"NODE_PATH": "/Users/abc/research/mcp"
}
}
}
}
### 注意这里的 "/Users/abc/research/mcp" 是下载到的文件夹的位置.要改成自己的路径.
Qwen 配置
{
"mcpServers": {
"ax_local_operations": {
"command": "npx",
"args": [
"-y",
"ax-local-operations-mcp@file:/Users/abc/research/mcp"
],
"env": {
"NODE_PATH": "/Users/abc/research/mcp",
"PATH": "/Users/abc/.nvm/versions/node/v22.16.0/bin:/usr/local/bin:/usr/bin:/bin"
}
}
}
}
### 注意这里的 "ax-local-operations-mcp@file:/Users/abc/research/mcp" @file: 后面是下载到的文件夹的位置.要改成自己的路径.
🛠️ 工具使用
文件操作工具
工作目录概念
为了安全性和灵活性,MCP服务器支持工作目录概念:
- 工作目录:通过
working_directory参数指定一个安全的基础目录 - 相对路径:在
path参数中使用相对路径,会自动基于工作目录解析 - 智能检测:自动识别常见的项目目录模式,支持直接使用绝对路径
- 安全限制:只有在允许的项目目录下的操作才被允许
- 跨平台兼容:不硬编码特定路径,适用于不同用户和系统
允许的项目目录模式
系统自动识别以下目录模式,允许直接使用绝对路径:
/isoftstone/- 项目目录/Desktop/- 桌面/Documents/- 文档/Downloads/- 下载/Projects/- 项目/Workspace/- 工作空间/Code/- 代码/Development/- 开发/Work/- 工作/Study/- 学习/Research/- 研究
读取文件
{
"name": "file_operation",
"arguments": {
"operation": "read",
"path": "/path/to/file.txt"
}
}
写入文件
{
"name": "file_operation",
"arguments": {
"operation": "write",
"path": "/path/to/file.txt",
"content": "文件内容"
}
}
列出目录
{
"name": "file_operation",
"arguments": {
"operation": "list",
"path": "/path/to/directory"
}
}
创建目录
{
"name": "file_operation",
"arguments": {
"operation": "create_dir",
"path": "/path/to/new/directory"
}
}
使用工作目录(推荐)
{
"name": "file_operation",
"arguments": {
"operation": "create_dir",
"path": "售前类业务/自动HMI",
"working_directory": "/Users/abc/isoftstone"
}
}
删除文件/目录
{
"name": "file_operation",
"arguments": {
"operation": "delete",
"path": "/path/to/file_or_directory"
}
}
文件编辑工具
删除行
{
"name": "file_edit",
"arguments": {
"operation": "delete_lines",
"path": "/path/to/file.txt",
"start_line": 3,
"end_line": 5
}
}
插入行
{
"name": "file_edit",
"arguments": {
"operation": "insert_lines",
"path": "/path/to/file.txt",
"start_line": 3,
"content": "新插入的内容"
}
}
替换行
{
"name": "file_edit",
"arguments": {
"operation": "replace_lines",
"path": "/path/to/file.txt",
"start_line": 3,
"end_line": 5,
"content": "替换后的内容"
}
}
追加行
{
"name": "file_edit",
"arguments": {
"operation": "append_lines",
"path": "/path/to/file.txt",
"content": "追加到文件末尾的内容"
}
}
命令执行工具
执行命令
{
"name": "execute_command",
"arguments": {
"command": "ls -la",
"working_directory": "/path/to/working/dir"
}
}
文件搜索工具
搜索文件内容
{
"name": "file_search",
"arguments": {
"search_path": "/path/to/search",
"pattern": "function.*\\(",
"file_types": "js,ts",
"case_sensitive": false,
"max_results": 50,
"max_depth": 8,
"timeout_ms": 5000,
"ignore": ["node_modules", "*.log"]
}
}
参数新增说明:
max_depth(默认 8):限制目录递归深度,防止深层/循环结构拖慢搜索。timeout_ms(默认 5000):整体搜索的软超时,超时后会提前结束并返回已收集结果(结尾标注“超时截断”)。ignore:可忽略的文件/目录通配(支持前缀/后缀 * 简单匹配,如*.log、build*、*cache)。
文件比较工具
比较两个文件
{
"name": "file_compare",
"arguments": {
"file1": "/path/to/file1.txt",
"file2": "/path/to/file2.txt",
"output_format": "text"
}
}
文件哈希工具
计算文件哈希
{
"name": "file_hash",
"arguments": {
"path": "/path/to/file.txt",
"algorithm": "sha256"
}
}
文件权限工具
修改文件权限
{
"name": "file_permissions",
"arguments": {
"path": "/path/to/file.txt",
"mode": "755",
"recursive": false
}
}
文件压缩工具
压缩文件
{
"name": "file_archive",
"arguments": {
"operation": "compress",
"source": "/path/to/source",
"destination": "/path/to/archive.zip",
"format": "zip"
}
}
解压文件
{
"name": "file_archive",
"arguments": {
"operation": "extract",
"source": "/path/to/archive.zip",
"destination": "/path/to/extract"
}
}
文件监控工具
监控文件变化
{
"name": "file_watch",
"arguments": {
"path": "/path/to/watch",
"events": "create,delete,modify",
"duration": 60,
"output_format": "text"
}
}
任务管理工具
时间工具
获取当前时间(ISO,含毫秒)
{
"name": "time_tool",
"arguments": {
"format": "iso",
"include_milliseconds": true
}
}
获取 UNIX 时间戳(秒)
{
"name": "time_tool",
"arguments": {
"format": "unix"
}
}
获取本地时间并指定时区
{
"name": "time_tool",
"arguments": {
"format": "locale",
"time_zone": "Asia/Shanghai",
"include_milliseconds": false
}
}
创建任务
{
"name": "task_manager",
"arguments": {
"operation": "create",
"model_name": "claude-3.5-sonnet",
"title": "完成项目文档",
"description": "编写API文档和使用说明",
"priority": "high",
"due_date": "2024-01-15T10:00:00Z",
"subtasks": ["编写API文档", "创建使用示例", "更新README"]
}
}
列出任务
{
"name": "task_manager",
"arguments": {
"operation": "list",
"model_name": "claude-3.5-sonnet",
"status": "pending"
}
}
更新任务
{
"name": "task_manager",
"arguments": {
"operation": "update",
"model_name": "claude-3.5-sonnet",
"task_id": "task_1758140089301_bi4kwqkcl",
"status": "in_progress",
"progress": 50
}
}
完成任务
{
"name": "task_manager",
"arguments": {
"operation": "complete",
"model_name": "claude-3.5-sonnet",
"task_id": "task_1758140089301_bi4kwqkcl"
}
}
🔧 工作原理
MCP 协议通信
- 大模型应用启动 - 根据配置自动启动 MCP 服务器进程
- 建立连接 - 通过 stdio 协议建立通信连接
- 工具发现 - 大模型应用发送
ListTools请求获取可用工具 - 工具调用 - 当需要文件操作时,发送工具调用请求
- 自动管理 - 大模型应用负责管理 MCP 服务器的生命周期
安全机制
本服务器采用分层安全模型:
- 路径沙箱
- 仅允许访问用户主目录及其子目录(相对路径会被解析到用户 home)。
- 所有工具统一调用
securityValidator.resolveAndAssert()进行归一化解析与主目录断言。 - 非法越界将返回错误码
E_PATH_DENIED。
- 命令策略(Phase 0 重构后)
- 使用
lib/commandPolicy.js:正则匹配分级deny | warn | allow。 - deny:抛出
E_DANGEROUS_CMD;warn:需调用方添加{ "confirm": true }复确认。 - 典型 deny:
passwd;典型 warn:rm -rf,sudo,chown,chmod 777。
- 错误与输出统一
- 错误通过自定义
ToolError(code, message)抛出。 - 主要错误码:
E_PATH_DENIED路径不允许E_NOT_FOUND文件/目录不存在E_INVALID_ARGS参数或操作无效E_DANGEROUS_CMD危险命令E_LIMIT_REACHED递归/资源限制
- 输出封装:
responses.text()/responses.json()/responses.both()。
- 递归深度限制
file_permissions工具递归模式默认max_depth = 5,超过抛E_LIMIT_REACHED。
- 压缩/解压安全
- 使用
child_process.spawn参数数组替换字符串拼接,降低命令注入风险。
- 未来计划(Phase 1+)
- file_search 增加
max_depth、timeout_ms与 ignore 列表 - 工具注册解耦 & 生命周期钩子
若需要在企业内部开放更宽权限,可在外层代理做白名单前置,再调用此 MCP。
标准行为变化(自 v2.1.0-alpha.1 起)
| 变更 | 旧行为 | 新行为 |
|---|---|---|
| 路径解析 | 各工具独立解析 | 统一 home 基础 + 断言 |
| 危险命令 | 简单 substring 检测 | 策略分级 + confirm 机制 |
| 错误格式 | 抛普通 Error 文本 | ToolError 结构化(内部) |
| 压缩执行 | 拼接命令字符串 | spawn 参数数组 |
| 递归权限 | 无深度限制 | 默认最大 5 层 |
示例:高风险命令确认
{
"name": "execute_command",
"arguments": { "command": "rm -rf tmp_cache", "confirm": true }
}
示例:递归权限并限制深度
{
"name": "file_permissions",
"arguments": { "path": "project", "mode": "755", "recursive": true, "max_depth": 3 }
}
📁 项目结构
mcp/
├── index.js # MCP 服务器主文件
├── package.json # Node.js 项目配置
├── mcp_config.json # LM Studio 配置
├── qwen_config_final.json # Qwen 配置
├── mcp_config_template.json # 配置模板
├── tools/ # 工具模块目录
│ ├── fileOperation.js # 文件操作工具
│ ├── fileEdit.js # 文件编辑工具
│ ├── fileSearch.js # 文件搜索工具
│ ├── fileCompare.js # 文件比较工具
│ ├── fileHash.js # 文件哈希工具
│ ├── filePermissions.js # 文件权限工具
│ ├── fileArchive.js # 文件压缩工具
│ ├── fileWatch.js # 文件监控工具
│ ├── commandExecution.js # 命令执行工具
│ ├── taskManager.js # 任务管理工具
│ ├── timeTool.js # 时间工具
│ ├── environmentMemory.js # 环境记忆工具核心模块
│ ├── environmentMemoryAdapter.js # 环境记忆工具适配器
│ └── securityValidator.js # 安全验证模块
├── temps/ # 临时文件目录(自动创建)
│ └── todo_<model_name>.json # 任务数据存储(运行时生成)
├── share4u.md # 中文分享文档
├── share4u_en.md # 英文分享文档
├── share4u_jp.md # 日文分享文档
└── README.md # 项目文档
🎯 支持的大模型应用
- ✅ LM Studio - 使用直接 node 执行
- ✅ Qwen - 使用 npx 本地包
- ✅ 其他支持 MCP 协议的应用
🔍 故障排除
常见问题
- 连接失败 - 检查 Node.js 路径和文件权限
- 工具不可用 - 确认 MCP 服务器正常启动
- 权限错误 - 检查文件系统权限
调试方法
- 手动测试 - 运行
npx -y ax-local-operations-mcp@file:/Users/abc/research/mcp - 检查日志 - 查看大模型应用的错误日志
- 验证配置 - 确认配置文件格式正确
📄 许可证
MIT License
🤝 贡献
欢迎提交 Issue 和 Pull Request!
享受强大的本地文件操作能力! 🚀✨
📚 版本历史
v2.6.0 (2025-02-04)
- 添加 MCP annotations 支持(readOnlyHint, destructiveHint 等)
- 添加
isError标记到错误响应 - 重构命令执行为 spawn 模式提高安全性
- 添加 outputSchema 定义支持响应验证
- 完善参数描述和使用示例
- 添加文件大小限制(10MB)和截断处理
- 新增 CLAUDE.md 为 AI 开发提供指导
v2.5.0 (2025-12-05)
- 将版本号从 2.4.1 升级到 2.5.0
- 各种功能更新和改进
v2.1.0-alpha.1 (预发布)
- 路径解析与安全校验统一(
pathUtils+securityValidator.resolveAndAssert) - 命令执行引入策略分级(deny/warn/allow)
- 新增统一错误模块
errors.js与响应封装responses.js - file_archive 使用
spawn避免命令注入 - file_permissions 增加递归深度限制(默认 5)
- 为后续重构(工具注册 / 性能限制)奠定基础
v2.1.0 (2024-09-25)
- 新增环境记忆工具,用于管理环境变量信息
- 支持自动读取和存储环境信息
- 支持动态更新环境信息
环境记忆工具使用示例
读取环境信息
{
"name": "environment_memory",
"arguments": {
"operation": "read"
}
}
更新环境信息
{
"name": "environment_memory",
"arguments": {
"operation": "update",
"key": "PROJECT_PATH",
"value": "/Users/username/projects/myproject"
}
}
获取特定环境变量
{
"name": "environment_memory",
"arguments": {
"operation": "get",
"key": "PROJECT_PATH"
}
}
v2.0.2 (2024-01-15)
- 新增时间工具,支持获取当前时间
- 支持多种时间格式(ISO、RFC3339、UNIX、本地格式)
- 支持时区设置
v2.0.1 (2024-01-10)
- 新增任务管理工具
- 支持任务创建、更新、完成等操作
- 支持优先级管理和进度跟踪
- 支持模型隔离的任务管理
v1.2.0 (2023-12-20)
- 新增文件搜索工具
- 新增文件比较工具
- 新增文件哈希工具
- 新增文件权限工具
- 新增文件压缩工具
- 新增文件监控工具
v1.1.0 (2023-12-10)
- 新增文件编辑工具
- 支持行级编辑操作(删除、插入、替换、追加)
v1.0.0 (2023-12-01)
- 初始版本发布
- 支持基本文件操作(读取、写入、列出、创建、删除)
- 支持命令执行工具
📦 安装与使用(无需下载源码)
支持通过 npm 全局安装或直接使用 npx 运行,无需手动克隆仓库或修改本地路径。
全局安装
npm install -g ax-local-operations-mcp
安装后,可在支持 MCP 的客户端中直接引用可执行文件 ax-local-operations-mcp。
直接使用 npx
无需安装,直接启动:
npx -y ax-local-operations-mcp
在 LM Studio 中使用
将可执行文件设置为 ax-local-operations-mcp(无需绝对路径):
{
"mcpServers": {
"ax_local_operations": {
"command": "ax-local-operations-mcp"
}
}
}
在 Qwen 中使用
使用 npx 直接调用(无需本地源码路径):
{
"mcpServers": {
"ax_local_operations": {
"command": "npx",
"args": ["-y", "ax-local-operations-mcp"]
}
}
}
提示:若公司网络限制 npm,亦可发布到 GitHub Packages 或设置内部 npm 镜像,详见
dev.md发布章节。