Skip to content

fatbeanssoft/Fatbeans.MCP.Client

Repository files navigation

Fatbeans.MCP.Client

Fatbeans.MCP.Client 是独立的控制台客户端,用于从命令行、脚本、外部进程或 AI Agent 调用Fatbeans Creater提供的MCP工具服务。

下载Fatbeans Creater请访问以下地址:

https://github.com/fatbeanssoft/Fatbeans-TCP-Packet-Capture-Tool

1. 运行环境

本项目使用:

  • .NET SDK 9.0
  • ModelContextProtocol 1.2.0

它是独立的 net9.0 客户端,不依赖主程序的 .NET Framework 4.5 目标框架。

2. 主要用途

Fatbeans.MCP.Client 主要有两种使用方式:

  1. CLI 直连 Pipe 调用

    • 适合脚本、批处理、PowerShell、测试调用
    • 直接执行某个方法名,例如 system.pingcapture.startpacket.list
  2. MCP stdio server

    • 适合接入支持 MCP 的 Host、IDE、Agent 或自动化平台
    • 客户端自身作为一个 MCP Server 暴露 tools,再由 tools 转发到主程序 Pipe

3. 目录结构

  • Configuration:CLI 参数与 MCP 运行配置
  • Infrastructure/Pipe:Pipe 通信封装
  • Features/Systemsystem.* 与自省能力
  • Features/Mcp:MCP Server Host 与通用 Pipe tools
  • Features/Archive:归档相关封装
  • Features/Capture:抓包控制相关封装
  • Features/Packet:封包读取、搜索、重发、备注相关封装
  • Features/Intercept:拦截规则封装
  • Features/Modify:修改器规则封装
  • Features/Responser:回复器规则封装
  • Features/Redirect:重定向规则封装
  • Features/Proxy:Socks5 与二级代理封装
  • Features/HttpSender:HTTP 发送方案封装
  • Features/Value:取值器分类和值定义封装

4. 命令行基本语法

4.1 直接调用 Pipe 方法

Fatbeans.MCP.Client.exe ^<method^> [paramsJson] [--pipe ^<name^>] [--server ^<name^>] [--timeout ^<ms^>] [--pretty]

示例:

Fatbeans.MCP.Client system.ping
Fatbeans.MCP.Client system.version --pretty
Fatbeans.MCP.Client capture.status --pretty
Fatbeans.MCP.Client packet.list "{\"pageIndex\":1,\"pageSize\":20}" --pretty
Fatbeans.MCP.Client demo.echo "{\"text\":\"hello\"}"

4.2 以 MCP stdio server 模式启动

Fatbeans.MCP.Client --mcp [--pipe ^<name^>] [--server ^<name^>] [--timeout ^<ms^>]

示例:

Fatbeans.MCP.Client --mcp
Fatbeans.MCP.Client --mcp --pipe fatbeans.mcp
Fatbeans.MCP.Client --mcp --pipe fatbeans.mcp --timeout 10000

5. 命令行参数

5.1 通用参数

  • --pipe ^<name^>:Pipe 名称,默认 fatbeans.mcp
  • --server ^<name^>:服务器名,默认 .
  • --timeout ^<ms^>:连接超时毫秒数,默认 5000
  • --pretty:将输出 JSON 美化格式化
  • --mcp:以 MCP stdio server 模式运行
  • --help-h:显示帮助

示例:

Fatbeans.MCP.Client system.status --pretty
Fatbeans.MCP.Client system.ping --pipe fatbeans.mcp --timeout 8000
Fatbeans.MCP.Client --help

5.2 JSON 参数说明

  • 第二个位置参数如果存在,会被当成 paramsJson
  • 必须是一个 JSON 对象,不能是数组或裸值
  • 建议在 PowerShell 中使用单引号包住 JSON

示例:

Fatbeans.MCP.Client system.help "{\"method\":\"capture.start\"}" --pretty
Fatbeans.MCP.Client capture.config_select "{\"configName\":\"默认配置\"}" --pretty
Fatbeans.MCP.Client packet.memo.set "{\"guid\":\"^<packet-guid^>\",\"memo\":\"登录请求\"}" --pretty

6. 输出与退出码

客户端输出统一为 JSON。

  • 成功时输出响应 JSON,并返回退出码 0
  • 参数错误或运行异常时输出错误信息到标准错误,并返回退出码 1
  • Pipe 调用成功返回但业务结果为失败时,通常返回退出码 2

示例:

Fatbeans.MCP.Client system.ping
Fatbeans.MCP.Client system.version --pretty

7. 快速开始

7.1 连通性检查

Fatbeans.MCP.Client system.ping
Fatbeans.MCP.Client system.version --pretty
Fatbeans.MCP.Client system.status --pretty

7.2 本地方法自省

Fatbeans.MCP.Client system.listMethods --pretty
Fatbeans.MCP.Client system.help "{\"method\":\"system.ping\"}" --pretty
Fatbeans.MCP.Client system.help "{\"method\":\"packet.list\"}" --pretty

7.3 任意 Pipe 方法直调

CLI 本身支持直接传入任意方法名,因此不需要额外的 pipe.invoke 命令行封装。

Fatbeans.MCP.Client proxy.socks5.status --pretty
Fatbeans.MCP.Client redirect.list --pretty
Fatbeans.MCP.Client archive.history.list --pretty

8. 当前支持的方法分类

当前客户端已接入或可直接调用以下类别的方法:

  • system.*
  • capture.*
  • packet.*
  • archive.*
  • intercept.rule.*
  • modify.rule.*
  • responser.rule.*
  • redirect.*
  • proxy.*
  • http_sender.*
  • value.*
  • 其他主程序已暴露的 Pipe 方法(可直接通过 ^<method^> 方式调用)

9. 系统方法 system.*

9.1 方法列表

  • system.ping
  • system.version
  • system.status
  • system.modeGet
  • system.logsGet
  • system.listMethods(本地实现)
  • system.help(本地实现)

9.2 命令行示例

Fatbeans.MCP.Client system.ping
Fatbeans.MCP.Client system.version --pretty
Fatbeans.MCP.Client system.status --pretty
Fatbeans.MCP.Client system.modeGet --pretty
Fatbeans.MCP.Client system.logsGet "{\"lines\":50}" --pretty
Fatbeans.MCP.Client system.listMethods --pretty
Fatbeans.MCP.Client system.help "{\"method\":\"capture.config_create\"}" --pretty

10. 抓包控制 capture.*

10.1 方法列表

  • capture.start
  • capture.stop
  • capture.pause
  • capture.resume
  • capture.reset
  • capture.clear
  • capture.status
  • capture.config_list
  • capture.config_select
  • capture.config_create
  • capture.config_get
  • capture.target_all
  • capture.target_process_ids
  • capture.target_process_names
  • capture.target_self
  • capture.target_launch_and_start

10.2 基础抓包示例

Fatbeans.MCP.Client capture.start --pretty
Fatbeans.MCP.Client capture.status --pretty
Fatbeans.MCP.Client capture.pause --pretty
Fatbeans.MCP.Client capture.resume --pretty
Fatbeans.MCP.Client capture.stop --pretty
Fatbeans.MCP.Client capture.clear --pretty
Fatbeans.MCP.Client capture.reset --pretty

10.3 配置管理示例

Fatbeans.MCP.Client capture.config_list --pretty
Fatbeans.MCP.Client capture.config_get --pretty
Fatbeans.MCP.Client capture.config_select "{\"configId\":\"1\"}" --pretty
Fatbeans.MCP.Client capture.config_select "{\"configName\":\"默认配置\"}" --pretty
Fatbeans.MCP.Client capture.config_create "{\"configName\":\"TCP-8089\",\"expression\":\"tcp.SrcPort == 8089 or tcp.DstPort == 8089\",\"rangeType\":\"CustomCondition\",\"tcp\":true,\"udp\":false,\"http\":false,\"selectAfterCreate\":true}" --pretty

10.4 抓包目标示例

Fatbeans.MCP.Client capture.target_all --pretty
Fatbeans.MCP.Client capture.target_process_ids "{\"processId\":1234}" --pretty
Fatbeans.MCP.Client capture.target_process_ids "{\"processIds\":[1234,5678]}" --pretty
Fatbeans.MCP.Client capture.target_process_names "{\"processName\":\"chrome\"}" --pretty
Fatbeans.MCP.Client capture.target_process_names "{\"processNames\":[\"chrome\",\"WeChat\"]}" --pretty
Fatbeans.MCP.Client capture.target_self --pretty
Fatbeans.MCP.Client capture.target_launch_and_start "{\"filePath\":\"C:\\Windows\\System32\\notepad.exe\",\"arguments\":\"C:\\temp\\a.txt\"}" --pretty

11. 封包方法 packet.*

11.1 方法列表

  • packet.list
  • packet.get
  • packet.count
  • packet.summary.get
  • packet.search
  • packet.memo.get
  • packet.memo.set
  • packet.resend
  • packet.modify_and_resend
  • packet.convert
  • packet.listnote
  • packet.editnote
  • packet.delnote

11.2 列表与详情示例

Fatbeans.MCP.Client packet.count --pretty
Fatbeans.MCP.Client packet.list "{\"pageIndex\":1,\"pageSize\":20}" --pretty
Fatbeans.MCP.Client packet.summary.get "{\"index\":1}" --pretty
Fatbeans.MCP.Client packet.get "{\"guid\":\"^<packet-guid^>\"}" --pretty
Fatbeans.MCP.Client packet.get "{\"index\":1}" --pretty

11.3 搜索与备注示例

Fatbeans.MCP.Client packet.search "{\"searchValue\":\"token=\",\"searchType\":\"Text\",\"startIndex\":0}" --pretty
Fatbeans.MCP.Client packet.search "{\"searchValue\":\"0AFFE8D6\",\"searchType\":\"Hex\"}" --pretty
Fatbeans.MCP.Client packet.memo.set "{\"guid\":\"^<packet-guid^>\",\"memo\":\"登录请求\"}" --pretty
Fatbeans.MCP.Client packet.memo.get "{\"guid\":\"^<packet-guid^>\"}" --pretty
Fatbeans.MCP.Client packet.memo.get "{\"guids\":[\"^<guid1^>\",\"^<guid2^>\"]}" --pretty

11.4 重发与修改重发示例

Fatbeans.MCP.Client packet.resend "{\"guid\":\"^<packet-guid^>\"}" --pretty
Fatbeans.MCP.Client packet.resend "{\"guids\":[\"^<guid1^>\",\"^<guid2^>\"]}" --pretty
Fatbeans.MCP.Client packet.modify_and_resend "{\"guid\":\"^<packet-guid^>\",\"hexData\":\"0A FF E8 D6\"}" --pretty
Fatbeans.MCP.Client packet.modify_and_resend "{\"guid\":\"^<packet-guid^>\",\"requestMethod\":\"POST\",\"url\":\"https://example.com/api/login\",\"requestBodyText\":\"user=demo^&token=123\"}" --pretty

11.5 数据转换与注释示例

Fatbeans.MCP.Client packet.convert "{\"guid\":\"^<packet-guid^>\",\"format\":\"Hex\"}" --pretty
Fatbeans.MCP.Client packet.convert "{\"guid\":\"^<packet-guid^>\",\"format\":\"CSharpArray\"}" --pretty
Fatbeans.MCP.Client packet.convert "{\"index\":1,\"format\":\"Text\",\"textEncoding\":\"UTF-8\"}" --pretty
Fatbeans.MCP.Client packet.listnote "{\"guid\":\"^<packet-guid^>\"}" --pretty
Fatbeans.MCP.Client packet.editnote "{\"guid\":\"^<packet-guid^>\",\"startOffset\":0,\"endOffset\":3,\"memo\":\"消息头\"}" --pretty
Fatbeans.MCP.Client packet.delnote "{\"guid\":\"^<packet-guid^>\",\"startOffset\":0,\"endOffset\":3}" --pretty

12. 归档方法 archive.*

12.1 方法列表

  • archive.open
  • archive.save_all
  • archive.save_visible
  • archive.history.list
  • archive.history.clear
  • archive.export.json
  • archive.export.text
  • archive.export.xml
  • archive.export.csv

12.2 打开与保存示例

Fatbeans.MCP.Client archive.open "{\"filePath\":\"D:\\capture.fatbeans\"}" --pretty
Fatbeans.MCP.Client archive.save_all "{\"filePath\":\"D:\\all.fatbeans\"}" --pretty
Fatbeans.MCP.Client archive.save_visible "{\"filePath\":\"D:\\visible.fatbeans\"}" --pretty
Fatbeans.MCP.Client archive.history.list --pretty
Fatbeans.MCP.Client archive.history.clear --pretty

12.3 导出示例

Fatbeans.MCP.Client archive.export.json "{\"filePath\":\"D:\\packets.json\",\"sourceType\":\"packet\"}" --pretty
Fatbeans.MCP.Client archive.export.text "{\"filePath\":\"D:\\packets.txt\",\"sourceType\":\"packet\"}" --pretty
Fatbeans.MCP.Client archive.export.xml "{\"filePath\":\"D:\\packets.xml\",\"sourceType\":\"group\"}" --pretty
Fatbeans.MCP.Client archive.export.csv "{\"filePath\":\"D:\\packets.csv\",\"sourceType\":\"packet\"}" --pretty

13. 拦截规则 intercept.rule.*

13.1 方法列表

  • intercept.rule.list
  • intercept.rule.create
  • intercept.rule.update
  • intercept.rule.delete
  • intercept.rule.enable
  • intercept.rule.disable
  • intercept.rule.clone

13.2 命令行示例

Fatbeans.MCP.Client intercept.rule.list --pretty
Fatbeans.MCP.Client intercept.rule.create "{\"ruleName\":\"拦截登录\",\"interceptExpression\":\"Contains(RequestBodyText, \\"login\\")\",\"isEnable\":true}" --pretty
Fatbeans.MCP.Client intercept.rule.update "{\"ruleId\":\"^<rule-id^>\",\"ruleName\":\"拦截登录请求\",\"passExpression\":\"Contains(URL, \\"/health\\")\"}" --pretty
Fatbeans.MCP.Client intercept.rule.enable "{\"ruleId\":\"^<rule-id^>\"}" --pretty
Fatbeans.MCP.Client intercept.rule.disable "{\"ruleId\":\"^<rule-id^>\"}" --pretty
Fatbeans.MCP.Client intercept.rule.clone "{\"ruleId\":\"^<rule-id^>\",\"newRuleName\":\"复制-拦截登录\"}" --pretty
Fatbeans.MCP.Client intercept.rule.delete "{\"ruleId\":\"^<rule-id^>\"}" --pretty

14. 修改器规则 modify.rule.*

14.1 方法列表

  • modify.rule.list
  • modify.rule.create
  • modify.rule.update
  • modify.rule.createhttp
  • modify.rule.updatehttp
  • modify.rule.delete
  • modify.rule.enable
  • modify.rule.disable
  • modify.rule.clone

14.2 普通修改规则示例

Fatbeans.MCP.Client modify.rule.list --pretty
Fatbeans.MCP.Client modify.rule.create "{\"ruleName\":\"token 替换\",\"ruleType\":\"SEARCHANDREPLACE\",\"searchType\":\"TEXT\",\"replaceType\":\"TEXT\",\"searchContent\":\"token=old\",\"replaceContent\":\"token=new\",\"isEnable\":true}" --pretty
Fatbeans.MCP.Client modify.rule.update "{\"ruleId\":\"^<rule-id^>\",\"replaceContent\":\"token=changed\",\"isEnable\":true}" --pretty
Fatbeans.MCP.Client modify.rule.enable "{\"ruleId\":\"^<rule-id^>\"}" --pretty
Fatbeans.MCP.Client modify.rule.disable "{\"ruleId\":\"^<rule-id^>\"}" --pretty
Fatbeans.MCP.Client modify.rule.clone "{\"ruleId\":\"^<rule-id^>\",\"newRuleName\":\"复制-token 替换\"}" --pretty
Fatbeans.MCP.Client modify.rule.delete "{\"ruleId\":\"^<rule-id^>\"}" --pretty

14.3 HTTP 修改规则示例

Fatbeans.MCP.Client modify.rule.createhttp "{\"ruleName\":\"请求 token 替换\",\"requestReplaceType\":\"TEXT\",\"requestSearchText\":\"token=old\",\"requestReplaceText\":\"token=new\",\"isEnable\":true}" --pretty
Fatbeans.MCP.Client modify.rule.createhttp "{\"ruleName\":\"Header 重写\",\"requestHeadReplacesJson\":\"{\\"User-Agent\\":\\"FatbeansBot\\"}\",\"responseHeadReplacesJson\":\"{\\"Server\\":\\"CustomServer\\"}\"}" --pretty
Fatbeans.MCP.Client modify.rule.updatehttp "{\"ruleId\":\"^<rule-id^>\",\"urlQueryReplacesJson\":\"{\\"token\\":\\"123456\\"}\"}" --pretty
Fatbeans.MCP.Client modify.rule.updatehttp "{\"ruleId\":\"^<rule-id^>\",\"requestReplaceType\":\"TEXT\",\"requestSearchText\":\"old\",\"requestReplaceText\":\"new\"}" --pretty

15. 回复器规则 responser.rule.*

15.1 方法列表

  • responser.rule.list
  • responser.rule.create
  • responser.rule.update
  • responser.rule.delete
  • responser.rule.enable
  • responser.rule.disable
  • responser.rule.clone

15.2 命令行示例

Fatbeans.MCP.Client responser.rule.list --pretty
Fatbeans.MCP.Client responser.rule.create "{\"ruleName\":\"固定回复\",\"searchHex\":\"01 02 03\",\"responseHex\":\"AA BB CC\",\"isEnable\":true}" --pretty
Fatbeans.MCP.Client responser.rule.update "{\"ruleId\":\"^<rule-id^>\",\"delayTime\":200,\"responseHex\":\"DD EE FF\"}" --pretty
Fatbeans.MCP.Client responser.rule.enable "{\"ruleId\":\"^<rule-id^>\"}" --pretty
Fatbeans.MCP.Client responser.rule.disable "{\"ruleId\":\"^<rule-id^>\"}" --pretty
Fatbeans.MCP.Client responser.rule.clone "{\"ruleId\":\"^<rule-id^>\",\"newRuleName\":\"复制-固定回复\"}" --pretty
Fatbeans.MCP.Client responser.rule.delete "{\"ruleId\":\"^<rule-id^>\"}" --pretty

