ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

MCP Toolbox for Databases 预置配置指南:SingleStore 快速接入与工具详解

MCP Toolbox for Databases 预置配置指南:SingleStore 快速接入与工具详解 MCP Toolbox for Databases 预置配置指南SingleStore 快速接入与工具详解【免费下载链接】mcp-toolboxMCP Toolbox for Databases is an open source MCP server for databases.项目地址: https://gitcode.com/GitHub_Trending/ge/mcp-toolboxSingleStore 是面向数据密集型应用的云原生分布式 SQL 数据库同时支持关系型与多模型工作负载。在 MCP Toolbox for Databases 中singlestore预置配置Prebuilt Configuration让你无需手写任何 YAML仅通过一条--prebuilt singlestore命令和 5 个环境变量即可把 SingleStore 实例暴露为 MCP 工具。读完本文你将掌握预置配置的启用方式、全部环境变量与底层连接行为并深入理解execute_sql与list_tables两个工具的调用链与实现原理。预置配置概述--prebuilt singlestoreMCP Toolbox for Databases 将常见的“数据源 工具 工具集”组合封装为预置配置避免用户重复编写 YAML。singlestore预置配置正是其中之一其完整定义位于仓库的 internal/prebuiltconfigs/tools/singlestore.yaml包含三部分一个kind: source的 SingleStore 数据源类型为singlestore两个kind: tool的工具定义一个名为singlestore-database-tools的kind: toolset将两个工具聚合为一个工具集。预置配置的加载逻辑由 internal/prebuiltconfigs/prebuiltconfigs.go 实现启动时通过embed.FS读取tools/目录下的全部 YAML 文件并按 source 类型建立索引。当你指定--prebuilt singlestore时配置加载器会返回对应的 YAML 内容并注册其中的 source、tool 与 toolset若指定了不存在的预置配置则会在报错信息中列出所有可用的预置 source 名称。启用预置配置的方式如下go run . serve --prebuilt singlestore在运行前你需要为以下 5 个环境变量赋值它们会被 YAML 中的${VAR}占位符引用并替换。环境变量5 个必填项决定连接目标singlestore预置配置的所有连接参数都通过环境变量注入不直接硬编码在配置文件中。下表来自官方预置配置文档singlestore.md环境变量说明SINGLESTORE_HOSTSingleStore 服务器的主机名或 IP 地址SINGLESTORE_PORTSingleStore 服务器的端口号SINGLESTORE_DATABASE要连接的数据库名称SINGLESTORE_USER数据库用户名SINGLESTORE_PASSWORD数据库用户对应的密码启动前按如下方式导出export SINGLESTORE_HOST127.0.0.1 export SINGLESTORE_PORT3306 export SINGLESTORE_DATABASEmy_db export SINGLESTORE_USERadmin export SINGLESTORE_PASSWORDyour_password go run . serve --prebuilt singlestore从源码结构看internal/sources/singlestore/singlestore.go 中的Config结构体将这 5 个字段Host、Port、Database、User、Password全部标记为validate:required即缺少任何一个都会导致 source 校验失败服务无法正常启动。此外预置 YAML 中还设置了queryTimeout: 30s为查询执行提供默认超时保护。工具一execute_sql— 直接执行任意 SQLexecute_sql是预置配置提供的第一个工具对应工具类型singlestore-execute-sql。它的作用正如其名把用户传入的sql参数原样提交到 SingleStore 执行。参数与配置该工具仅接收一个字符串参数sql无其他可选参数。在预置配置中它的定义如下kind: tool name: execute_sql type: singlestore-execute-sql source: singlestore-source description: Use this tool to execute SQL.底层调用链从实现看internal/tools/singlestore/singlestoreexecutesql/singlestoreexecutesql.go 中Tool.Invoke的流程非常直接校验当前 source 是否实现了compatibleSource接口要求提供SingleStorePool()与RunSQL()从参数表取出sql字符串若类型断言失败会返回 Agent 错误调用source.RunSQL(ctx, sqlStr, nil)执行查询无绑定参数将结果按行组织为map[string]any键为列名返回给上层。值得注意的一点是RunSQL在 singlestore.go 中的实现会利用mysqlcommon.ConvertToType依据列类型转换值并特别处理NULL值。此外官方工具文档singlestore-execute-sql.md明确提示该工具面向“带人工确认的开发者助手工作流”不应用于生产环境的无监督 Agent——因为它可以执行任意 SQL包括写操作。工具二list_tables— 获取用户表的完整 Schema 信息list_tables是预置配置的第二个工具对应工具类型singlestore-sql通用 SQL 模板工具。它的价值在于让 LLM 在写 SQL 之前先拿到目标库中用户表的详细结构信息对象类型、列、约束、索引、触发器、注释从而生成更准确的查询语句。输出内容根据预置 YAML 中的描述singlestore.yaml该工具以 JSON 形式返回用户创建的表普通表或分区表的完整 Schema每个对象包含schema_name、object_name、object_type固定为TABLEowner从INFORMATION_SCHEMA.SCHEMA_PRIVILEGES推断的表属主缺失时为N/Acomment表注释columns列数组每列含column_name、data_type、ordinal_position、is_not_nullable、column_default、column_commentindexes索引数组含index_name、is_unique、is_primary、index_columnsconstraints约束数组含constraint_name、constraint_type主键/外键/唯一约束、constraint_columns外键还会带出foreign_key_referenced_table与foreign_key_referenced_columnstriggers触发器数组当前固定为空数组可选参数list_tables提供一个可选参数参数类型默认值说明table_namesstring逗号分隔的表名列表为空时列出用户 Schema 中所有表该参数通过 SQL 中的?占位符绑定对应parameters中定义的table_names。当传入表名列表时语句会精确过滤留空则列出全部用户表。默认排除cluster、information_schema、memsql三个系统 Schema且只统计BASE TABLE类型。背后的 SQL 实现该工具属于singlestore-sql类型其核心是一条基于INFORMATION_SCHEMA的复杂 CTE 查询运行时会先经 singlestoresql.go 的ResolveTemplateParams处理模板参数再通过RunSQL执行。查询共使用 6 个 CTE 组装信息constraint_columns_cte按约束聚合其覆盖的列来自KEY_COLUMN_USAGEforeign_key_columns_cte聚合外键引用的目标列table_owners从SCHEMA_PRIVILEGES去重推断每个 Schema 的属主table_columns、table_indexes、table_constraints分别聚合列、索引与约束的 JSON 数组最终通过JSON_BUILD_OBJECT将所有信息打包为object_details字段输出。若你想自定义该工具的过滤逻辑或返回字段可参考其 YAML 定义自行编写singlestore-sql类型工具该类型支持statementparameters组合具备模板参数与标准参数两套机制。工具集singlestore-database-tools预置配置最后声明了一个工具集kind: toolset name: singlestore-database-tools tools: - execute_sql - list_tables启用预置配置后singlestore-database-tools会把execute_sql与list_tables作为一个整体向 MCP 客户端暴露便于 Agent 先list_tables探查 Schema再execute_sql执行查询形成“感知—执行”的闭环。底层连接行为TLS、超时与驱动理解连接细节有助于排查生产环境问题。从 singlestore.go 的initSingleStoreConnectionPool可以看出SingleStore source 底层复用了go-sql-driver/mysql驱动SingleStore 兼容 MySQL 协议其默认连接行为包括协议与寻址Net: tcp地址为host:portTLS 默认值tlspreferred即服务器支持 SSL/TLS 就启用加密否则回退到明文连接时间解析ParseTime: trueDATETIME/TIMESTAMP 列会解析为time.Time兼容性AllowNativePasswords: true、CheckConnLiveness: true包大小MaxAllowedPacket为 64 MiB矢量类型通过 DSN 参数vector_type_project_formatJSON让 SingleStore 以 JSON 格式返回矢量类型便于 LLM 消费连接标识ConnectionAttributes标记为_connector_name:MCP toolbox for Databases查询超时queryTimeout如30s会被转换为驱动层的readTimeout参数。queryTimeout支持 Go 的时长格式如30s、2m解析失败会直接返回错误。如果你需要自定义连接参数例如强制 TLS 校验、关闭 TLS、启用压缩等可以在自建 source 配置中通过connectionParams追加任意 go-sql-driver/mysql 支持的 DSN 参数其优先级高于默认值。从预置配置到自定义配置预置配置适合快速验证需要更多控制时可将 singlestore.yaml 展开为独立配置文件并使用toolbox serve --config指定。展开后的 source 配置支持额外字段详见 source.md字段类型必填说明typestring是必须为singlestorehoststring是目标主机名或 IP如127.0.0.1portstring是端口如3306databasestring是数据库名userstring是数据库用户名passwordstring是用户密码queryTimeoutstring否查询最长等待时间如30s、2m默认不限制connectionParamsmap[string]string否追加到 DSN 的驱动参数常用作 TLS 配置自定义配置在 TLS 方面有四种典型用法# 默认服务器支持 TLS 则启用否则回退明文 kind: source name: my-singlestore-source type: singlestore host: 127.0.0.1 port: 3306 database: my_db user: ${USER_NAME} password: ${PASSWORD} queryTimeout: 30s# 强制 TLS 并校验服务器证书 connectionParams: tls: true# 强制 TLS 但跳过证书校验 connectionParams: tls: skip-verify# 完全禁用 TLS connectionParams: tls: false建议所有场景都使用${ENV_NAME}占位符引用敏感信息避免把密码硬编码进配置文件——这与预置配置的环境变量设计理念保持一致。小结--prebuilt singlestore提供了一条零 YAML 的 SingleStore 接入路径5 个环境变量确定连接目标两个工具覆盖“Schema 探查 SQL 执行”的完整 Agent 工作流。若需更精细的控制TLS 策略、超时、自定义查询模板可参考 source.md、singlestore-execute-sql.md 与 singlestore-sql.md 展开为自定义配置底层连接行为与驱动参数均可在 singlestore.go 中找到依据。【免费下载链接】mcp-toolboxMCP Toolbox for Databases is an open source MCP server for databases.项目地址: https://gitcode.com/GitHub_Trending/ge/mcp-toolbox创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表