mcpField
A
agent-tool

agent-tool

本地服务
github.com/knewstimek开发工具242 周前更新

关于 agent-tool

agent-tool 是面向 AI 编码 Agent 的 MCP 工具服务,提供感知编码和缩进的文件读写、编辑工具,以及 SSH、SFTP、数据库、静态分析等约 40 个工具。它适合需要保持项目约定并控制上下文体量的开发场景。

主要功能

  1. 01感知编码与缩进的文件读写编辑
  2. 02保留 EUC-KR、Shift-JIS、GB18030 编码
  3. 03core 等精简配置档,减少工具 schema 体量
  4. 04SSH、SFTP 远程执行与文件传输
  5. 05静态二进制分析与 DAP 调试
  6. 06Windows GUI 自动化与进程内存工具

适用场景

  1. 01在使用 Tab 缩进或旧编码的项目中修改代码
  2. 02通过 SSH 在远程主机执行命令并传输文件
  3. 03对二进制文件进行反汇编和函数分析

MCP 相关

agent-tool 本身是 MCP 服务,向 Claude Code、Codex CLI、Cursor 等 MCP 客户端暴露文件、进程、网络、数据库和分析等工具。客户端可通过 toolbox 网关按需加载具体操作的字段。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库
安装包
mcpbagent-tool.mcpb

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

agent-tool

한국어

agent-tool MCP 服务

面向 AI 编码 Agent 的 MCP(Model Context Protocol)工具服务。

为什么?

AI 编码 Agent(Claude Code、Cursor、Codex 等)中的内置工具存在一些已知限制:

  • 制表符缩进会出错:大模型会输出空格,但你的项目使用制表符。内置的 Edit 工具会原样写入空格,破坏项目的缩进风格。
  • 编码损坏:编辑 EUC-KR、Shift-JIS 或 GB18030 文件时,文件会在不提示的情况下转换为 UTF-8,导致旧项目出错。
  • 独立工具过多:让 Agent 查找、安装和配置 Redis CLI、MySQL 客户端、SSH 客户端等工具,既繁琐又容易出错。agent-tool 将 40 种工具打包到一个二进制文件中,并通过精简配置按需提供这些工具。
  • 缺少逆向工程支持:内置工具无法反汇编二进制文件、检查 PE/ELF 标头、查找函数边界或搜索交叉引用。agent-tool 提供静态二进制分析(反汇编、使用 PDB/DWARF 类型反编译为 C、交叉引用、函数检测)、DAP 调试器和 CheatEngine 风格的内存工具,让你的 Agent 具备完整的逆向工程能力。
  • 网络审查:在某些国家,政府级网络过滤会导致普通的 curl/wget 请求失效。agent-tool 默认使用 ECH(加密客户端问候)和 DoH(基于 HTTPS 的 DNS)来绕过这些限制。

agent-tool 通过面向 Agent 的工具解决这些问题:既能保留项目约定,又能控制模型上下文的大小。

支持的 Agent

Claude Code、Codex CLI、Cursor、Windsurf、Cline、Gemini CLI,以及任何兼容 MCP 的 Agent。

默认高效利用大模型上下文

默认的 core 配置仅提供 11 个架构(包括 toolbox),而非全部 40 个。在协议层面的测量中,这将序列化后的工具列表从约 74 KB(full)缩减至 15 KB。若要尽可能减少稳定状态下的上下文占用,请从 --profile core-lite 开始;其 5 个架构约为 6.4 KB,仅提供 read、write、edit、grep 和 toolbox。使用 toolbox(operation="describe", tool="ssh", compact=true, tool_operation="execute") 可仅加载某个操作的字段和必填列表,然后通过 toolbox(operation="call", tool="ssh", arguments={...}) 调用该操作。网关不依赖动态工具列表刷新,因此可与 Codex 等使用固定绑定的客户端配合使用。Describe 会返回与工具及版本绑定的 schema_handle;如果架构仍为最新版本,后续 describe 携带此句柄时会返回简短的“未更改”确认。常用的精简操作包括 SSH 执行、MySQL 查询、文件复制、Windows 截图/剪贴板图像以及静态分析操作。你也可以从 --profile core-lite|coding|remote|analysis|full 开始。

可能较大的文本响应默认限制为 32K 个字符,硬性上限为 128K。截断情况始终会明确显示,支持分页的工具会返回 next_offset 或 next_cursor。本地相对路径会先相对于显式指定的工作区解析,然后再相对于 MCP 客户端根目录解析。

功能

Tool描述状态
Edit字符串替换,支持智能缩进和保留编码(支持 dry_run)✅
Read感知编码、带行号的读取。默认读取 400 行/32K 个字符,报告截断情况和精确的 next_offset,安全处理超长行,可选 SHA-256。支持灵活的偏移量和 MCP ImageContent✅
Write感知编码的文件创建/覆盖✅
Grep感知编码的正则搜索,输出预算为 32K,按文件分组的紧凑输出,相对路径,过滤 .gitignore/.ignore/生成目录,检测二进制文件,支持输出模式/上下文,以及不会重复匹配项的确定性 next_cursor 分页✅
Glob排序、有界的文件匹配,支持 **、相对路径、过滤 .gitignore/.ignore/生成目录、明确的 has_more,以及确定性游标分页✅
ListDir有界/可分页的目录列表。支持 max_entries + 续接游标、目录/文件筛选、条目名称 glob 筛选、仅计数模式、平铺/树形输出✅
Diff比较两个文件并输出统一差异(感知编码)。如果文件仅换行符不同或仅末尾换行符不同,会说明这一点,而不是返回空差异✅
Patch将统一差异补丁应用到文件(支持 dry_run)。每行保留自己的行结束符,因此混合 CRLF/LF 的文件不会被重写✅
Checksum计算文件哈希(md5、sha1、sha256)✅
FileInfo文件元数据(大小、编码、混合行结束符计数、缩进、行数)✅
ConvertEncoding转换文件编码(EUC-KR ↔ UTF-8、添加/移除 BOM 等)✅
Delete安全删除文件/目录,包括紧凑批量删除最多 100 个 file_paths。目录需要 recursive=true;支持受保护根目录、阻止符号链接、限制错误数量,以及 dry_run 预览✅
Rename原子重命名或移动文件/目录(dry_run)✅
ProcList列出正在运行的进程 — PID、名称、命令行、内存。自动屏蔽敏感参数。可按名称或端口筛选✅
ProcKill按 PID 或端口终止、挂起或恢复进程。支持进程树终止、信号选择(kill/term/hup/int/stop/cont)、僵尸进程处理(Linux)、dry_run✅
ProcExec以新进程执行命令。支持前台/后台/挂起启动、超时/环境变量,以及安全压缩重复诊断信息并提供限时原始输出检索✅
SSHSSH 执行,捕获输出头尾各 32K、提供原始字节数、正确处理非零退出错误,并支持后台作业(start/status/tail/cancel)。支持感知认证的连接池、主机密钥验证、ProxyJump、IPv6✅
SSHKey在 PuTTY PPK v3、传统 PEM、现代 OpenSSH 和 PKCS#8 之间转换本地私钥。自动检测输入格式,支持加密的 PPK/OpenSSH 输出,以 0600 权限写入,且绝不返回密钥材料✅
SFTP通过 SSH 传输文件并管理远程文件系统。支持 upload、download、ls、stat、mkdir、rm、chmod、rename。复用 SSH 会话池。每次传输最多 2 GB✅
Bash持久化 Shell 会话,保留工作目录/环境变量,安全压缩重复诊断信息并提供限时原始输出检索。会话池(最多 5 个,空闲超时 30 分钟)。Unix:bash/sh;Windows:PowerShell/git-bash/cmd✅
Download从 URL 下载文件到磁盘。默认使用 ECH + DoH。防止 SSRF。支持 HTTP/SOCKS5 代理。原子写入。最多 2 GB✅
HTTPReq使用任意方法执行 HTTP 请求(GET/POST/PUT/PATCH/DELETE/HEAD/OPTIONS)。支持使用自定义标头、正文、代理进行 API 测试。防止 SSRF✅
Query根据点号表示法路径(例如 dependencies.react、services.web.ports[0]、users[*].email),从 JSON、YAML 或 TOML 文件中读取一个值;根据扩展名或 format 确定格式。减少大型配置文件的令牌消耗✅
Copy复制文件/目录,支持原子写入并保留权限。递归复制目录。Windows 锁定文件回退处理(将正在运行的 exe/DLL 重命名至旁侧)。dry_run 预览✅
Mkdir创建目录,可选权限模式(八进制,例如 0755)。默认递归创建(mkdir -p)。dry_run 预览✅
MultiRead一次读取最多 50 个文件,共享 32K 调用预算,默认每个文件最多读取 200 行,安全处理超长行,并提供每个文件/整体的续读元数据。哈希需选择启用✅
RegexReplace在文件/目录中进行正则查找与替换。保留编码和行结束符,支持捕获组($1、$2)。跳过二进制文件。dry_run 预览✅
NetCheck网络诊断:external_ip(公共 IPv4/IPv6,支持服务提供商回退)、dns(通过 DoH 或系统解析器查询 A/AAAA/MX/CNAME/TXT/NS/SOA)、tls(证书主题、颁发者、到期时间、SAN、TLS 版本、密码套件)、port(TCP OPEN/CLOSED 及响应时间)✅
MySQL在 MySQL/MariaDB 上执行 SQL 查询。SELECT 结果以表格形式显示,可配置行/列/单元格/总输出限制;DML 显示受影响的行数。分页请使用 SQL LIMIT/OFFSET✅
Redis执行 Redis 命令并按类型格式化输出。支持 TLS。阻止危险命令(FLUSHALL、SHUTDOWN 等)✅
SLOC按语言统计源代码行数。支持检测 70 多种语言、按文件/语言分类统计、空行统计、max_depth 控制✅
Debug通过 DAP(Debug Adapter Protocol)进行交互式调试。全面支持 DAP,变量、补全、模块和已加载源文件均提供有界值/输出和分页。已使用 dlv(Go)、debugpy(Python)、codelldb(C/C++/Rust)测试。可与任何兼容 DAP 的适配器配合使用。支持 Stdio 和 TCP 模式。注意:vsdbg(Microsoft)需要 VS Code 许可证,不能单独使用 — 可使用 codelldb 或 netcoredbg 作为开源替代方案✅
Analyze静态二进制分析与逆向工程。将 x86/x64 PE/ELF 函数反编译为 C(Gosleigh,是 Ghidra 反编译器核心的 Go 移植版,在具有时间/内存限制的隔离工作进程中运行);自动读取匹配的 PE PDB(内置读取器,无需 DIA SDK;pdb_force 可加载 GUID 不匹配的 PDB)或嵌入的 DWARF,以便在反编译中获取函数名称、原型、struct/enum 类型、全局数据、位域和局部变量(名称与类型)(函数中提及的 struct/enum 会在函数之后打印,并附带成员偏移量和 enum 值;type_info 可按名称打印其他类型信息),并在 disassemble、call_graph 和 function_at 中获取名称和精确函数边界;对 MSVC 修饰名称进行反修饰;Go 二进制文件使用 Go ABI;像 Ghidra 一样检测不返回的函数;agent-tool decompile-all 将整个二进制文件导出为 JSONL 语料库;x86/x64/ARM/ARM64 反汇编;语义 x86/x64 指令搜索(助记符、寄存器、立即数、内存位移),支持全面恢复可执行偏移、CFG 置信度、函数名称、目标/结果筛选,以及并行不动点寄存器/栈/只读常量追踪,涵盖 ABI 感知的调用和尾调用(对 stdcall 参数清理建模,并从导入的 DLL 中读取 x86 导入信息);PE/ELF/Mach-O 解析,支持有界、可分页的 PE 导入输出;针对地址、包含文本的字符串或 struct 字段(Class::member,需通过反编译确认)执行 xref,涵盖代码、立即数和数据指针(vtable 槽),每个引用均标注其所属函数;函数发现/调用图(无 PDB 时的函数边界与匹配的 PDB 边界相比,大型 x64 映像中 100% 的地址、x86 中 99.5% 的地址一致;支持通过 thunk 和尾跳转查找调用方,以及 vtable 引用)、指针/RTTI/vtable/struct 分析、imphash、Rich 标头、DWARF、字符串、十六进制转储、模式搜索、熵、overlay 检测和二进制差异。无全局文件大小限制✅
MemtoolCheatEngine 风格的进程内存工具 — 搜索/筛选/读取/写入内存值、read_chain(解析 base+offset 指针链,一次调用批量处理)、实时反汇编(x86/x64/ARM/ARM64)、撤销、struct 模式搜索、指针扫描、内存差异。大型扫描使用磁盘支持的快照。会话管理支持空闲超时。适用于 Windows(ReadProcessMemory)和 Linux(/proc/pid/mem)。Windows 在提升权限时会自动启用 SeDebugPrivilege;可选择启用 force_dacl,绕过同一用户进程自行强化的 DACL(之后恢复原设置)✅
WintoolWindows GUI 自动化 — 查找/枚举窗口和子控件、截取屏幕截图(通过 PrintWindow 获取 ImageContent PNG)、读取剪贴板图像、读取/设置文本、点击、输入、发送原始消息、显示/隐藏/最小化/最大化、移动/调整大小、关闭、聚焦。截图/剪贴板默认返回 ImageContent(可通过 save_path 选项输出到文件)。让 AI Agent 能够“查看”并与 GUI 应用交互。仅适用于 Windows✅
CodeGraph完全内嵌的语义代码图谱:Go 标准库 AST,加上用于 C/C++、Python、C#、Rust 和 Java 的延迟压缩 tree-sitter WASM。支持声明/定义身份、返回链和泛型/别名传播、传递包含、经校准的重载证据、虚拟/接口分派、宏/回调边、构建条件来源信息,以及多根工作区。无需编译器、语言服务器、外部二进制文件、大模型调用或令牌消耗✅
SetConfig更改运行时设置(编码、文件大小限制、符号链接、工作区等)✅
Help内置 Agent 使用指南(编码、缩进、故障排除)✅

主要改进

智能缩进

大模型通常输出空格,但许多项目使用制表符。AgentTool 会自动转换缩进,以匹配文件现有的风格。

  • 读取 .editorconfig 中的 indent_style 和 indent_size
  • 根据内容检测进行回退(前 100 行)
  • 保护旧文件:如果实际内容与 .editorconfig 矛盾,则不会转换
保留编码

编辑会保留原始文件编码,而不是强制使用 UTF-8。

  • 检测优先级:BOM → .editorconfig 字符集 → 无 BOM 的 UTF-16 → 有效 UTF-8 → chardet 自动检测 → 回退编码
  • 支持:UTF-8、UTF-8 BOM、EUC-KR、Shift-JIS、ISO-8859-1、UTF-16(LE/BE,带或不带 BOM)等
  • ASCII 不会触发误报:会直接验证有效的 UTF-8,因此纯 ASCII 文件不会触发低置信度警告
  • 换行符:可检测 LF、CRLF、CR 和混合换行符的文件。无论文件使用 CRLF 还是 LF(包括混合使用两者的文件),edit 都能匹配多行 old_string;由 edit/regexreplace 插入的文本会遵循插入位置所在区域的换行符风格,因此文件其余部分的字节保持不变
防止目录列表占用过多令牌

listdir 默认每页返回 500 个条目;有更多条目时会返回 next_cursor。可使用 directories_only、files_only、name_pattern(例如 A*)或 include 中的多个 OR 模式来缩小结果范围。只需要匹配的文件/目录数量时,请使用 counts_only=true。

