使用说明
本地mcp服务器
最低限度 主控程序 服务器,为AI助手提供shell访问和文件上传功能 真正的本地机器,以您选择的目录为根。
此服务器在您的真实机器上运行命令,而不是在沙箱中。 它使用您启动的进程的权限。集
MCP_CWD您可以放心地授予助手访问权限,并期望该目录中的shell命令和文件写入会影响实际文件。
警告
使用前请阅读此内容。
此服务器是一个高度信任的本地工具。运行它时,您授予连接的AI助手以下能力:
- 执行 任何shell命令 在您的机器上(作为您的用户)
- 读取、创建、修改和删除 真实文件
- 运行已安装的程序(
git,npm,python,curl等等) - 查看流程可见的环境变量
- 调用shell可以调用的任何内容
有 无容器、无虚拟机、无文件系统沙盒服务器依赖于强有力的描述性警告来指导助手,而不是硬隔离。
不要点 MCP_CWD 在包含机密、凭据或数据的目录中,您不愿意冒险。
工具
服务器只公开了两个工具:
realmachine.exec_shell
在工作目录设置为的情况下执行shell命令 MCP_CWD.
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
command |
string | yes | 要执行的Shell命令 |
timeout_ms |
integer | no | 最大运行时间(毫秒)(默认值:30000,最大值:600000) |
env |
object | no | 环境变量重写 |
max_output_bytes |
integer | no | 最大stdout+stderr字节数(默认值:512KB,最大值:50MB) |
退货: ok, exit_code, stdout, stderr, cwd, command, started_at, finished_at, duration_ms, truncated, timed_out, signal
realmachine.upload_file
将base64编码的内容写入工作区。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
path |
string | yes | 相对于的目标路径 MCP_CWD |
content_base64 |
string | yes | Base64编码文件内容 |
mime_type |
string | no | MIME类型提示 |
overwrite |
boolean | 否 | 允许覆盖现有文件(默认值:false) |
create_parents |
boolean | no | 创建缺失的父目录(默认值:false) |
退货: ok, path, resolved_path, size_bytes, mime_type, sha256, created, overwritten
安装
使用npx直接从GitHub运行(无需安装):
MCP_CWD=/your/workspace npx github:flrngel/local-mcp-server
配置
服务器需要一个环境变量:
MCP_CWD=/absolute/path/to/workspace
服务器将 拒绝开始 如果 MCP_CWD 缺少、不是绝对路径、不存在或不是目录。
ChatGPT/Claude桌面
添加到MCP客户端配置中:
{
"mcpServers": {
"realmachine": {
"command": "npx",
"args": ["github:flrngel/local-mcp-server"],
"env": {
"MCP_CWD": "/Users/you/projects/my-workspace"
}
}
}
}
来源
git clone git@github.com:flrngel/local-mcp-server.git
cd local-mcp-server
npm install
npm run build
MCP_CWD=/your/workspace npm start
安全模型
此服务器是 描述安全,隔离不安全.
它的作用
- 将工作目录设置为
MCP_CWD对于每个命令 - 验证上传的文件路径是否保持在
MCP_CWD(词汇+符号链接感知) - 强制命令超时(默认30秒,最长10分钟)
- 限制输出大小以防止内存耗尽
- 阻断危险环境变量注入(
LD_PRELOAD,DYLD_INSERT_LIBRARIES) - 使用原子写入(临时文件+重命名)进行文件覆盖
- 将所有操作以结构化JSON形式记录到stderr
- 告诉助手这是一台真正的机器,以避免破坏行为
它不做什么
- 沙盒或以任何方式包含命令
- 过滤或阻止特定的shell命令
- 防止访问外部文件
MCP_CWD通过shell命令 - 从命令输出中删除机密
- 执行命令前需要确认
- 防御完全恶意的模型
要小心的破坏性命令
除非你明确要求,否则助理会被警告避免这些行为:
rm -rf,find ... -deletegit reset --hard,git push --forcechmod -R,chown -Rsudo任何事物- 具有系统范围的包管理器
- 编辑shell配置文件或系统配置
错误代码
| 代码 | 含义 |
|---|---|
INVALID_REQUEST |
输入格式错误 |
INVALID_PATH |
文件路径错误或缺少父目录 |
PATH_OUTSIDE_ROOT |
路径逃逸 MCP_CWD (包括通过符号链接) |
FILE_EXISTS |
文件存在并且 overwrite 是假的 |
PERMISSION_DENIED |
操作系统级权限失败 |
COMMAND_NOT_FOUND |
未找到Shell命令 |
COMMAND_FAILED |
命令以非零代码退出 |
TIMEOUT |
超出命令 timeout_ms |
OUTPUT_TRUNCATED |
超出输出 max_output_bytes |
SERVER_MISCONFIGURED |
MCP_CWD 无效或缺失 |
INTERNAL_ERROR |
意外的服务器错误 |
发展
npm install
npm test # 21 tests, ~1s
npm run build # compile to dist/
npm run dev # run with tsx (no build)
许可证
麻省理工学院
