Token导航 LogoToken导航TokenDH.com
Kahlo MCP logo
AI代理未说明官方级别未说明来源级核验

Kahlo MCP

MCP Server

Kahlo 是一个基于 Frida 的 MCP 服务器,为 AI 代理提供 Android 动态检测功能,支持进程附加、代码注入和自动化分析工作流。

工具数

28

提示词数

0

GitHub Stars

108

资源数

0
TypeScriptClaudeAI代理ClaudeCursor

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

FuzzySecurity

提供方

FuzzySecurity

最后核验

2026/5/17 20:21

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

(弗里达)卡罗MCP

Kahlo is a Frida MCP server that exposes Android dynamic instrumentation capabilities to AI agents. It wraps Frida's runtime manipulation APIs into a structured tool interface, enabling AI systems to attach to processes, inject instrumentation code, capture telemetry, and iterate on analysis workflows without manual intervention.

The server manages the full lifecycle of instrumentation sessions: device discovery, process attachment or spawning, job execution with per-script isolation, event streaming with cursor-based pagination, and binary artifact storage. Jobs run in isolated Frida scripts with automatic cleanup on cancellation. A built-in stdlib provides many standard code primitives for Java object inspection, stack traces, Intent parsing, and method hooking.

有关更多详细信息,请阅读随附的博客文章: https://knifecoat.com/Posts/Scalable+研究+工具+for+代理+系统

设置和安装

编辑现有 kahlo-mcp/config.json 在这个repo和set中 adbPath完整路径 您要使用的ADB二进制文件。这在Windows和UNIX系统上运行良好。

{
  "transport": "stdio",
  "logLevel": "info",
  "dataDir": "./data",
  "adbPath": "/path/to/adb"
}

安装依赖项并构建:

cd kahlo-mcp
npm install
npm run build
字段必填描述
transport"stdio" 目前支持(SSE即将推出)
logLevel使用 "info" 目前(更多控制措施即将出台)
dataDir运行、模块、草稿、工件的目录。默认为 kahlo-mcp/data
adbPathADB二进制文件的完整路径

上传a frida-server 二进制文件到您的设备,以匹配 frida 版本在 ,然后运行它(最好作为root)。

MCP集成

克劳德代码

编辑您的claude用户json首选项文件(/mcp 将向您显示位置):

{
  "mcpServers": {
    "frida-kahlo": {
      "type": "stdio",
      "command": "node",
      "args": [
        "C:/Your/Full/Path/k4hlo/kahlo-mcp/dist/index.js"
      ],
      "cwd": "C:/Your/Full/Path/k4hlo/kahlo-mcp"
    }
  }
}

光标

添加到光标MCP设置(首选项>光标设置>工具和MCP):

{
  "mcpServers": {
    "frida-kahlo": {
      "command": "node",
      "args": ["/Your/Full/Path/k4hlo/kahlo-mcp/dist/index.js"],
      "cwd": "/Your/Full/Path/k4hlo/kahlo-mcp"
    }
  }
}

Codex CLI

你会发现你的 toml 用户配置文件夹下的文件 .codex:

model = "gpt-5.3-codex"
model_reasoning_effort = "medium"

[mcp_servers.frida-kahlo]
command = "node"
args = ["/Your/Full/Path/k4hlo/kahlo-mcp/dist/index.js"]
cwd = "/Your/Full/Path/k4hlo/kahlo-mcp"

MCP工具参考

本节是工具表面的快速实用地图。对于完整的操作合同(概念、工作流程、故障模式和完整的stdlib参考),请AI调用 kahlo_mcp_about 告诉你更多!

内省

  • kahlo_mcp_about:返回kahlo操作合同(工具清单、概念、工作流、故障模式、stdlib参考)。

设备、工艺和ADB

  • kahlo_devices_list:列出已连接的设备,准备进行检测。
  • kahlo_devices_get (device_id):详细的设备信息(型号/版本/运输)和准备就绪信号。
  • kahlo_devices_health (device_id):ADB+frida服务器是否存在/运行的健康检查。
  • kahlo_processes_list (device_id, scope?):列出正在运行的进程(pid+名称)。以前用这个 mode="attach" 以获取确切的进程名称。
  • kahlo_adb_command (command[], device_id?, timeout_ms?):使用配置的ADB二进制文件运行ADB命令。对于仅根路径,请用 su -c (例如。, `['shell','su','-c','ls /data/data/

']`).