释放闲置内存

在没有工具调用 30 分钟后,服务会将堆内存归还给操作系统。stdio MCP 服务无法区分已被放弃的客户端和暂时安静的客户端——启动它的进程可能仍在运行,虽然已经用完它,却依然保持管道打开,因此永远不会收到 EOF;根据这种猜测退出,会导致只是暂停的会话中断。释放内存是更安全的折中:曾读取 50MB 文件的实例会恢复到约 20MB 的基线,而不是在机器后续运行期间一直占用 200MB。已打开的 shell 和 ssh 会话不会受影响,客户端可观察到的行为也不会改变。

快速开始

  1. 从 Releases 下载适用于你操作系统的二进制文件
  2. 运行 agent-tool install(针对特定 Agent 时,运行 agent-tool install claude)
  3. 重启 IDE / Agent
  4. 完成——精简的核心工具立即可用;toolbox 可按需介绍并调用所有其他工具

或者直接让你的 AI Agent 帮你完成:

“从 https://github.com/knewstimek/agent-tool/releases/latest 下载 agent-tool 并运行 agent-tool install”

任何功能完善的 AI 编码 Agent(Claude Code、Codex 等)都能自动完成下载 → 安装 → 重启的完整流程。

推荐:告知 Agent 优先使用 agent-tool

安装后,Agent 可以使用 agent-tool,但可能仍会默认使用内置工具(Read、Edit 等)。若要确保 Agent 优先使用 agent-tool 具备编码感知和智能缩进的工具,请添加以下其中一条指令。

代码导航提示:对于大型项目,将此内容添加到 CLAUDE.md / AGENTS.md,以启用基于 AST 的代码导航:

At the start of a session, run codegraph(op="index", path="<project_root>") to build a code index.
For several repositories sharing one graph, use codegraph(op="index", path="<db_root>", roots=["<source_root_1>", "<source_root_2>"]). Source-root provenance prevents unrelated projects with the same symbol names from contaminating candidates while explicit/transitive includes can still cross roots.
Then use codegraph for structural queries (find, callers, callees, methods, inherits) instead of grep.

选择 严格或宽松:

模式适用场景指令
严格包含非 UTF-8 文件或混合缩进的项目ALWAYS use agent-tool MCP tools (mcp__agent-tool__*) instead of built-in file tools. agent-tool preserves file encoding and respects .editorconfig indentation settings.
宽松一般项目Prefer agent-tool MCP tools (mcp__agent-tool__*) over built-in file tools when available.

添加位置:

Claude Code — CLAUDE.md(单个项目)或全局指令

单个项目 — 添加到项目的 CLAUDE.md:

ALWAYS use agent-tool MCP tools (mcp__agent-tool__*) instead of built-in file tools.

全局(所有项目)— 添加到 ~/.claude/CLAUDE.md:

ALWAYS use agent-tool MCP tools (mcp__agent-tool__*) instead of built-in file tools.

强制执行 — 在权限级别通过 ~/.claude/settings.json 禁用内置文件工具:

{
  "permissions": {
    "deny": ["Read", "Edit", "MultiEdit", "Write", "Glob", "Grep"]
  }
}

这样会使 Claude Code 的内置文件工具不可用,从而强制 Agent 使用 agent-tool。如果希望严格执行而不依赖提示词指令,建议采用此方式。

Codex CLI — model_instructions.md(全局)
  1. 添加到 ~/.codex/config.toml(顶层,而非 [mcp_servers.*] 内部):
model_instructions_file = "~/.codex/model_instructions.md"
  1. 创建 ~/.codex/model_instructions.md:
ALWAYS use agent-tool MCP tools (mcp__agent-tool__*) instead of built-in file tools.
  1. 重启 Codex。

单个项目 — 改为添加到项目的 AGENTS.md。

Cursor / Windsurf / Cline — .cursorrules 或 AGENTS.md

添加到项目的 .cursorrules、.windsurfrules 或 AGENTS.md:

ALWAYS use agent-tool MCP tools (mcp__agent-tool__*) instead of built-in file tools.

安装

自动安装(推荐)
# Register with all detected agents (full auto-approve — all tools)
agent-tool install

# Safe mode — only auto-approve local file tools (no SSH, HTTP, DB, shell)
agent-tool install --safe-approve

# No auto-approve — manual approval required for every tool call
agent-tool install --no-auto-approve

# Register with a specific agent
agent-tool install claude
agent-tool install claude --safe-approve

# Uninstall (removes agent-tool entry only, preserves other settings)
agent-tool uninstall          # from all agents
agent-tool uninstall claude   # from specific agent

安装权限级别:

级别标志自动批准的工具
完全(默认)(无)所有工具(mcp__agent-tool__* 通配符)
安全--safe-approve29 个仅限本地的工具(读取、编辑、写入、grep、glob 等)——不包括 SSH、HTTP、DB、bash、进程控制
无--no-auto-approve无工具——每次调用都需要手动批准

批准级别与架构配置无关:安装时可以批准整个命名空间, 而服务仍以节省令牌的 core 配置启动。 toolbox 不会由 --safe-approve 自动批准,这是有意为之, 因为它的 operation=call 网关可以调用网络、shell、数据库和进程控制 工具。安全模式用户应逐一审核每次 toolbox 批准;除非有意信任整个 AgentTool 命名空间,否则应避免授予永久允许规则。

手动设置

Claude Code / Cursor / Cline(settings.json 或 mcp.json):

{
  "mcpServers": {
    "agent-tool": {
      "command": "/path/to/agent-tool"
    }
  }
}

Codex CLI(~/.codex/config.toml):

[mcp_servers.agent-tool]
command = "/path/to/agent-tool"
选项
# Select the initial schema profile (default: core)
agent-tool --profile core-lite

# Set fallback encoding for projects with non-UTF-8 files
agent-tool --fallback-encoding EUC-KR

配置是预设方案:core-lite(读取/写入/编辑/grep/toolbox)、core(11 个 架构)、coding(在 core 基础上扩展更多文件/构建/shell 工具)、remote、analysis 和 full。运行时,优先使用与客户端无关的 toolbox 网关:operation=describe 会返回一个工具的架构 (compact=true 加上 tool_operation 可将其限制为单个操作),而 operation=call 则通过稳定的 toolbox 绑定调用该工具。重新发送返回的 schema_handle,即可避免再次收到未变化的架构。当命令 诊断信息被压缩后,operation=output 可通过报告的 ID 获取有界的原始输出,有效期为 30 分钟;需要分页时会报告 next_offset。enable、 disable 和 profile 仍可供支持 tools/list_changed 的客户端使用;固定绑定的客户端则始终可以继续使用网关。

环境变量

设置 AGENT_TOOL_FALLBACK_ENCODING 和/或 AGENT_TOOL_PROFILE,以避免反复传入 CLI 标志:

# Windows (no admin required)
setx AGENT_TOOL_FALLBACK_ENCODING EUC-KR
setx AGENT_TOOL_PROFILE coding

# Linux / macOS (add to ~/.bashrc or ~/.zshrc)
export AGENT_TOOL_FALLBACK_ENCODING=EUC-KR
export AGENT_TOOL_PROFILE=coding

优先级:CLI 标志 > 环境变量 > 默认值(UTF-8)。

本地 SSH/SFTP 连接配置

SSH 和 SFTP 接受 connection_profile 或会话本地的 connection_id, 因此无需重复填写主机、用户、密钥和跳转主机字段。配置文件从 OS 用户配置目录下的 agent-tool/connections.json 读取;使用 AGENT_TOOL_CONNECTION_PROFILE_FILE 可覆盖其位置。如果将此文件放在工作区内,请将其保留在本地并明确加入忽略列表。

{
  "connections": {
    "dev": {
      "host": "192.0.2.10",
      "user": "builder",
      "key_file": "/local/path/to/id_ed25519",
      "host_key_check": "strict",
      "trusted": true
    }
  }
}