16. 重定向规则 redirect.*

^> 仅全能模式可用。

16.1 方法列表

  • redirect.list
  • redirect.add_tcp
  • redirect.add_http
  • redirect.del
  • redirect.rule_enable
  • redirect.rule_disable
  • redirect.rule_clone

16.2 TCP 重定向示例

Fatbeans.MCP.Client redirect.list --pretty
Fatbeans.MCP.Client redirect.add_tcp "{\"ruleName\":\"TCP 重定向\",\"orgTarget\":\"192.168.1.*:8080\",\"redirectTarget\":\"127.0.0.1:9000\",\"isEnable\":true}" --pretty
Fatbeans.MCP.Client redirect.rule_enable "{\"ruleId\":\"^<rule-id^>\"}" --pretty
Fatbeans.MCP.Client redirect.rule_disable "{\"ruleId\":\"^<rule-id^>\"}" --pretty
Fatbeans.MCP.Client redirect.rule_clone "{\"ruleId\":\"^<rule-id^>\",\"newRuleName\":\"复制-TCP 重定向\"}" --pretty
Fatbeans.MCP.Client redirect.del "{\"ruleId\":\"^<rule-id^>\"}" --pretty

16.3 HTTP 重定向示例

Fatbeans.MCP.Client redirect.add_http "{\"ruleName\":\"HTTP 重定向\",\"orgTarget\":\"https://api.example.com/*\",\"redirectTarget\":\"https://127.0.0.1:8443/\",\"isEnable\":true}" --pretty
Fatbeans.MCP.Client redirect.add_http "{\"ruleName\":\"带排除规则的 HTTP 重定向\",\"orgTarget\":\"https://example.com/*\",\"redirectTarget\":\"https://127.0.0.1:8443/\",\"excludes\":[\"https://example.com/health\",\"https://example.com/status\"]}" --pretty

17. 代理方法 proxy.*

17.1 方法列表

  • proxy.socks5.status
  • proxy.socks5.toggle
  • proxy.socks5.config.get
  • proxy.socks5.config.set
  • proxy.level2.set

17.2 Socks5 代理示例

Fatbeans.MCP.Client proxy.socks5.status --pretty
Fatbeans.MCP.Client proxy.socks5.toggle "{\"isOpen\":true}" --pretty
Fatbeans.MCP.Client proxy.socks5.toggle "{\"isOpen\":false}" --pretty
Fatbeans.MCP.Client proxy.socks5.config.get --pretty
Fatbeans.MCP.Client proxy.socks5.config.set "{\"serverIP\":\"127.0.0.1\",\"serverPort\":1080,\"isOpen\":true}" --pretty
Fatbeans.MCP.Client proxy.socks5.config.set "{\"serverPort\":1088}" --pretty

17.3 二级代理示例

Fatbeans.MCP.Client proxy.level2.set "{\"name\":\"本地 HTTP 二级代理\",\"type\":\"Http\",\"serverIP\":\"127.0.0.1\",\"serverPort\":8888,\"isEnable\":true}" --pretty
Fatbeans.MCP.Client proxy.level2.set "{\"name\":\"Socks5 白名单代理\",\"type\":\"Socks5\",\"serverIP\":\"127.0.0.1\",\"serverPort\":1080,\"limitType\":\"WhiteList\",\"limitList\":[\".*example\\.com\",\".*api\\.test\\.com\"],\"isEnable\":true}" --pretty
Fatbeans.MCP.Client proxy.level2.set "{\"disable\":true}" --pretty

18. HTTP Sender 方法 http_sender.*

18.1 方法列表

  • http_sender.scheme.list
  • http_sender.scheme.create
  • http_sender.scheme.delete
  • http_sender.scheme.rename
  • http_sender.scheme.clone
  • http_sender.packet.list
  • http_sender.packet.add
  • http_sender.packet.update
  • http_sender.packet.delete
  • http_sender.packet.clone
  • http_sender.start
  • http_sender.stop
  • http_sender.status

18.2 方案管理示例

Fatbeans.MCP.Client http_sender.scheme.list --pretty
Fatbeans.MCP.Client http_sender.scheme.create "{\"schemeName\":\"Demo HTTP\",\"loopMode\":\"ListLoop\",\"sendNumber\":10,\"sendIntervalMin\":500,\"sendIntervalMax\":1000}" --pretty
Fatbeans.MCP.Client http_sender.scheme.rename "{\"schemeId\":\"^<scheme-id^>\",\"newSchemeName\":\"新的方案名\"}" --pretty
Fatbeans.MCP.Client http_sender.scheme.clone "{\"schemeId\":\"^<scheme-id^>\",\"newSchemeName\":\"复制方案\"}" --pretty
Fatbeans.MCP.Client http_sender.scheme.delete "{\"schemeId\":\"^<scheme-id^>\"}" --pretty

18.3 请求项管理示例

Fatbeans.MCP.Client http_sender.packet.list "{\"schemeId\":\"^<scheme-id^>\"}" --pretty
Fatbeans.MCP.Client http_sender.packet.add "{\"schemeId\":\"^<scheme-id^>\",\"requestMethod\":\"GET\",\"url\":\"https://example.com/\"}" --pretty
Fatbeans.MCP.Client http_sender.packet.add "{\"schemeId\":\"^<scheme-id^>\",\"rawRequest\":\"GET / HTTP/1.1\r\nHost: example.com\r\n\r\n\"}" --pretty
Fatbeans.MCP.Client http_sender.packet.add "{\"schemeId\":\"^<scheme-id^>\",\"guid\":\"^<packet-guid^>\"}" --pretty
Fatbeans.MCP.Client http_sender.packet.update "{\"schemeId\":\"^<scheme-id^>\",\"packetId\":\"^<packet-id^>\",\"requestMethod\":\"POST\",\"url\":\"https://example.com/api/login\",\"bodyText\":\"user=demo^&pwd=123\"}" --pretty
Fatbeans.MCP.Client http_sender.packet.clone "{\"schemeId\":\"^<scheme-id^>\",\"packetId\":\"^<packet-id^>\"}" --pretty
Fatbeans.MCP.Client http_sender.packet.delete "{\"schemeId\":\"^<scheme-id^>\",\"packetId\":\"^<packet-id^>\"}" --pretty

18.4 执行控制示例

Fatbeans.MCP.Client http_sender.start "{\"schemeId\":\"^<scheme-id^>\"}" --pretty
Fatbeans.MCP.Client http_sender.status --pretty
Fatbeans.MCP.Client http_sender.stop --pretty

19. 取值器方法 value.*

19.1 方法列表

  • value.category.list
  • value.category.create
  • value.category.rename
  • value.category.delete
  • value.category.clone
  • value.list
  • value.create_simple
  • value.create_from_packet
  • value.create_expression
  • value.update
  • value.delete
  • value.clone
  • value.resolve

19.2 分类管理示例

Fatbeans.MCP.Client value.category.list --pretty
Fatbeans.MCP.Client value.category.create "{\"categoryName\":\"登录流程\"}" --pretty
Fatbeans.MCP.Client value.category.rename "{\"categoryId\":\"^<category-id^>\",\"newCategoryName\":\"新的分类名\"}" --pretty
Fatbeans.MCP.Client value.category.clone "{\"categoryId\":\"^<category-id^>\",\"newCategoryName\":\"复制后的分类\"}" --pretty
Fatbeans.MCP.Client value.category.delete "{\"categoryId\":\"^<category-id^>\"}" --pretty

19.3 值定义示例

Fatbeans.MCP.Client value.list "{\"categoryId\":\"^<category-id^>\"}" --pretty
Fatbeans.MCP.Client value.create_simple "{\"categoryId\":\"^<category-id^>\",\"valueName\":\"固定Token\",\"dataType\":\"String\",\"simpleValue\":\"hello\"}" --pretty
Fatbeans.MCP.Client value.create_from_packet "{\"categoryId\":\"^<category-id^>\",\"valueName\":\"Seq\",\"dataType\":\"Int\",\"searchHex\":\"AA BB 01\",\"fromPacketStartIndex\":4,\"fromPacketLen\":4,\"byteEndian\":\"BigEndian\"}" --pretty
Fatbeans.MCP.Client value.create_expression "{\"categoryId\":\"^<category-id^>\",\"valueName\":\"组合值\",\"dataType\":\"String\",\"expression\":\"\\"{固定Token}\\" + \\"_world\\"\"}" --pretty
Fatbeans.MCP.Client value.update "{\"valueId\":\"^<value-id^>\",\"valueName\":\"新的名称\",\"simpleValue\":\"ABC\"}" --pretty
Fatbeans.MCP.Client value.clone "{\"valueId\":\"^<value-id^>\",\"newValueName\":\"复制后的值\"}" --pretty
Fatbeans.MCP.Client value.delete "{\"valueId\":\"^<value-id^>\"}" --pretty
Fatbeans.MCP.Client value.resolve "{\"valueId\":\"^<value-id^>\"}" --pretty
Fatbeans.MCP.Client value.resolve "{\"valueId\":\"^<value-id^>\",\"guid\":\"^<packet-guid^>\"}" --pretty

20. MCP stdio server 模式

当使用 --mcp 启动时,客户端会作为 MCP Server 暴露 tools。底层使用标准输入输出通信,适合 MCP Host 接入。

20.1 启动示例

Fatbeans.MCP.Client --mcp
Fatbeans.MCP.Client --mcp --pipe fatbeans.mcp
Fatbeans.MCP.Client --mcp --pipe fatbeans.mcp --server . --timeout 10000

20.2 当前已注册的 MCP tool 类型

  • PipeMcpTools
  • HttpSenderMcpTools
  • ValueMcpTools
  • ProxyMcpTools
  • RedirectMcpTools

21. 当前 MCP tools 总览

21.1 PipeMcpTools

这些 tools 主要覆盖系统、抓包、封包、归档、拦截、修改、回复器和本地自省能力:

  • SystemPing
  • SystemVersion
  • SystemStatus
  • SystemModeGet
  • SystemLogsGet
  • CaptureStart
  • CaptureStop
  • CapturePause
  • CaptureResume
  • CaptureReset
  • CaptureClear
  • CaptureStatus
  • CaptureConfigList
  • CaptureConfigSelect
  • CaptureConfigCreate
  • CaptureConfigGet
  • CaptureTargetAll
  • CaptureTargetProcessIds
  • CaptureTargetProcessNames
  • CaptureTargetSelf
  • CaptureTargetLaunchAndStart
  • PacketList
  • PacketSummaryGet
  • PacketSearch
  • PacketMemoGet
  • PacketMemoSet
  • PacketResend
  • PacketModifyAndResend
  • PacketConvert
  • PacketListNote
  • PacketEditNote
  • PacketDelNote
  • PacketGet
  • PacketCount
  • InterceptRuleList
  • InterceptRuleCreate
  • InterceptRuleUpdate
  • InterceptRuleDelete
  • InterceptRuleEnable
  • InterceptRuleDisable
  • InterceptRuleClone
  • ModifyRuleList
  • ModifyRuleCreate
  • ModifyRuleUpdate
  • ModifyRuleCreateHttp
  • ModifyRuleUpdateHttp
  • ModifyRuleDelete
  • ModifyRuleEnable
  • ModifyRuleDisable
  • ModifyRuleClone
  • ResponserRuleList
  • ResponserRuleCreate
  • ResponserRuleUpdate
  • ResponserRuleDelete
  • ResponserRuleEnable
  • ResponserRuleDisable
  • ResponserRuleClone
  • ArchiveOpen
  • ArchiveSaveAll
  • ArchiveSaveVisible
  • ArchiveHistoryList
  • ArchiveHistoryClear
  • ArchiveExportJson
  • ArchiveExportText
  • ArchiveExportXml
  • ArchiveExportCsv
  • ListMethods
  • GetMethodHelp
  • PipeInvoke

21.2 HttpSenderMcpTools

  • HttpSenderSchemeList
  • HttpSenderSchemeCreate
  • HttpSenderSchemeDelete
  • HttpSenderSchemeRename
  • HttpSenderSchemeClone
  • HttpSenderPacketList
  • HttpSenderPacketAdd
  • HttpSenderPacketUpdate
  • HttpSenderPacketDelete
  • HttpSenderPacketClone
  • HttpSenderStart
  • HttpSenderStop
  • HttpSenderStatus

21.3 ValueMcpTools

  • ValueCategoryList
  • ValueCategoryCreate
  • ValueCategoryRename
  • ValueCategoryDelete
  • ValueCategoryClone
  • ValueList
  • ValueCreateSimple
  • ValueCreateFromPacket
  • ValueCreateExpression
  • ValueUpdate
  • ValueDelete
  • ValueClone
  • ValueResolve

21.4 ProxyMcpTools

  • ProxySocks5Status
  • ProxySocks5Toggle
  • ProxySocks5ConfigGet
  • ProxySocks5ConfigSet
  • ProxyLevel2Set

21.5 RedirectMcpTools

  • RedirectList
  • RedirectAddTcp
  • RedirectAddHttp
  • RedirectDelete
  • RedirectRuleEnable
  • RedirectRuleDisable
  • RedirectRuleClone

22. 本地自省能力说明

客户端本地实现了以下方法:

  • system.listMethods
  • system.help

它们不依赖远端 Pipe 服务,可以在目标程序尚未完整实现自省接口时直接使用。

