ARTICLE DETAIL

资讯详情

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

MCP Toolbox 的 firebird-execute-sql 工具:在 Firebird 数据库上执行任意 SQL 的完整指南

MCP Toolbox 的 firebird-execute-sql 工具:在 Firebird 数据库上执行任意 SQL 的完整指南 MCP Toolbox 的 firebird-execute-sql 工具在 Firebird 数据库上执行任意 SQL 的完整指南【免费下载链接】mcp-toolboxMCP Toolbox for Databases is an open source MCP server for databases.项目地址: https://gitcode.com/GitHub_Trending/ge/mcp-toolbox导读本文讲解 MCP Toolbox for Databases 中firebird-execute-sql工具的定义与使用它接受单个sql参数将该语句在指定的 Firebird 数据源上直接执行适用于带人工介入human-in-the-loop的开发者辅助工作流。读完本文你将掌握该工具在 YAML 配置中的完整字段说明、与firebird-sql预定义语句工具的差异、底层执行原理实现源码以及配套 Firebird source 的连接配置方式。About什么是 firebird-execute-sqlfirebird-execute-sql是 MCP Toolbox 为 Firebird 数据库集成提供的工具之一其核心行为是执行一条针对 Firebird 数据库的 SQL 语句。与firebird-sql工具不同firebird-execute-sql不预定义 SQL 语句而是只接收一个名为sql的输入参数并在配置指定的source数据源上运行该语句。该工具的定位非常明确面向带人工介入的开发者辅助工作流例如开发者在 IDE 或 MCP 客户端中让助手查询、修改数据库官方文档明确提示不应将其用于生产环境的自动化 Agent。这意味着使用方应当自行控制其暴露范围与鉴权策略。Note:从源码看该工具默认携带破坏性destructive注解。在 Initialize 方法 中当未显式提供annotations时工具会通过tools.NewDestructiveAnnotations生成默认注解表明该工具默认被标记为可能修改数据客户端如 Claude、Gemini CLI 等 MCP 宿主会据此对模型施加更严格的使用约束。与其他 Firebird 工具的分工在 Firebird 集成文档 下MCP Toolbox 共提供两个 SQL 相关工具理解二者差异有助于选择正确的工具工具语句来源参数方式适用场景firebird-execute-sql运行时由 LLM 通过sql参数传入无预定义参数语句直接执行开放式查询/修改依赖人工介入审核firebird-sql配置时预定义statement支持位置参数?、命名参数:param_name、模板参数受控的、可复用的查询模板天然防注入firebird-sql会将语句作为预编译语句prepared statement执行并明确警告模板参数可直接改写标识符、列名、表名因此更易受 SQL 注入影响而firebird-execute-sql连参数化机制都不提供安全性完全依赖调用方。因此凡是能固化为模板的查询应优先选用firebird-sql。配置示例在 MCP Toolbox 的 YAML 配置中firebird-execute-sql按kind: tool声明。以下是官方文档给出的最小可用示例kind: tool name: execute_sql_tool type: firebird-execute-sql source: my_firebird_db description: Use this tool to execute a SQL statement against the Firebird database.name是工具在 MCP 会话中的唯一标识如execute_sql_toolsource必须指向一个已定义且类型兼容的 Firebird 数据源如示例中的my_firebird_dbdescription会原样传递给 LLM用于帮助模型判断何时调用该工具建议写清楚适用边界例如仅当用户明确给出完整 SQL 时才使用。在解析层工具配置还支持可选的authRequired字段。相关单元测试 firebirdexecutesql_test.go 验证了带authRequired: [my-google-auth-service, other-auth-service]的配置可以被正确解析到Config.AuthRequired从而将该工具与指定的认证服务绑定。同时测试也证明type必须严格等于firebird-execute-sqlsource为必填项。Reference字段速查字段类型必填说明typestringtrue必须为firebird-execute-sqlsourcestringtrue执行 SQL 所依据的数据源名称descriptionstringtrue传递给 LLM 的工具描述annotationsobjectfalse工具注解源码中为可选字段缺省时使用破坏性默认注解authRequiredlist[string]false调用该工具所需的认证服务名称列表其中description的必填约束在源码中得到了印证在Initialize中如果cfg.Description 会直接返回description is required for tool错误见 firebirdexecutesql.go。底层执行原理从 Invoke 到 RunSQL理解该工具的执行链路有助于评估其行为边界。整个调用过程如下参数提取Invoke方法从parameters.ParamValues中取出sql参数并断言其类型为string若类型不符会返回 Agent 错误。该sql参数由parameters.NewStringParameter(sql, The sql to execute.)在初始化时注册见 firebirdexecutesql.go。兼容性校验工具要求source实现compatibleSource接口含FirebirdDB()与RunSQL(...)两个方法不兼容的数据源会被拒绝。日志记录执行前会通过logger.DebugContext记录实际执行的 SQL便于调试审计。语句执行以nil参数调用source.RunSQL(ctx, sqlStr, nil)即不携带任何绑定参数用户传入的 SQL 原样交给数据源。在 Firebird source 实现 中RunSQL通过FirebirdDB().QueryContext(ctx, statement, params...)执行查询然后读取列信息并将每行扫描为map[string]any字节切片类型的值会被转换为字符串。对于 INSERT、UPDATE、CREATE 等 DML/DDL 语句结果集通常为空此时返回空列表——从源码注释看空结果与查询本应返回数据但未返回两种情况无法在工具层区分调用方需要结合 SQL 语义自行判断。值得注意的实现细节Firebird 驱动采用github.com/nakagami/firebirdsqlDSN 格式为user:passwordhost:port/path/to/database.fdb见 initFirebirdConnectionPool。连接池默认配置为SetMaxOpenConns(5)、SetMaxIdleConns(2)、连接最大存活 5 分钟、空闲 1 分钟以避免死锁并控制资源占用。此外IsReadOnly()返回false说明该数据源默认允许写操作与工具的破坏性默认注解一致。配套 Firebird Source 的声明firebird-execute-sql依赖一个可用的 Firebird 数据源。按 Firebird source 文档source 配置如下kind: source name: my_firebird_db type: firebird host: localhost port: 3050 database: /path/to/your/database.fdb user: ${FIREBIRD_USER} password: ${FIREBIRD_PASS}字段类型必填说明typestringtrue必须为firebirdhoststringtrue连接地址如127.0.0.1portstringtrue连接端口如3050databasestringtrueFirebird 数据库文件路径如/var/lib/firebird/data/test.fdbuserstringtrue登录用户如SYSDBApasswordstringtrue用户密码强烈建议使用${ENV_NAME}环境变量替换机制存放密码等敏感信息而不是把明文密钥写进配置文件。源码中的 解析测试 验证了必填字段校验与未知字段拒绝逻辑缺少password会触发required校验失败多余字段如foo: bar会导致 YAML 解析报错。安全与使用建议保持人工介入该工具专为开发者辅助工作流设计文档明确警示不要用于生产 Agent将工具绑定到需要人工确认的 MCP 宿主或加上authRequired认证约束可显著降低误操作风险。优先使用参数化工具对于可复用的查询改用 firebird-sql 的位置参数?或命名参数:param_name形式其预编译语句机制可防止 SQL 注入性能也更好。审计 SQLfirebird-execute-sql不提供任何参数绑定属于完全开放执行建议在 description 中约束 LLM 只执行用户明确授权的语句并结合调试日志对执行记录进行审计。限制连接资源连接池默认上限为 5 个并发连接若你的工作流并发度较高可在源码层面按需调整修改SetMaxOpenConns等参数后重新构建。【免费下载链接】mcp-toolboxMCP Toolbox for Databases is an open source MCP server for databases.项目地址: https://gitcode.com/GitHub_Trending/ge/mcp-toolbox创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表