首次调用会返回不透明的 connection_id,30 分钟内可供这两种工具重复使用。本地配置默认设为 trusted:true;将其设为 trusted:false,即可在每次调用时显示私有地址警告,而不是每个连接池连接只显示一次。这只影响显示;SSRF 拦截和云元数据保护保持不变。SSH 还支持 quiet、echo_command 和 result_only;最后一个选项会返回以 stdout、stderr 和 exit_code 为核心的精简 JSON。SFTP 支持 quiet、result_only 和 upload_many(最多 100 个文件)。

对于 Windows PowerShell,请使用 powershell_script 而不是 command 传入脚本文本。 SSH 会通过一条简短 PowerShell 命令的标准输入上传唯一的 UTF-8 临时 .ps1 文件, 使用简短的 PowerShell 启动器执行其内容,并在成功或失败后将其删除。使用 -EncodedCommand(或 -enc、-ec、-e)的独立 powershell[.exe] / pwsh[.exe] 命令会在达到 8,000 个 UTF-16 代码单元时自动暂存。安全配置文件、交互、线程单元和执行策略选项会保留;不支持的选项或 shell 后缀需要明确传入 powershell_script。脚本大小上限为 4 MiB。 不要求使用 SFTP,包括连接旧版 Windows SSH 服务器时。

{"operation":"execute","connection_profile":"dev","powershell_script":"Write-Output 'hello'","result_only":true}

准备和前台执行共用 timeout_sec。 后台脚本使用相同的上传和清理流程,然后提供 job_id,用于查询状态、查看尾部输出或取消。 远程启动器会尝试在 finally 中清理;确认执行完成后,也会通过 SSH 进行有时限的清理。取消或连接中断并不能证明远程执行已终止,因此工具会将删除工作留给远程启动器;如果无法确认执行完成或清理情况,则会报告 cleanup_warning。此警告与脚本的退出代码和捕获的输出分开。

本地 SSH 私钥转换

ssh_key 可转换私钥文件,过程中不会通过网络发送其内容,也不会在响应中返回密钥材料。输入格式会自动检测为 PPK、PEM、PKCS#8 或 OpenSSH。输出格式可以是 ppk、pem、pkcs8 或 openssh。

{
  "operation": "convert",
  "input_path": "server.pem",
  "output_path": "server.ppk",
  "output_format": "ppk",
  "input_passphrase": "",
  "output_passphrase": "",
  "overwrite": false
}

PPK 输出使用第 3 版。带密码短语保护的 PPK 输出使用 Argon2id、 AES-256-CBC 和 HMAC-SHA-256;受保护的 OpenSSH 输出使用 OpenSSH 的现代 加密格式。传统 PEM 和 PKCS#8 输出不会加密;如需加密输出,请使用 openssh 或 ppk。新文件的权限模式为 0600;除非设置 overwrite=true,否则不会替换现有文件。

运行时配置

Agent 可以通过 set_config 在运行时更改设置,无需重启:

参数描述默认值
fallback_encoding自动检测失败时使用的回退编码UTF-8
encoding_warnings显示编码检测警告true
max_file_size_mb读取/编辑/grep 的最大文件大小(MB)100
allow_symlinks允许从 tar 归档中提取符号链接false
workspace显式指定本地工作区根目录。否则依次使用第一个 MCP 客户端根目录和 cwd(MCP root/cwd)
allow_http_private允许 webfetch/download/httpreq 访问私有 IPfalse
allow_mysql_private允许 mysql 工具访问私有 IPtrue
allow_redis_private允许 redis 工具访问私有 IPtrue
allow_ssh_private允许 ssh/sftp 工具访问私有 IPtrue
enable_doh全局启用 HTTPS 上的 DNS(webfetch/download/httpreq/dnslookup)true
enable_ech全局启用加密客户端问候(webfetch/download/httpreq)true

构建

go build -trimpath -ldflags="-s -w" -o agent-tool .

交叉编译:

GOOS=linux GOARCH=amd64 go build -trimpath -ldflags="-s -w" -o agent-tool .
GOOS=darwin GOARCH=arm64 go build -trimpath -ldflags="-s -w" -o agent-tool .
GOOS=windows GOARCH=amd64 go build -trimpath -ldflags="-s -w" -o agent-tool.exe .

