From f9ac26b996a8c7ff50a639b87cff3a45d9baf226 Mon Sep 17 00:00:00 2001
From: xiaoc <648844981@qq.com>
Date: Thu, 29 Jan 2026 17:52:03 +0800
Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=20Redis=20?=
=?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Redis \346\237\245\350\257\242.tool" | Bin 0 -> 6263 bytes
tools/tool_redis/README.md | 161 ++++++++++++++++++
tools/tool_redis/data.yaml | 5 +
tools/tool_redis/logo.png | Bin 0 -> 3478 bytes
4 files changed, 166 insertions(+)
create mode 100644 "tools/tool_redis/1.0.0/Redis \346\237\245\350\257\242.tool"
create mode 100644 tools/tool_redis/README.md
create mode 100644 tools/tool_redis/data.yaml
create mode 100644 tools/tool_redis/logo.png
diff --git "a/tools/tool_redis/1.0.0/Redis \346\237\245\350\257\242.tool" "b/tools/tool_redis/1.0.0/Redis \346\237\245\350\257\242.tool"
new file mode 100644
index 0000000000000000000000000000000000000000..56686214e7457a67589dad1866a7ca19e778b95a
GIT binary patch
literal 6263
zcmbtY>u(g-6~|!8D^;3Ss`{-rtE65h>(#C|*mxyJLO@&OlvH5UL
*CpX%9NzJ&e>J?Gv#voq@#QAhU9+{ZcR
zcOLiLd+w?38RIAG_~ZT9u`GjS8MSrA(0@y9mc<_5du0?}drjsjrb_*be(!02!cTkM
zVsvxa)eT2CneTOLy6V6L99^$#zV}8hKcwacwf?@c`c9>9kPhbil)P5xs|;xaYA&~<
zpq2|jXDT%ca`sbAXQc6$o2~h4(5tJK>3i#tFJ-FlslmOu<|p@wnAZH$88NeQacc4D
zY^LGQH@wr0bGKVpz2L%`=ItptG5GZ9;*%Shz&qRc!(H-=J){3Qb@~AR{UtPZzV{xq
zNA`SpfHc24mjz*}rBVNbt{<&ir_l;I=2H7a$wp-9s>PfPsarPwDvW((*;89!!6o7?LQ9B$)qw^UCQL3zLmY
zSHySY(!=J=<>p@>zgRdIr_stq62WOcxE3tT09mdtzrACkR60Z`?EGTE3vPW(Qeawg
zl%7bD#^mQD#qIl+&|4}eEmb6~XLF5DZnhqt1wiok{L+JT^Y&-G!07ptKeq1ODCD3S
z2N<&}Ae}uG+_>F(<_BNQHJ@B;%*_J!h!)Kbjn=(?Ek1gjTYNP2{PKlh@*(FI`a!Ru
z0SR|8ACMhKm}T;I#kOihQyhwri5v~v;C~nqj@PK+C@~VM>NUj(DRztIRz3kk3;q=d
zj#7KYrLFQ286_AgdWGl=Ru*4)IF=#lq}<-vY^1QM<>P*Tf9LhRaIQ9v#Y!H9=#MIO%uGe&r>s0!7
z^t1)wRC-*cb!S!bDm}iIeHe8*FiG)-&N{S`1ChxhSHpT{v?LcyTCHg%m=og)vDmtO
zy)kzok+XuYE;aAoT72}6FjP?~VC66}Ob#86jH$Y|O-(1+shg!^t_22#?w>0LqtSHU
zT~e!x4MY1ZlZuc;<`6N259lV5D3j)c_zB0;J*l1yN%f?938X$^S`LY1CW(-9Gz2n7
zZMTgE2k}XuLKzWW9OaQKAP>iQa+NK&JR4#ByVZe({?S+e3O@N>ebAaL7_T
z$dx-VtJLe%)Y3gY*&~*2rX@vhGJr!U%Q_ebDfo4%6gfSVfoAJ%`xsrg9KJPhMedM6
z&ZoDN8SK^L)OO^Cmlpe;*aKC|HRDSNgZ=5<#?&<#?D6CcX*!sm4<1hkla~VT^Tw5h
zU|~8Q{(xTahSbP|H>th^mvCff)(f$H*K{N3vj0cMksMY}Iw8C?<`>vl+`2(K^Srb+
z)skx-Ljsquo*}wJYp^m1HQgGuVT+P3i6tGJjSrX*kp&qc
zWt%ETqqqorBWzLpB|`&|Wk{|g)TQGh;)v}^-dmcMkuhdFo|lCclgp`7(WP32Ecp9S
zF)~X#*P@mZ>!FUA4;2$GkoM=C+T<%~gD2+>*GMTRBTIA`I9zH+(U?Uzf+iN=IQA|f
z#o&PX;}{t-7&*Y$9*9yVBEpsMmZ2nA9aG?H3AnNVeeY#;>CVkc=PF}%_p;PR}fsA3(jAOGIKEfG1T)hEK3y@ET8+A
zTl4cpauQ55v4&6f%c$ax@9@Y{{$llui={{kU0Vjk+{+2ziJh#-I!Z)qB9-@H;tGt1
zE7&7KTG36#Fk;m-I2993(q-6_RSk<#NL{}71Kq5>{gFrR_5Pzi0
z+f<{BDPy4A>nQN~%(LL}tzh;J$rD_L{ka@jeDpU_()->fu+G>RwE<7raBbgJnD;|e
zq7){$am8>c=mA!!rts&Dk#DMRj&xOjHtAM-ylz~-eziCJc>7#6jRzIKIf1Bc;CME?c%ZNfB$zKD|_3Zkf<9_z#;WM?-dC0
zqpYr|yzOn04gzr%%h05ZSTA1Em*kS%b@0IG`@f2o!ai@C3Kbl1#x(AG5TpGAeYt#J
z|IlbYUn~q1^Ml#`LVuw!_;zkbF_(jN>(=oCayf#5;`TyudoDXLu%j>(61Zpm{SfSM
R8ey;l`ri8Se%~!;{|9WDW|sf}
literal 0
HcmV?d00001
diff --git a/tools/tool_redis/README.md b/tools/tool_redis/README.md
new file mode 100644
index 0000000..b453083
--- /dev/null
+++ b/tools/tool_redis/README.md
@@ -0,0 +1,161 @@
+# Redis 数据库查询工具
+
+一个强大的 Redis 数据库查询工具,支持执行各种 Redis 命令,为 MaxKB 智能体平台提供 Redis 查询能力。
+
+## 功能特性
+
+- ✅ 支持 Redis 2.6 及以上版本
+- ✅ 支持所有 Redis 命令(GET、SET、HGETALL、KEYS 等)
+- ✅ 集成到 MaxKB 智能体平台
+- ✅ 简单易用的配置和部署
+- ✅ 自动处理字节、列表、集合、哈希等数据类型
+- ✅ 支持带引号的参数解析
+- ✅ 支持连接超时设置
+- ✅ 支持结果数量限制
+- ✅ 友好的中文错误提示
+
+## 系统要求
+
+- Redis 2.6 或更高版本
+- MaxKB 平台环境
+
+## 安装依赖
+
+在使用此工具之前,需要先安装所需的依赖包:
+
+```bash
+pip install redis==5.0.1
+```
+
+依赖包说明:
+- `redis==5.0.1` - Redis Python 客户端
+
+## 参数说明
+
+| 参数 | 类型 | 必填 | 默认值 | 说明 |
+|------|------|------|--------|------|
+| host | string | 是 | - | Redis 服务器地址 |
+| port | string | 是 | 6379 | 端口号 |
+| password | string | 否 | - | 密码,无密码时留空 |
+| db | string | 是 | 0 | 数据库索引(0-15) |
+| command | string | 是 | - | Redis 命令 |
+| timeout | number | 否 | 30 | 连接超时时间(秒) |
+| max_results | number | 否 | 1000 | 最大返回结果数,设为0不限制 |
+
+## 使用示例
+
+```python
+# 获取单个键值
+result = query_redis(
+ host="127.0.0.1",
+ port="6379",
+ password="",
+ db="0",
+ command="GET mykey"
+)
+
+# 查找所有键
+result = query_redis(
+ host="127.0.0.1",
+ port="6379",
+ password="your_password",
+ db="0",
+ command="KEYS *"
+)
+
+# 获取哈希表所有字段
+result = query_redis(
+ host="127.0.0.1",
+ port="6379",
+ password="your_password",
+ db="0",
+ command="HGETALL user:1001"
+)
+
+# 获取列表元素
+result = query_redis(
+ host="127.0.0.1",
+ port="6379",
+ password="",
+ db="0",
+ command="LRANGE mylist 0 -1"
+)
+
+# 带引号参数
+result = query_redis(
+ host="127.0.0.1",
+ port="6379",
+ password="",
+ db="0",
+ command='SET mykey "hello world"'
+)
+```
+
+## 常用命令参考
+
+| 命令 | 说明 | 示例 |
+|------|------|------|
+| GET | 获取字符串值 | GET key |
+| SET | 设置字符串值 | SET key value |
+| KEYS | 查找键 | KEYS pattern |
+| HGET | 获取哈希字段 | HGET hash field |
+| HGETALL | 获取哈希所有字段 | HGETALL hash |
+| LRANGE | 获取列表范围 | LRANGE list 0 -1 |
+| SMEMBERS | 获取集合所有成员 | SMEMBERS set |
+| ZRANGE | 获取有序集合范围 | ZRANGE zset 0 -1 |
+| TTL | 获取键过期时间 | TTL key |
+| TYPE | 获取键类型 | TYPE key |
+| INFO | 获取服务器信息 | INFO |
+| DBSIZE | 获取键数量 | DBSIZE |
+
+## 错误处理
+
+工具会返回友好的中文错误提示:
+
+| 错误类型 | 提示信息 |
+|----------|----------|
+| 连接失败 | 无法连接到 Redis 服务器 {host}:{port},请检查地址和端口 |
+| 认证失败 | 认证失败,请检查密码 |
+| 命令错误 | 命令执行错误: {详细信息} |
+| 连接超时 | 连接超时,请检查网络或增加 timeout 参数 |
+
+## 返回格式
+
+查询结果以 JSON 格式返回:
+
+```json
+{
+ "command": "GET mykey",
+ "result": "myvalue",
+ "type": "bytes"
+}
+```
+
+列表/集合结果:
+```json
+{
+ "command": "KEYS *",
+ "result": ["key1", "key2", "key3"],
+ "type": "list"
+}
+```
+
+哈希结果:
+```json
+{
+ "command": "HGETALL user:1001",
+ "result": {
+ "name": "张三",
+ "age": "25"
+ },
+ "type": "dict"
+}
+```
+
+## 注意事项
+
+1. 生产环境建议配置 Redis 密码认证
+2. 检查防火墙是否允许 6379 端口访问
+3. 建议使用只读账户进行查询操作
+4. 大数据量查询时建议设置 max_results 参数限制返回数量
+5. KEYS 命令在大数据量时可能影响性能,建议使用 SCAN 替代
diff --git a/tools/tool_redis/data.yaml b/tools/tool_redis/data.yaml
new file mode 100644
index 0000000..f319f75
--- /dev/null
+++ b/tools/tool_redis/data.yaml
@@ -0,0 +1,5 @@
+name: Redis 数据库查询
+tags:
+ - 数据库查询
+title: 实现 Redis 的查询操作
+description: 实现 Redis 的查询操作,支持执行各种 Redis 命令,包括 GET、SET、HGETALL、KEYS 等.
diff --git a/tools/tool_redis/logo.png b/tools/tool_redis/logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..ec869e4525136f45a0435bb15b9982688debd880
GIT binary patch
literal 3478
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
Date: Thu, 29 Jan 2026 18:20:36 +0800
Subject: [PATCH 2/2] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=20ClickHouse=20?=
=?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
...\345\272\223\346\237\245\350\257\242.tool" | Bin 0 -> 5833 bytes
tools/tool_clickhouse/README.md | 126 ++++++++++++++++++
tools/tool_clickhouse/data.yaml | 5 +
tools/tool_clickhouse/logo.png | Bin 0 -> 3265 bytes
4 files changed, 131 insertions(+)
create mode 100644 "tools/tool_clickhouse/1.0.0/ClickHouse \346\225\260\346\215\256\345\272\223\346\237\245\350\257\242.tool"
create mode 100644 tools/tool_clickhouse/README.md
create mode 100644 tools/tool_clickhouse/data.yaml
create mode 100644 tools/tool_clickhouse/logo.png
diff --git "a/tools/tool_clickhouse/1.0.0/ClickHouse \346\225\260\346\215\256\345\272\223\346\237\245\350\257\242.tool" "b/tools/tool_clickhouse/1.0.0/ClickHouse \346\225\260\346\215\256\345\272\223\346\237\245\350\257\242.tool"
new file mode 100644
index 0000000000000000000000000000000000000000..90ebd6c43dd5a8135a5da1c30b590c74639851ec
GIT binary patch
literal 5833
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.6.0
+```
+
+依赖包说明:
+- `clickhouse-connect>=0.6.0` - ClickHouse 官方推荐的 Python 驱动程序
+
+## 参数说明
+
+| 参数 | 类型 | 必填 | 默认值 | 说明 |
+|------|------|------|--------|------|
+| host | string | 是 | - | 数据库服务器地址 |
+| port | string | 是 | 8123 | HTTP 端口号(HTTPS 默认 8443) |
+| user | string | 是 | - | 用户名 |
+| password | string | 是 | - | 密码 |
+| database | string | 是 | - | 数据库名称 |
+| query | string | 是 | - | SQL 查询语句 |
+| timeout | number | 否 | 30 | 连接超时时间(秒) |
+| max_rows | number | 否 | 1000 | 最大返回行数,设为0不限制 |
+| use_https | boolean | 否 | False | 是否使用 HTTPS 连接 |
+
+## 使用示例
+
+```python
+# 基础查询
+result = query_clickhouse(
+ host="192.168.1.100",
+ port="8123",
+ user="default",
+ password="your_password",
+ database="test_db",
+ query="SELECT * FROM system.tables LIMIT 10"
+)
+
+# 带超时和行数限制的查询
+result = query_clickhouse(
+ host="192.168.1.100",
+ port="8123",
+ user="default",
+ password="your_password",
+ database="test_db",
+ query="SELECT * FROM your_table",
+ timeout=60,
+ max_rows=500
+)
+
+# 使用 HTTPS 连接
+result = query_clickhouse(
+ host="192.168.1.100",
+ port="8443",
+ user="default",
+ password="your_password",
+ database="test_db",
+ query="SELECT version()",
+ use_https=True
+)
+```
+
+## 错误处理
+
+工具会返回友好的中文错误提示:
+
+| 错误类型 | 提示信息 |
+|----------|----------|
+| 连接失败 | 无法连接到数据库服务器 {host}:{port},请检查地址和端口 |
+| 认证失败 | 认证失败,请检查用户名和密码 |
+| 数据库不存在 | 数据库 '{database}' 不存在 |
+| SQL语法错误 | SQL语法错误: {详细信息} |
+
+## 返回格式
+
+查询结果以 JSON 格式返回:
+
+```json
+[
+ {"column1": "value1", "column2": "value2"},
+ {"column1": "value3", "column2": "value4"}
+]
+```
+
+## 支持的数据类型
+
+| ClickHouse 类型 | 转换结果 |
+|-----------------|----------|
+| DateTime/Date | ISO 8601 格式字符串 |
+| Decimal | 浮点数 |
+| UUID | 字符串 |
+| IPv4/IPv6 | 字符串 |
+| Array | JSON 数组 |
+| Tuple | JSON 数组 |
+| Nested | JSON 对象 |
+| FixedString/String | 字符串 |
+
+## 注意事项
+
+1. 默认使用 HTTP 协议(端口 8123),如需 HTTPS 请设置 `use_https=True` 并使用端口 8443
+2. 检查防火墙是否允许 8123/8443 端口访问
+3. 建议使用只读账户进行查询操作
+4. 大数据量查询时建议设置 max_rows 参数限制返回行数
+5. 如果查询语句没有 LIMIT,工具会自动添加 max_rows 限制
diff --git a/tools/tool_clickhouse/data.yaml b/tools/tool_clickhouse/data.yaml
new file mode 100644
index 0000000..376ebb9
--- /dev/null
+++ b/tools/tool_clickhouse/data.yaml
@@ -0,0 +1,5 @@
+name: ClickHouse 数据库查询
+tags:
+ - 数据库查询
+title: 实现 ClickHouse 列式数据库的查询操作
+description: 实现 ClickHouse 列式数据库的查询操作,支持对接 ClickHouse 20.x 及以上版本,推荐 21.8+.
diff --git a/tools/tool_clickhouse/logo.png b/tools/tool_clickhouse/logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..2f4604218bf60b75fd833b9e1beb388f59bf79e3
GIT binary patch
literal 3265
zcmeHK`%_a#6uv=GW5T0QNudx>M05ZVD3yt#m4^rsa6kcz1|o{K7?4LGLL|rlX&Mk;
z!Rmk%rbsOTqIH1bVIWaZd_Z}`2Vfeo)Fe>I)BqYtx_blt7yN}elewF7cF%t2+db#p
z%Q+AdV6@h1ErK9Mf&2Wz5Cr24ez-NOfF^FBMFSp~)UW^_r0%)396|6|fqr`qGANTH
zzP`jQicu
z1gA%s+?&jZvsLOets{l5PP;p^cf2X0F=IYhYJY1RDWs`SzMSfO;nvB1SUxtC?y+mD
z7C#m|Y^z}i&spt`n0grftFVp3y6BceXL%yZv}i<0b;_YPZ_c3$*OB;LQ=vAJR}?)85RlO&pwj;ralF&3x
z9>gne992Y*UFx;32=FP+J2$%030)m=@zVV>=u(BbV-yznvk>GKzRzC)T}PCAbp%08
z&bs5jxLTvej}NdBP-Doqvp*+8jf0LM0yCg-jy1HD<5r`_UCFsTsKGcr+85)68r2+g
z{z??)p1mJM=b^DCv^3TM-F>ZlAHf(kE<;;pZTYT6u}3Ew#~SYxNlgeAt_Ye_zVS0H
zs$#cJTQ-hMK+xP@@6k?@R`v`%n@ed*$j8kLsS;0*Wl=dbVM*KLTE3^sDi;!&HgU|&
z&dI@wBruKfOw{eE8F}gSZwxQXcB(OStm{w$*8a=_IcToQJ_Oq{BibVSLX3x#
z`lxb2-4L9p{L9H7D4Lsgx5~2{94OXpQsXIVSskuAF9cg=c7Gu9C+c;ocLt5ozwmb*
z978#}y(2m36mWl{fL>$)_Lii+;8>PeO8S)|{1a4^P4#Dj-d*k8B2&(C0MsgRrfO)Q
z{My-BW0O0P7VI#SGAwM!plIMG*+l8x)DGu`31#u)W@-UqN!%nI66v
z!iB0{>OynCV(j#ZTj)N0R2y;y2+=!(H|HYzF0#~&^e*i|(qDXvkaz5mB!XNS~7f@!F_DYLl@Aw($+OjV(Oq5g>^vcYv
zpGz<*-ZARU|GjNm2i>U#6)@(0t`B52=YKZNZOQ%WLKw|To3`;i%dh7
z_{@ViGG{iZqD5Ua5cMm{oJ&Qx2a)0kmLT8c(i#0#aC^$L3_*~_DZQG
z+NUlbzD-_@HWa#OZ%*Z;crnTcz7P`2D=N0<~aWJZJ