返回市场
凝胶-MCP服务器

凝胶-MCP服务器

作者:christian56111 星标更新:2025-10-30

项目介绍

Gel 数据库 MCP 服务器 [非官方/旧版]

在 Gel 拥有官方 MCP 服务器之前创建了这个项目,官方服务器设置起来要简单得多。不过,由于这是一个我制作的 MCP 服务器示例,所以仍然保留了下来。 官方版本在这里:https://github.com/geldata/gel-mcp

这是一个基于 TypeScript 的模型上下文协议(MCP)服务器,旨在通过 EdgeQL 查询简化 Gel 数据库操作。该项目提供了工具供 LLM 代理(如 Cursor 代理、Claude Code 等)自动学习您的模式,并编写、验证和执行数据库查询。轻松通过自然语言与您的 Gel 数据库进行交互。编码者们欢呼吧!

注意:不包括查询生成,因为 LLM 可以编写更灵活的查询。使用 Cursor 代理和 Claude-3.7-sonnet-thinking 测试时,在提供相关网页链接的 Gel 文档后取得了良好的结果。

项目架构图

快速入门指南

# 1. 安装依赖
yarn install

# 2. 如果已有 dbschema 文件夹,请将其复制到项目中
# cp -r /path/to/your/dbschema ./
# 或者直接复制粘贴

# 3. 初始化一个 Gel 项目
npx gel project init
# 按照提示设置新项目
# 如果需要指向现有的 Gel 实例,请提供实例名称
#   - 导入迁移如果被询问

# 4. 生成 EdgeQL JavaScript 查询构建器文件
npx @gel/generate edgeql-js
# 注意:在任何模式更改后重新运行此命令

# 5. 更新连接设置
# 编辑 src/index_gel.ts 行 19-25,填写您的数据库、主机、端口、用户名和密码
# 编辑 src/index_gel.ts 行 37,填写您的分支名称

# 6. 构建项目
yarn build

# 7. (可选)测试服务器无错误运行
node build/index.js

# 7.1 (如果有错误)使用提供更清晰错误日志的 UI 测试服务器:
npx @modelcontextprotocol/inspector node build/index.js

# 8. (推荐)包含 gel_llm.txt 文档文件
# 下载 Gel 文档文件并放置在项目根目录
# 这允许搜索工具和直接文件访问供您的 LLM 代理使用
# curl -o gel_llm.txt https://raw.githubusercontent.com/yourorg/gel-docs/main/gel_llm.txt
# 注意:用实际的 gel_llm.txt 文件源替换 URL

在 Cursor 中连接 MCP 服务器

  1. 点击右上角的齿轮图标 > MCP > +添加新服务器
  2. 命名为您想要的名字
  3. 选择类型:命令
  4. 输入以下内容:node your/full/path/to/build/index.js

Cursor MCP 设置截图

注意: 虽然此服务器主要与 Cursor 的代理进行了测试,但它应该也适用于支持模型上下文协议的其他代理和 LLM。如果您使用其他代理进行了测试,请随时分享您的发现!

可用工具

Gel 数据库 MCP 服务器提供了以下工具:

describe-schema

这有助于您的 LLM 代理了解数据库结构,而无需手动检查代码。代理可以发现可用的实体类型、它们的属性、关系和约束,从而生成更准确的查询。

何时使用: 当您的代理需要理解数据库实体的结构以便查询它时。 image

validate-query

这有助于您的 LLM 代理验证原始 EdgeQL 查询语法而不执行它,允许在运行之前安全地验证生成的查询。

何时使用: 在查询开发期间检查语法,而不冒险产生执行副作用。 image

execute-edgeql

这帮助您的 LLM 代理通过运行原始 EdgeQL 查询直接与数据库交互,检索数据并根据您的指令执行操作。您的 LLM 可以生成 EdgeQL 查询并自主执行它们。

示例:

SELECT Product { name, price } FILTER .price > 100;

image

search-gel-docs

此工具允许您的 LLM 代理搜索 Gel 文档以查找有关 EdgeQL 语法、功能或示例的相关信息。它返回带有上下文的全面结果,帮助代理更好地理解 Gel 数据库概念。

何时使用: 当您的代理需要了解特定的 Gel/EdgeQL 功能、理解语法或找到实现数据库操作的示例时。

示例:

search_term: "for loop"
context_lines: 10  # 可选:显示的上下文行数(默认:5)
match_all_terms: true  # 可选:要求匹配所有词项(默认:false)

关于文档混合方法的注意事项: 为了获得最佳效果,我们建议:

  1. gel_llm.txt 文件包含在项目根目录中(用于直接文件访问)
  2. 使用 search-gel-docs 工具进行有针对性的查询

这种混合方法使您的 LLM 代理能够在需要时搜索特定术语,同时也能访问完整的文档以获取更广泛的上下文。

execute-typescript

类似于 execute-edgeql,但可用于测试和运行使用查询构建器语法编写的 TypeScript Gel 查询。

工具中包含了说明,但仍建议询问代理其拥有的说明,以便在上下文中加载它们。这确保不会跳过它们。

注意:一般的 JavaScript 语法错误可能会导致服务器崩溃,因此如果连接显示已关闭,您需要在 Cursor MCP 设置中刷新崩溃的服务器或重启服务器。

告诉 LLM 这些是最佳实践:

  • 使用 await gelClient.query() 并结合 console.log 显示结果
  • 使用 ORDER BY 和 THEN,而不是逗号(例如,ORDER BY .field1 THEN .field2)
  • 保持代码简洁并专注于单一操作

示例:

console.log(await gelClient.query(`
  SELECT Product { 
    name, 
    price 
  } 
  FILTER .price > 100 
  ORDER BY .price DESC 
  LIMIT 5;
`));

何时使用: 对于需要编程逻辑的复杂查询,或者当您需要使用 JavaScript 处理查询结果时。

image

更多信息

有关模型上下文协议的更多信息,请访问 modelcontextprotocol.io/quickstart