发布

受保护的 GitHub 工作流会运行测试、构建所有声明的资产、创建 MCPB 和校验和,并验证上传的字节。从干净且已推送的 master 分支开始,触发仅构建的试运行:

.\scripts\release.ps1

试运行成功后,发布 main.go 中声明的版本:

.\scripts\release.ps1 -Publish

该工作流要求在 docs/releases/vVERSION.md 中提供已跟踪的说明。发布操作会创建附注标签和 GitHub Release,然后使用已发布 MCPB 的哈希更新 server.json。当 RepoPlane 将此仓库用作工作区时,也可以通过仓库本地的 catalog/ 清单发现相同的试运行、发布和状态操作。

故障排除

文本乱码(编码问题)

如果韩文、日文或其他非 ASCII 文本显示为乱码:

选项 1:将 charset 添加到 .editorconfig:

[*]
charset = euc-kr

选项 2:设置环境变量(持久生效):

setx AGENT_TOOL_FALLBACK_ENCODING EUC-KR   # Windows
export AGENT_TOOL_FALLBACK_ENCODING=EUC-KR  # Linux

选项 3:CLI 标志(仅当前会话生效):

agent-tool --fallback-encoding EUC-KR
面向 Agent 的内置帮助

agent-tool 包含一个 agent_tool_help 工具,Agent 可调用它获取使用指南。当 Agent 遇到编码警告或文本乱码时,可以调用:

{ "tool": "agent_tool_help", "arguments": { "topic": "encoding" } }

可用主题:overview、encoding、indentation、tools、troubleshooting

安全

agent-tool 提供强大的系统访问能力(SSH、MySQL、Redis、文件操作、HTTP 请求)。 与 AI 编码 Agent 搭配使用时,请注意提示词注入风险:

  • SSRF 防护:无论设置如何,云元数据 IP(169.254.x.x、fe80::/10)始终会被屏蔽。可通过 set_config 按协议配置私有 IP 访问权限(allow_http_private、allow_mysql_private、allow_redis_private、allow_ssh_private)
  • DLP(数据丢失防护):所有出站 HTTP 请求正文都会扫描敏感数据模式(PEM 私钥、AWS 访问密钥、GitHub/GitLab 令牌、Slack 令牌、.env 文件转储),并会在传输前拦截
  • 提示词注入警告:允许的私有 IP 连接会显示简短警告;受信任的本地 SSH/SFTP 配置文件则会在每个连接池连接上显示一次
  • Zip Slip 防护:会拦截包含 ../ 路径遍历的归档条目(zip 和 tar 均适用)
  • Zip Bomb 防护:单个文件大小上限为 1GB,总解压大小上限为 5GB
  • 符号链接:默认跳过。可通过 set_config allow_symlinks=true 启用(仅限 tar;zip 符号链接始终跳过)。即使启用,也会拦截指向输出目录以外的符号链接
  • 文件大小限制:可配置的最大文件大小(默认 100MB)可防止大型文件导致 OOM。可通过 set_config max_file_size_mb=N 调整
  • 编码安全:chardet 使用 64KB 样本(而非整个文件)以提高内存效率

为确保最高安全性,请在批准 AI Agent 的工具调用前进行审核,尤其是 SSH 命令、发往外部 URL 的 HTTP 请求和数据库查询。

技术栈

  • 语言:Go
  • MCP SDK:github.com/modelcontextprotocol/go-sdk
  • 编码:saintfish/chardet + golang.org/x/text
  • 分发:单个二进制文件(交叉编译)
  • 反编译器:Gosleigh,内嵌 Ghidra x86/x64 语言规范
  • PDB:gopdb(PDB 7.0 读取器和 MSVC 符号反混淆器)

许可证

MIT

反编译器(Gosleigh)及其内嵌的 Ghidra 语言规范采用 Apache License 2.0 许可;Gosleigh 是 Ghidra 反编译器的重新实现,由美国国家安全局开发(https://github.com/NationalSecurityAgency/ghidra)。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。