目标(附加/生成+生命周期)

  • kahlo_targets_ensure:

- 目的:创建/确保目标(承载进程内编排器的仪表化应用程序进程)。 - 参数: device_id, package, mode (attach|spawn), gating? (none|spawn|child), bootstrap?, bootstrap_params?, bootstrap_type?,加上可选 child_* 引导字段。 - 备注: - mode="attach": package 是 *进程名称* 从 kahlo_processes_list (通常不是Android软件包id)。 - mode="spawn": package 是Android包id(例如。, com.example.app). - gating="spawn" 需要 bootstrap (应用程序挂起时先挂起,然后自动恢复)。 - gating="child" 存在,但 不适用于Android (受精卵分叉子进程)。对于多进程应用程序,发现 com.example.app:process 姓名并单独附上。

  • kahlo_targets_status (target_id):目标生命周期+编排器代理状态(用于诊断崩溃/重新注入)。
  • kahlo_targets_detach (target_id):干净地分离;取消该目标的所有作业。

作业(运行检测代码)

  • kahlo_jobs_start:

- 目的:在目标中启动一个独立的作业(一个Frida脚本实例)。 - 参数: target_id, type? (oneshot|interactive|daemon), ttl?, params?,以及 module: - { kind: 'module_ref', module_ref: 'name@version' } - { kind: 'draft_id', draft_id: '...' } - { kind: 'source', source: '...' } (内联JS用于快速迭代) - 备注:守护进程作业应调用 ctx.heartbeat() 定期地;取消会卸载脚本,Frida会清理挂钩/计时器/状态。

  • kahlo_jobs_status (job_id):作业生命周期+心跳健康状况+指标+错误/结果。
  • kahlo_jobs_list (target_id):列出目标的作业(活动+历史)。
  • kahlo_jobs_cancel (job_id):取消作业;卸载其脚本(通过Frida进行尽力清理)。

遥测和快照

  • kahlo_events_fetch (target_id?job_id?, cursor?, limit?, filters?):使用基于光标的分页轮询结构化事件。 filters 支持 kindlevel.
  • kahlo_snapshots_get (target_id, kind, options?):时间点状态查询(谨慎使用;可能很昂贵)。

工件(大输出)

  • kahlo_artifacts_list (target_id?job_id?):列出作业产生的工件(文件/转储/跟踪等)。
  • kahlo_artifacts_get (artifact_id):获取工件元数据和内联有效负载(小)或存储引用(大)。

模块和草稿(可重用的作业代码)

  • kahlo_modules_list:列出模块存储中的版本模块。
  • kahlo_modules_get (module_ref 喜欢 name@1.2.3):获取模块源+清单+来源。
  • kahlo_modules_createDraft (source, name?, manifest?):为迭代创建可变草稿。
  • kahlo_modules_createDraftFromJob (job_id, name?):“保存我的工作”作为草稿。
  • kahlo_modules_listDrafts:列出草稿(仅元数据)。
  • kahlo_modules_getDraft (draft_id):获取元数据草稿+完整源代码。
  • kahlo_modules_updateDraft (draft_id, source):替换草稿源代码(快速迭代)。
  • kahlo_modules_promoteDraft (draft_id, name, version_strategy, notes?):将草稿冻结到版本化模块中(patch|minor|major).
  • kahlo_modules_promoteFromJob (job_id, name, version_strategy, notes?):将经过测试的作业直接升级到版本化模块中。

Stdlib(ctx.stdlib)

每个作业脚本都有一个预加载的标准库 ctx.stdlib。这是在不重写样板的情况下执行常见“插装任务”(堆栈捕获、安全Java调用、过载安全挂钩、字节/字符串、意图解析等)的首选方法。

真相来源: kahlo-mcp/src/backend/jobs/jobScriptStdlib.js.

顶级助手

  • ctx.stdlib.isJavaAvailable():返回 true 如果在此过程中可以使用Java API。
  • ctx.stdlib.getJavaBridge():返回Java桥句柄(或 null).
  • ctx.stdlib.requireJava(operation?):返回Java桥或抛出一条有用的消息。