示例:

Fatbeans.MCP.Client system.listMethods --pretty
Fatbeans.MCP.Client system.help "{\"method\":\"system.ping\"}" --pretty
Fatbeans.MCP.Client system.help "{\"method\":\"http_sender.packet.add\"}" --pretty

^> 补充:当前本地自省结果主要覆盖 system/capture/packet/archive/intercept/modify/responser/redirect/http_sender/value 等已接入说明的方法;proxy.* 当前已具备 MCP tools 与 CLI 调用能力,但本地自省说明未完全覆盖时,应以本 README 和代码实现为准。

23. 常见调用建议

23.1 建议先调用状态方法

Fatbeans.MCP.Client system.status --pretty
Fatbeans.MCP.Client capture.status --pretty
Fatbeans.MCP.Client http_sender.status --pretty
Fatbeans.MCP.Client proxy.socks5.status --pretty

23.2 建议先列列表再做精确操作

Fatbeans.MCP.Client capture.config_list --pretty
Fatbeans.MCP.Client packet.list "{\"pageIndex\":1,\"pageSize\":20}" --pretty
Fatbeans.MCP.Client intercept.rule.list --pretty
Fatbeans.MCP.Client modify.rule.list --pretty
Fatbeans.MCP.Client value.category.list --pretty
Fatbeans.MCP.Client http_sender.scheme.list --pretty

23.3 对单条对象优先使用稳定 ID

例如:

  • 封包优先使用 guid
  • 规则优先使用 ruleId
  • 发送方案优先使用 schemeId
  • 请求项优先使用 packetId
  • 取值器分类优先使用 categoryId
  • 值定义优先使用 valueId

24. 示例:典型工作流

24.1 抓包并查看封包

Fatbeans.MCP.Client capture.start --pretty
Fatbeans.MCP.Client capture.status --pretty
Fatbeans.MCP.Client packet.count --pretty
Fatbeans.MCP.Client packet.list "{\"pageIndex\":1,\"pageSize\":10}" --pretty
Fatbeans.MCP.Client packet.get "{\"index\":1}" --pretty

24.2 保存归档并导出

Fatbeans.MCP.Client archive.save_all "{\"filePath\":\"D:\\all.fatbeans\"}" --pretty
Fatbeans.MCP.Client archive.export.json "{\"filePath\":\"D:\\all.json\",\"sourceType\":\"packet\"}" --pretty
Fatbeans.MCP.Client archive.history.list --pretty

24.3 创建 HTTP 发送方案并执行

Fatbeans.MCP.Client http_sender.scheme.create "{\"schemeName\":\"登录压测\"}" --pretty
Fatbeans.MCP.Client http_sender.packet.add "{\"schemeId\":\"^<scheme-id^>\",\"requestMethod\":\"POST\",\"url\":\"https://example.com/api/login\",\"headers\":\"Content-Type: application/x-www-form-urlencoded\",\"bodyText\":\"user=demo^&pwd=123\"}" --pretty
Fatbeans.MCP.Client http_sender.start "{\"schemeId\":\"^<scheme-id^>\"}" --pretty
Fatbeans.MCP.Client http_sender.status --pretty
Fatbeans.MCP.Client http_sender.stop --pretty

24.4 创建取值器并验证解析结果

Fatbeans.MCP.Client value.category.create "{\"categoryName\":\"登录流程\"}" --pretty
Fatbeans.MCP.Client value.create_simple "{\"categoryId\":\"^<category-id^>\",\"valueName\":\"固定Token\",\"dataType\":\"String\",\"simpleValue\":\"hello\"}" --pretty
:: 假设 categoryId 是 123
Fatbeans.MCP.Client value.create_expression "{\"categoryId\":\"123\",\"valueName\":\"组合值\",\"dataType\":\"String\",\"expression\":\"{固定Token}\"}" --pretty
Fatbeans.MCP.Client value.list "{\"categoryId\":\"^<category-id^>\"}" --pretty
Fatbeans.MCP.Client value.resolve "{\"valueId\":\"^<value-id^>\"}" --pretty

25. 备注

  • 命令行模式下,你可以直接调用任何已知 Pipe 方法名
  • MCP 模式下,推荐优先使用已暴露的强类型 tools
  • 如果主程序后续新增了 Pipe 方法,而客户端尚未补充专用封装,CLI 仍可通过 ^<method^> [paramsJson] 方式直接调用
  • 若需要查询方法帮助,优先使用 system.help

About

Fatbeans.MCP.Client 是独立的控制台客户端,用于从命令行、脚本、外部进程或 AI Agent 调用Fatbeans Creater提供的MCP工具服务。

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages