尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

MCP Toolbox 集成 FalkorDB:预构建配置与图数据库 Cypher 工具实战指南

MCP Toolbox 集成 FalkorDB:预构建配置与图数据库 Cypher 工具实战指南 MCP Toolbox 集成 FalkorDB预构建配置与图数据库 Cypher 工具实战指南【免费下载链接】mcp-toolboxMCP Toolbox for Databases is an open source MCP server for databases.项目地址: https://gitcode.com/GitHub_Trending/ge/mcp-toolbox导读本文围绕 MCP Toolbox 仓库中 FalkorDB 集成模块的预构建配置展开讲解如何通过--prebuilt falkordb一键加载面向图数据库的 MCP Server包括环境变量驱动的连接配置、execute_cypher/get_schema/list_graphs三个核心工具的含义与底层实现以及从本地 Docker 启动 FalkorDB 到接入 MCP Inspector 的完整实操链路。读完本文你将掌握在 MCP Toolbox 中接入 FalkorDB 图数据库的完整配置方法与运行原理并能在自己的 Agent 工作流中直接使用。FalkorDB 预构建配置一览FalkorDB 是一个低延迟、开源的图数据库通过 Redis 协议支持 openCypher 查询语言单个实例可以承载多个相互独立的图其原生向量索引与全文索引使其成为 GenAI 知识图谱后端的常见选择见 FalkorDB 源文档。在 MCP Toolbox 中FalkorDB 被预置为一个开箱即用的 prebuilt 配置。关联文档docs/en/integrations/falkordb/prebuilt-configs/falkordb.md给出了该配置的核心事实--prebuilt取值falkordb环境变量FALKORDB_HOST、FALKORDB_PORT默认6379、FALKORDB_GRAPH、FALKORDB_USERNAME可选、FALKORDB_PASSWORD可选权限要求执行 Cypher 查询需要数据库级database-level权限工具清单execute_cypher、get_schema、list_graphs使用方式非常直接启动 MCP Toolbox 服务器时传入--prebuilt falkordb并在环境中注入上述变量即可。例如export FALKORDB_HOST127.0.0.1 export FALKORDB_PORT6379 export FALKORDB_GRAPHmy_graph ./toolbox --prebuilt falkordb预构建配置在仓库中的真实形态上述 prebuilt 配置并非硬编码在程序里而是由仓库中的声明式 YAML 模板驱动的。查看 internal/prebuiltconfigs/tools/falkordb.yaml 可以看到它的真实结构一个kind: source的源定义加上三个kind: tool的工具定义最后以一个kind: toolsetfalkordb_database_tools聚合所有工具。该模板的关键点在于环境变量替换语法${FALKORDB_HOST}、${FALKORDB_PORT:6379}、${FALKORDB_USERNAME:}、${FALKORDB_PASSWORD:}、${FALKORDB_GRAPH}。其中${FALKORDB_PORT:6379}表示变量未设置时使用默认值6379这与 prebuilt 文档中“端口默认 6379”的描述完全一致而username/password的默认值为空字符串对应“可选”的说明。graph字段在模板中没有默认值因此FALKORDB_GRAPH属于必填环境变量——MCP Toolbox 建议通过${ENV_NAME}形式引用环境变量而非在配置中硬编码敏感信息。深入理解三个内置工具预构建配置聚合了三个与图数据库直接相关的工具见 falkordb.yaml工具名类型作用execute_cypherfalkordb-execute-cypher向图执行一条 Cypher 查询任意语句get_schemafalkordb-schema提取图的完整模式节点标签、关系类型、索引、约束、统计信息list_graphsfalkordb-list-graphs列出实例上存储的所有图它们统一挂载在同一个falkordb-source源上并聚合为falkordb_database_tools工具集。下面分别展开其能力与实现细节。execute_cypher执行任意 Cypher 查询falkordb-execute-cypher让 Agent 将任意 Cypher 语句提交到源所配置的图上执行。其实现位于 internal/tools/falkordb/falkordbexecutecypher/falkordbexecutecypher.go底层通过源对象上的RunQuery方法完成见 internal/sources/falkordb/falkordb.go。该工具暴露三个运行时参数cypher必填要执行的 Cypher 语句空字符串会被拒绝dry_run可选默认false置为true时不会真正执行查询而是通过GRAPH.EXPLAIN返回查询的执行计划graph仅当allowGraphOverride: true时暴露允许 Agent 绕过源的默认图直接指定实例上的其他图。readOnly是配置阶段的关键开关默认false。当其置为true时查询会通过 FalkorDB 的GRAPH.RO_QUERY命令派发由数据库服务端本身拒绝写操作而不是靠客户端做查询检查——这一语义在源码RunQuery的注释中明确说明falkordb.go也体现在工具实现中对ReadOnly标志的透传falkordbexecutecypher.go。同样值得注意的还有查询超时源配置中的queryTimeoutMs会通过falkordb.NewQueryOptions().SetTimeout()传给每次查询未设置时无超时限制falkordb.go。get_schema提取图模式falkordb-schema工具提取所配置图的完整 schema 描述包括节点标签与关系类型及其观测到的属性形状每个标签/类型最多采样sampleSize个实体默认 100、索引含向量索引与全文索引、约束以及图统计信息。其输出是一个结构化 JSON见 falkordb-schema 工具文档{ graphInfo: {name: my_graph, nodeCount: 2, edgeCount: 1}, nodeLabels: [ {name: Person, count: 1, properties: [{name: name, types: [STRING]}]} ], relationships: [ {type: ACTED_IN, count: 1, startNode: Person, endNode: Movie, properties: []} ], indexes: [], constraints: [], statistics: {totalNodes: 2, totalRelationships: 1} }这个工具对 LLM Agent 特别有价值在执行复杂查询前先获取图模式能显著提升生成 Cypher 的准确性。其实现位于 internal/tools/falkordb/falkordbschema/辅助逻辑与类型定义分别沉淀在helpers/与types/子包中。list_graphs发现实例上的所有图falkordb-list-graphs通过GRAPH.LIST命令列出源实例上存储的所有图名称见 falkordb-list-graphs 工具文档输出格式为{graphs: [my_graph, another_graph]}由于单个 FalkorDB 实例可以承载多个独立图该工具通常与配置了allowGraphOverride: true的falkordb-execute-cypher配合使用先列举图再跨图执行查询形成一个完整的“发现—执行”闭环。一个补充工具falkordb-cypher预定义语句除上述三个工具外仓库还提供了falkordb-cypher类型的工具见 falkordb-cypher 工具文档用于执行预定义的 Cypher 语句。它与execute_cypher的区别在于语句在配置文件中固定下来并且以参数化查询方式执行如$name、$year从而防止注入。需要注意参数可以替换任意表达式但不能用于替换标识符、标签、关系类型等查询结构部分。kind: tool name: search_movies_by_actor type: falkordb-cypher source: my-falkordb-movies-instance statement: | MATCH (m:Movie)-[:ACTED_IN]-(p:Person) WHERE p.name $name AND m.year $year RETURN m.title, m.year LIMIT 10 description: | Use this tool to get a list of movies for a specific actor and a given minimum release year. parameters: - name: name type: string description: Full name of the actor. - name: year type: integer description: Minimum release year.该工具不在 prebuilt 的falkordb_database_tools工具集内但适合在自定义配置中作为“受控只读查询”的补充。源配置连接 FalkorDB 实例的完整参数FalkorDB 源source负责建立与实例的连接并指定工具的默认图。关联文档要求数据库级权限才能执行 Cypher而源配置则决定了如何获得该权限。以下为源支持的完整字段见 FalkorDB 源文档 及源码 falkordb.go字段类型必填说明typestring是固定为falkordbhoststring是FalkorDB 实例主机如127.0.0.1portstring是实例端口如6379usernamestring否开启认证时的用户名passwordstring否用户密码graphstring是工具操作的默认图名queryTimeoutMsint否单次查询超时毫秒未设置则无超时tls.enabledbool否是否启用 TLS默认falsetls.insecureSkipVerifybool否跳过服务端证书校验不推荐默认false认证、TLS 与连接建立无访问控制的 FalkorDB 实例例如本地docker run -p 6379:6379 falkordb/falkordb可以不填凭据直接使用而开启了认证的实例如 FalkorDB Cloud则需要提供username、password并对加密端点启用tls。从源码看连接建立经历了一个完整的校验流程falkordb.goTLS 配置一致性校验validateTLS会拒绝tls.insecureSkipVerify: true但tls.enabled: false的矛盾配置避免“跳过校验”被静默忽略客户端初始化通过falkordb.FalkorDBNew创建客户端Addr由net.JoinHostPort(host, port)组合若启用 TLS则配置tls.Config且最低版本强制为 TLS 1.2连通性探活连接建立后立即执行Ping失败则关闭连接并报错安全提示若启用了insecureSkipVerify初始化阶段会输出警告日志明确提示该配置暴露中间人攻击风险不建议在生产环境使用。完整源配置示例kind: source name: my-falkordb-source type: falkordb host: 127.0.0.1 port: 6379 username: ${FALKORDB_USERNAME} password: ${FALKORDB_PASSWORD} graph: my_graph查询结果的序列化行为RunQuery的结果会被转换为 JSON 兼容结构后返回falkordb.go节点Node序列化为{id, labels, properties}关系Edge序列化为{id, type, sourceId, destinationId, properties}路径Path序列化为{nodes, edges}两个数组没有RETURN子句的写查询如CREATE若产生变更则返回stats字段包含nodesCreated、relationshipsCreated、propertiesSet、labelsAdded、executionTimeMs等变更计数让写操作也能获得有意义的反馈。这些细节意味着 Agent 拿到的是结构清晰、可直接用于推理的 JSON而非原始驱动的内部类型。从零开始Docker 启动 FalkorDB 并接入 MCP Inspector仓库提供了完整的快速上手样例mcp_quickstart.md以下按步骤复现。第一步启动 FalkorDB 并灌入示例数据用 Docker 一行启动本地实例docker run -d --name falkordb -p 6379:6379 falkordb/falkordb随后用redis-cli或暴露 3000 端口后用 FalkorDB 浏览器创建一个小型电影知识图谱docker exec falkordb redis-cli GRAPH.QUERY movies CREATE (hanks:Person {name: Tom Hanks}), (ryan:Person {name: Meg Ryan}), (sleepless:Movie {title: Sleepless in Seattle, year: 1993}), (gump:Movie {title: Forrest Gump, year: 1994}), (hanks)-[:ACTED_IN]-(sleepless), (hanks)-[:ACTED_IN]-(gump), (ryan)-[:ACTED_IN]-(sleepless)第二步编写 tools.yaml 并启动 Toolbox下载对应操作系统与 CPU 架构的 Toolbox 二进制并赋予执行权限后编写tools.yamlkind: source name: falkordb-movies type: falkordb host: 127.0.0.1 port: 6379 graph: movies --- kind: tool name: search_movies_by_actor type: falkordb-cypher source: falkordb-movies statement: | MATCH (m:Movie)-[:ACTED_IN]-(p:Person) WHERE p.name $name RETURN m.title, m.year LIMIT 10 description: Use this tool to list the movies a given actor acted in. parameters: - name: name type: string description: Full name of the actor. --- kind: tool name: execute_cypher type: falkordb-execute-cypher source: falkordb-movies description: Use this tool to execute a Cypher query against the movie graph. --- kind: tool name: get_schema type: falkordb-schema source: falkordb-movies description: Use this tool to get the schema of the movie graph.启动服务器./toolbox --tools-file tools.yaml第三步连接 MCP Inspector 验证npx modelcontextprotocol/inspector按提示安装 Inspector 包后浏览器打开http://127.0.0.1:6274选择Streamable HTTP传输方式URL 填http://127.0.0.1:5000/mcp点击Connect。随后点击List Tools即可看到search_movies_by_actor、execute_cypher、get_schema三个工具——可以试问“Tom Hanks 演过哪些电影”、执行一条临时 Cypher或拉取图 schema。进阶配置自定义 Cypher 工具的参数化与安全如果需要更精细的工具面可以在自定义配置中组合使用各类参数。例如给falkordb-execute-cypher设置readOnly: true让服务端强制拒绝写操作kind: tool name: execute_cypher type: falkordb-execute-cypher source: my-falkordb-instance description: Use this tool to execute a Cypher query against the graph. readOnly: true需要 Agent 访问实例上其他图时开启allowGraphOverride: true此时工具会额外暴露graph参数若实例上存在不应暴露的图则保持默认关闭见 falkordb-execute-cypher 工具文档。从源码看readOnly与allowGraphOverride分别对应工具配置中的ReadOnly与AllowGraphOverride字段并直接决定默认注解只读/破坏性与参数清单falkordbexecutecypher.go。需要固定查询时则优先使用falkordb-cypher的参数化语句避免 Agent 拼接任意查询带来的注入风险。总结MCP Toolbox 通过--prebuilt falkordb为 FalkorDB 提供了零成本接入的预构建配置环境变量决定连接方式execute_cypher/get_schema/list_graphs三个工具覆盖了图数据库“查询—理解—发现”的核心诉求。配合源配置中的认证、TLS、查询超时等细节source.md以及readOnly、allowGraphOverride、参数化语句等安全控制手段开发者可以在数分钟内把一个可用的图数据库 MCP 工具面接入自己的 Agent 工作流。如需继续深入可查阅仓库中的以下资源预构建配置模板internal/prebuiltconfigs/tools/falkordb.yaml源实现internal/sources/falkordb/falkordb.go工具实现internal/tools/falkordb/falkordbexecutecypher/falkordbexecutecypher.go、internal/tools/falkordb/falkordbschema/工具文档falkordb-execute-cypher、falkordb-schema、falkordb-list-graphs、falkordb-cypher快速上手docs/en/integrations/falkordb/samples/mcp_quickstart.md【免费下载链接】mcp-toolboxMCP Toolbox for Databases is an open source MCP server for databases.项目地址: https://gitcode.com/GitHub_Trending/ge/mcp-toolbox创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表