stack -Java堆栈跟踪

  • capture({ skip?, limit? }):将帧捕获为对象(className, methodName, fileName, lineNumber, isNative).
  • toString({ skip?, limit?, separator? }):格式化的堆栈跟踪字符串。
  • filter(frames, pattern):保持帧与前缀字符串或RegExp匹配。
  • findFirst(frames, pattern):第一个匹配帧(或 null).
  • getCaller():尽力而为的“调用者”帧(跳过内部/运行时帧)。
  • getException(throwable):格式化Java Throwable (消息+堆栈+原因)作为字符串。

inspect -Java对象自检

  • className(obj), simpleClassName(obj)
  • fields(obj, { includeInherited?, includeStatic? }?):枚举字段(包括private)。
  • methods(obj, { includeInherited?, includeStatic? }?):枚举方法。
  • getField(obj, fieldName):安全字段读取({ ok, value, error? }).
  • toJson(obj, { maxDepth?, maxArrayLength?, maxStringLength? }?):将常见的Java对象转换为JSON安全结构。
  • isInstance(obj, className)
  • superclassChain(obj)
  • interfaces(obj, includeInherited?)

classes -发现和加载

  • find(pattern, { limit? }?):按前缀字符串或RegExp搜索加载的类。
  • enumerate(callbackOrOptions?):list加载的类(返回数组,或根据使用情况通过回调流)。
  • load(className):安全 Java.use (返回 null 失败)。
  • isLoaded(className):快速检查类是否已加载。
  • instances(className, { limit? }?):枚举活堆实例(尽最大努力,可能代价高昂)。
  • getClassLoader(className):获取 ClassLoader 对于已加载的类(或 null).

bytes -二进制助手

  • toHex(data, { uppercase?, separator? }?), fromHex(hex)
  • toBase64(data), fromBase64(base64)
  • fromJavaBytes(byteArray), toJavaBytes(uint8Array)
  • equals(a, b), concat(...arrays), slice(data, start, end?)

strings -转换和编码

  • fromJava(javaStringLike), toJava(jsString)
  • truncate(str, maxLength, ellipsis?)
  • fromUtf8(data), toUtf8(str)
  • matches(str, pattern)
  • safeToString(obj, maxLength?)

intent -意图解析与构造

  • parse(intent):返回结构化摘要(动作/数据/类型/类别/组件/标志/附加)。
  • getExtras(intent):将额外的Bundle提取到JS对象中(在嵌套Bundles上递归)。
  • getComponent(intent), isExplicit(intent)
  • create({ action?, data?, type?, flags?, packageName?, className?, extras? }):构建一个新的意图(返回 null 失败)。
  • flagsToStrings(flags):解码位掩码以标记名称。

hook -钩子助手(Java+本机)

  • method(className, methodName, { onEnter?, onLeave? }):挂起一个方法(如果存在所有重载)。
  • methodWithSignature(className, methodName, paramTypes[], { onEnter?, onLeave? }):钩住特定的超载。
  • allOverloads(className, methodName, handler):用单个处理程序钩住所有重载。
  • constructor(className, handler):全部钩住 $init 超载。
  • onClassLoad(className, callback):run callback(Java.use(className)) 一旦课程可用。
  • native(addressOrSymbol, callbacks): Interceptor.attach 原生钩子的包装器。
  • replace(classWrapper, methodName, replacement):替换实现并获取还原函数。

safe -闭合包装失败

  • java(fn):磨合 Java.performNow 并返回 { ok, result?, error? }.
  • call(fn):try/catch包装返回 { ok, result?, error? }.
  • timeout(fn, timeoutMs):Promise包装返回 { ok, result?, error? } (不会取消基础工作)。
  • tryUse(className):安全 Java.use (返回 null 而不是投掷)。
  • invoke(obj, methodName, ...args):安全方法调用(返回 null 任何失败)。
  • get(obj, keyPath, defaultValue?):安全属性查找(支持点路径)。

time -时间戳和速率限制

  • now(), nowMs(), hrNow()
  • format(ms), stopwatch()
  • sleep(ms), measure(fn)
  • debounce(fn, delayMs), throttle(fn, intervalMs)

目录标签

目录标签

TypeScriptClaudeAI代理动态检测本地部署Android工具自动化分析Frida封装

支持客户端

ClaudeCursor

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

28

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明none部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP