数据库MCP服务器

一个基于TypeScript的模型上下文协议(MCP)服务器,旨在通过EdgeQL查询简化Gel数据库操作,支持LLM代理自动学习数据库模式、编写、验证和执行查询。

  • by christian561
  • TypeScript
  • 本地部署
  • 12 星标
  • 更新于
在 GitHub 查看 christian561/gel-mcp-server

使用说明

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

这是在Gel拥有更容易设置的官方MCP服务器之前创建的。不过,把这个留了下来,因为这是我制作的MCP服务器的一个例子。 官方一:https://github.com/geldata/gel-mcp

一种基于TypeScript的模型上下文协议(MCP)服务器,旨在通过EdgeQL查询简化Gel数据库操作。该项目为LLM代理(游标代理、Claude代码等)提供工具,以自动学习模式,编写、验证和执行数据库查询。通过自然语言轻松与您的Gel数据库交互。Vibe程序员高兴!

注意:由于LLM可以编写更灵活的查询,因此不包括查询生成。使用Claude-3.7-connet-thinking使用Cursor代理进行了测试,并在通过链接相关网页提供Gel文档后取得了良好的效果。

快速入门指南

# 1. Install dependencies
yarn install

# 2. Copy your dbschema folder into the project if you have one already 
# cp -r /path/to/your/dbschema ./
# or just copy and paste

# 3. Initialize a Gel project
npx gel project init
# Follow prompts to set up a new project 
# Can point to an existing gel instance by providing the name of your instance
#   -Import migrations if it asks

# 4. Generate EdgeQL JavaScript query builder files
npx @gel/generate edgeql-js
# Note: Re-run this command after any schema changes

# 5. Update connection settings
# Edit src/index_gel.ts lines 19-25 with your database, host, port, user, password
# Edit src/index_gel.ts line 37 with your branch name

# 6. Build the project
yarn build

# 7. (optional) Test the server runs without errors
node build/index.js

# 7.1 (if you have errors) Test server with a UI that provides more clear error logs using: 
npx @modelcontextprotocol/inspector node build/index.js

# 8. (Recommended) Include the gel_llm.txt documentation file
# Download the Gel documentation file and place it in your project root
# This allows both the search tool and direct file access for your LLM agent
# curl -o gel_llm.txt https://raw.githubusercontent.com/yourorg/gel-docs/main/gel_llm.txt
# Note: Replace the URL with the actual source of your gel_llm.txt file

在游标中连接MCP服务器

  1. 点击右上角的齿轮图标>MCP>+添加新服务器
  2. 随便你叫什么名字
  3. 选择类型:命令
  4. 输入这个:node-your/full/path/to/build/index.js

注: 虽然此服务器主要使用Cursor的代理进行了测试,但它应该与支持模型上下文协议的其他代理和LLM一起工作。如果您与其他代理商一起测试,请随时贡献您的发现!

可用工具

凝胶数据库MCP服务器提供以下工具:

描述模式

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

何时使用: 当您的代理在查询数据库实体之前需要了解其结构时。

验证查询

这有助于LLM代理在不执行原始EdgeQL查询语法的情况下对其进行验证,从而在对数据库运行生成的查询之前对其进行安全验证。

何时使用: 在查询开发过程中,检查语法而不冒执行副作用的风险。

执行edgeql

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

例子:

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

搜索凝胶文档

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

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

例子:

search_term: "for loop"
context_lines: 10  # Optional: Number of context lines to show (default: 5)
match_all_terms: true  # Optional: Require all terms to match (default: false)

关于文档混合方法的说明: 为了获得最佳效果,我们建议同时使用以下两种方法:

  1. 包括 gel_llm.txt 项目根目录中的文件(用于直接访问文件)
  2. 使用搜索凝胶文档工具进行目标查询

这种混合方法使您的LLM代理能够灵活地搜索特定术语,同时在需要更广泛的背景时访问完整的文档。

执行打字脚本

类似于执行edgeql,但可以将其用于测试和运行使用查询构建器语法进行的Typescript-Gel查询。

指令包含在工具中,但最好询问代理它有什么指令,以便在上下文中加载它们。这确保了它不会跳过它们。

注意:一般的JavaScript语法错误可能会使服务器崩溃,因此,如果连接显示为关闭状态,则必须在Cursor MCP设置中刷新崩溃的服务器或重新启动服务器。

告诉LLM这些是最佳实践:

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

例子:

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

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

了解更多

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