ABSD DevOps MCP 服务器
本地优先模型上下文协议(MCP)服务器,为人工智能助手提供安全的文件系统和终端操作。
特点/功能
- 22款强大工具9个文件系统 + 4个流式搜索 + 7个终端 + 2个元操作
- 文件系统操作读取(文件/URL/图像)、写入、列出、创建、移动/重命名、搜索(使用ripgrep)、精细编辑、多重读取
- 流式搜索带有分页、会话管理和提前终止功能的后台 ripgrep
- 终端会话带有ANSI感知提示符检测的交互式REPL(Python、Node.js)
- 流程管理列出系统进程,使用确认令牌进行终止
- 图像支持MCP 原生图像内容支持 PNG、JPEG、GIF、WebP、BMP 格式(SVG 以文本形式提供,以保障安全)
- URL 获取HTTP/HTTPS,支持可配置的超时设置和黑名单保护
- MCP 原语资源(服务器状态)+ 提示(工作流模板)
- 安全至上路径遍历保护、命令过滤、输入清理、带警告的无限制模式
- 类型安全使用TypeScript严格模式和Zod模式验证构建
- 仅限本地完全通过stdio传输在您的机器上运行
⚠️ v0.3.3 兼容性更新: Node.js 要求降低至 >= 20.0.0 现在,原生模块已针对 Node.js 20 构建,因此 Claude Desktop 可以在不出现模块版本错误的情况下加载服务器。如果您之前安装的是 v0.3.3 之前的版本,请重新全局安装并重启 Claude Desktop。
⚠️ v0.3.2 安全更新: 默认阻止的命令从6个扩展到31个(包括破坏性磁盘操作、系统/网络修改、包管理器移除、数据销毁)。 现有设施: 检查你的 ~/ABSD_MCP/config.json 并将新的被阻止的命令合并自 config.example.json 翻译为中文是:“配置示例.json” 以享受增强的安全保障。
安装
快速入门(推荐)
# 1. Install globally
npm install -g @anthonybir/devops-mcp
# 2. Run setup (interactive)
absd-mcp-setup\setup\ 命令将:
- ✅ 将MCP服务器添加到Claude Desktop配置中
- ✅ 在指定位置创建默认配置
~/ABSD_MCP/config.json - ✅ 为您的现有Claude配置创建带时间戳的备份
⚠️ 安全警告: 默认配置允许访问您的整个主目录。 审查并限制 allowedDirectories 设置完成后立即。
下一步行动:
- 审查配置:
~/ABSD_MCP/config.json(macOS) 或%USERPROFILE%\ABSD_MCP\config.json(Windows) - 限制
allowedDirectories仅针对所需路径 - 重启Claude桌面版
卸载
# Remove from Claude Desktop config
absd-mcp-unregister
# Uninstall package
npm uninstall -g @anthonybir/devops-mcp手动设置
如果您更喜欢手动配置,请参阅 Claude 桌面版设置 在......下面
使用 npx(无需安装)
npx @anthonybir/devops-mcp@latest需要手动配置Claude Desktop(见下文)。
Codex CLI 设置(TOML 格式)
如果你运行 Codex CLI(注:Codex通常指某种规范或标准,CLI代表命令行界面,但具体含义需结合上下文确定,此处为直译)首先全局安装该包,然后在你的(配置/设置中)添加一个MCP条目 codex.toml:
[[mcp]]
name = "absd-devops"
command = "absd-mcp"
args = []
working_directory = "/Users/yourusername"
env = { ABSD_MCP_CONFIG = "/Users/yourusername/ABSD_MCP/config.json" }保存文件后运行 codex mcp reload (或重启Codex)以便选择新的服务器。更新路径以匹配您的环境。
来自源(或“来源”)
git clone https://github.com/anthonybir/ABSD_MCP.git
cd ABSD_MCP
pnpm install
pnpm build配置
创建一个 config.json 文件(或从……复制 config.example.json):
{
"allowedDirectories": [
"/Users/yourusername/Projects",
"/Users/yourusername/Documents"
],
"blockedCommands": [
"rm -rf /",
"dd if=/dev/zero",
"mkfs",
"shutdown",
"reboot"
// ... see config.example.json for full list of 31 default blocked commands
],
"fileReadLineLimit": 2000,
"fileWriteLineLimit": 75,
"sessionTimeout": 1800000,
"logLevel": "info",
"urlDenylist": ["localhost", "127.0.0.1", "0.0.0.0", "::1"],
"urlTimeout": 10000
}配置选项
- 允许的目录允许文件操作的绝对路径数组(空数组 = 无限制访问)
- 被阻止的命令拒绝执行的危险命令数组(默认:\[\])
- \
fileReadLineLimit\可以翻译为“文件读取行数限制”。每次文件操作读取的最大行数(默认:1000) - 文件写入行限制每次操作最多写入的行数(默认:50)
- 会话超时进程会话超时时间(以毫秒为单位)(默认:1800000 = 30分钟)
- 日志级别日志级别(
debug|info|warn|error(默认:info) - urlDenylist(中文可译为“URL拒绝列表”或“URL阻止列表”)用于阻止URL获取的主机名数组(默认:
["localhost", "127.0.0.1", "0.0.0.0", "::1"]) - urlTimeout 翻译为中文是“URL超时”URL 获取超时时间(毫秒)(默认:10000 = 10 秒)
启用完整文件系统访问权限(高级)
设定;套装;一套 allowedDirectories 到一个空数组([])如果您希望ABSD访问您机器上的所有路径。 你必须保持 blockedCommands 人口稠密的—如果两个列表都为空,服务器将拒绝启动。
{
"allowedDirectories": [],
"blockedCommands": [
"rm -rf /",
"dd if=/dev/zero",
"mkfs",
"shutdown",
"reboot",
"init 0"
// ...and the rest from config.example.json
]
}仅在可信任的本地机器上使用无限制模式,并保留扩展的被阻止命令列表(31项),以避免执行意外的破坏性命令。
路径格式化
Windows 用户: 在JSON中使用正斜杠以避免转义问题:
- ✅
"C:/Users/yourusername/Projects" - ✅
"C:\\\\Users\\\\yourusername\\\\Projects"(双转义的反斜杠) - ❌(表示错误或否定,无具体对应中文含义,可理解为“错误”或根据上下文翻译为“不正确”等)
"C:\Users\yourusername\Projects"(打破JSON)
macOS/Linux 用户: 标准绝对路径:
- ✅
"/Users/yourusername/Projects" - ✅
"/home/username/projects"
Claude 桌面版安装
配置文件位置:
- macOS(苹果电脑操作系统):
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
选项1:使用已安装的软件包(支持离线使用)
如果你已全局安装,请引用 bin 入口:
{
"mcpServers": {
"absd-devops": {
"command": "absd-mcp",
"args": [],
"env": {
"ABSD_MCP_CONFIG": "/path/to/your/config.json"
}
}
}
}选项2:使用npx(仅限在线)
如果使用 npx 或希望获取最新版本:
{
"mcpServers": {
"absd-devops": {
"command": "npx",
"args": ["-y", "@anthonybir/devops-mcp@latest"],
"env": {
"ABSD_MCP_CONFIG": "/path/to/your/config.json"
}
}
}
}ABSD_MCP_CONFIG 路径:
- macOS: 使用完整路径,例如
/Users/yourusername/ABSD_MCP/config.json - Windows: 使用正斜杠,如
C:/Users/yourusername/ABSD_MCP/config.json
重启Claude桌面应用以激活服务器。
可用工具
文件系统工具 (9)
- 读取文件读取支持图像格式(PNG、JPEG、GIF、WebP、BMP)的文件或URL,可选分块处理,以及偏移量支持(出于安全考虑,SVG被视为文本处理)
- 读取多个文件同时读取多个文件,每个文件大小限制为1MB,总大小限制为5MB
- 写文件以追加模式选项创建或覆盖文件
- 列出目录递归列出目录内容并控制深度
- 创建目录创建目录并递归创建父目录
- 移动文件移动或重命名文件和目录(两者路径均已验证以确保安全)
- 获取文件信息获取详细的元数据(大小、权限、时间戳、行数)
- 搜索文件使用 ripgrep 搜索模式(正则表达式、字面量、文件过滤)
- 编辑模块手术文本替换并进行唯一性验证
流媒体搜索工具(4)
- 开始搜索以文件模式或内容模式启动后台 ripgrep 搜索
- contextLines匹配项周围的上下文行数(默认:3) - 提示: 设定;套装;一套 contextLines: 0 用于简洁输出,不包含上下文信息
- 获取更多搜索结果使用基于偏移量的导航获取分页结果
- 停止搜索提前终止正在进行的搜索会话
- 搜索列表查看所有活跃的搜索会话,包括状态和结果数量
终端工具(7)
- 启动进程启动交互式终端会话(Python、Node.js、bash)
- 与进程交互发送命令时,使用ANSI感知的REPL提示符检测(strip-ansi)
- 读取进程输出从后台进程中检索缓冲输出
- 列出会话查看所有带有状态的活跃MCP终端会话
- 终止进程通过PID停止MCP会话
- 列出进程列出所有系统进程(跨平台:Windows/macOS/Linux)
- 终止进程通过确认令牌验证来终止系统进程
元工具(2)
- 获取配置获取当前服务器配置(只读),包括安全状态和元数据
- 获取使用统计信息获取服务器使用统计信息,包括运行时间、工具调用次数(仅成功调用)以及活跃会话/搜索数量。服务器重启时统计信息会重置。
MCP 原语(或基本操作)
资源
暴露服务器状态和配置:
- 配置://absd-mcp/服务器当前服务器配置(允许的目录、限制)
- state://absd-mcp/sessions 翻译为中文是:“状态://absd-mcp/会话”。不过,这里的“state://”通常是一个特定于系统或应用程序的路径或命名空间,直接翻译可能无法完全传达其技术含义,但在中文语境下,可以理解为“(系统/应用中的)状态://absd-mcp/会话”或简化为“absd-mcp的会话状态”,具体翻译还需根据上下文来确定带有状态的活动终端会话
提示
为常见工作流程预配置的模板:
- 分析代码库分析项目结构和技术栈
- 设置Python环境交互式Python开发环境
- 搜索并替换带引导替换的模式搜索
安全
这个MCP服务器实现了多层安全机制:
- 路径验证所有文件操作均针对允许的目录进行验证
- 符号链接解析防止基于符号链接的路径遍历攻击
- 命令过滤阻止危险的终端命令
- 输入消毒(或输入净化)移除空字节和控制字符
- Zod 验证所有工具输入均经过严格模式验证
发展
运行测试
pnpm test # Run all tests
pnpm test:security # Run security tests only建筑;建筑物
pnpm build # Build for production
pnpm dev # Development mode with watch使用MCP Inspector进行测试
npx @modelcontextprotocol/inspector pnpm dev故障排除
服务器未出现在Claude中
- 检查 claude_desktop_config.json 中 config.json 的路径是否正确
- 完全重启Claude桌面版
- 检查Claude的MCP日志中的错误
权限错误
确保所有路径在 allowedDirectories 存在并且可通过您的用户帐户访问。
命令被阻止
如果合法命令被阻止,请检查 blockedCommands 在你的配置中的数组。
做出贡献
欢迎投稿!请:
- 为仓库创建分支(或“克隆仓库”)
- 创建一个特性分支
- 为新功能添加测试
- 确保所有测试通过(
pnpm test) - 提交一个拉取请求
许可证
MIT 许可证 - 详见 许可证 文件中有详细信息。
作者
安东尼·比尔
