自然语言数据库代理

一款基于Model Context Protocol (MCP)的自主数据库管理代理,允许用户通过自然语言与SQLite数据库交互,无需编写SQL即可执行复杂操作如模式发现、数据录入和条件更新。

  • by OmerTurk1
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 OmerTurk1/Database-Agent-with-MCP

使用说明

带MCP的数据库代理

该项目是一个由模型上下文协议(MCP)支持的自治数据库管理代理。它允许用户使用自然语言与SQLite数据库交互,实现模式发现、数据输入和条件更新等复杂操作,而无需编写一行SQL。 下面是您项目的结构化README.md。

🤖 MCP SQLite数据库管理器

一个智能数据库助手,弥合了自然语言和SQL之间的差距。该代理使用谷歌的模型上下文协议(MCP)和OpenAI的GPT-4o-mini构建,可以自主探索、查询和修改SQLite数据库。

🌟 特性

  • 自然语言到SQL:自动将会话请求转换为有效的SQLite查询。
  • 自主工具使用:代理智能地决定何时列出表、检查模式或执行数据操作。
  • ReAct逻辑循环:支持多步骤推理。如果用户要求“添加随机行”,代理将首先检查模式,然后构造并执行相应的INSERT语句。
  • 情境意识:记住之前的互动,以回答后续问题,如“另一张桌子呢?”。
  • 动态模式修改:支持结构更改,例如添加新列并根据业务逻辑为其计算值。

🏗️ 项目结构

  • runner.py:主要入口点。它管理MCP客户端会话和LLM通信环路。
  • server.py:通过FastMCP框架向LLM公开数据库工具的MCP服务器。
  • /workspace:MCP代理的沙盒。它只能对这个领域产生影响。
  • client.py:OpenAI API的包装器,用于处理聊天完成。

🚀 入门指南

先决条件

  • Python 3.10+
  • OpenAI API密钥

安装

安装所需的依赖项:

pip install mcp openai anyio

将您的OpenAI API密钥设置为环境变量:

export OPENAI_API_KEY='your-key-here'

运行代理

只需运行runner脚本:

python runner.py

🛠️ 可用工具

以下工具通过MCP服务器暴露给LLM:

  • list_database_tables:返回数据库中所有表的列表。
  • get_table_schema:为特定表提供列名和数据类型。
  • execute_query:执行LLM生成的原始SQL命令并返回结果。

📊 示例用法

基于项目日志,代理可以处理复杂的工作流:

  • 探索:“显示表格”。
  • 数据生成:“向学生表中添加10个随机但合乎逻辑的行”。
    • 代理操作:调用get_table_schema来理解列,然后执行_query来插入数据。
  • 逻辑运算:“标记比B差的人”。
  • 结构更新:“创建一个新列并将该信息添加到其中。我想看看谁通过了,谁没有通过”。
    • 代理操作:添加一个状态列,并根据成绩列将其更新为“通过”或“未通过”。