02Bread MCP · 第 6 章
总进度 15 / 33

SQLite MCP server(终章实战)

不用 AI 你得: 1. 打开数据库管理工具 2. 写 SQL SELECT FROM employees WHERE department='工程部' ORDER BY salary DESC LIMIT 1; 3. 拿到他的 ……

2026-09-28约 60 分钟350 行代码难度 ★★★★

如果想获取全套课程资料,请关注微信公众号 「AI面包君」,回复 「课程资料」 即可领取。

1. 从一句问题查到数据库记录

假设要查询示例数据:“工程部工资最高的人是谁,他在做什么项目?”

不用 AI 你得:

  1. 打开数据库管理工具
  2. 写 SQL SELECT * FROM employees WHERE department='工程部' ORDER BY salary DESC LIMIT 1;
  3. 拿到他的 id
  4. 再写 SQL SELECT * FROM projects WHERE owner_id=...;
  5. 整理成中文回答

如果有个 agent + SQLite MCP server,你只用问:

"工程部工资最高的是谁,他在做什么项目?"

agent 自己会:

  1. 调 db_list_tables 看有什么表
  2. 调 db_describe_table 看 employees / projects 结构
  3. 写 SQL 调 db_query
  4. 用中文给你答案

这里把查看表、读取结构和执行查询包装成工具。Agent 可以先了解数据结构,再发出查询,最后把结果整理成回答。整个练习使用课程示例库。

本章我们提供 4 个数据库工具:

工具用途
db_list_tables列出所有表名
db_describe_table(table)看表结构
db_query(sql)SELECT 查询
db_execute(sql)INSERT/UPDATE/DELETE/CREATE

并预置一个示例数据库 demo.db(员工 + 项目两张表)。

<!-- bread-visual:start -->

先看表,再写 SQL,再解释结果

图解: 例子:工程部工资最高的人,正在做什么项目? db_execute 是另一条写入路径;这张图聚焦正文里的只读查询案例。

<!-- bread-visual:end -->

2. 跑起来

cd ch05_sqlite_server
python main.py

第一次启动时 server 会自动建 demo.db 并塞 5 个员工 + 3 个项目作为示例数据。

试这一组对话:

你 > 数据库里有哪些表?
  [step 0] db_list_tables({})
  [step 0] -> employees\nprojects
AI > 数据库里有 2 张表:employees(员工表)和 projects(项目表)。

你 > 工程部工资最高的是谁?
  [step 0] db_describe_table(employees)
  [step 0] -> 列名  类型  非空  默认值  主键 ...
  [step 1] db_query(SELECT name, salary FROM employees WHERE department='工程部' ORDER BY salary DESC LIMIT 1)
  [step 1] -> name salary\n王五  32000.0
AI > 工程部工资最高的是 王五,月薪 32000。

你 > 他在做什么项目?
  [step 0] db_query(SELECT p.* FROM projects p JOIN employees e ON p.owner_id=e.id WHERE e.name='王五')
  [step 0] -> id  name  owner_id  status\n3  数据中台  3  in_progress
AI > 王五负责"数据中台"项目,当前状态是进行中(in_progress)。

关键观察:

  • 第二轮 agent 先看表结构再写 SQL——这是 SYSTEM_PROMPT 引导的好习惯
  • 第三轮 agent 自己写了 JOIN——它从历史对话知道"他"指王五

试读到这里 · 后续内容已封存

关注公众号,继续把这章学完

在「AI面包君」发送关键词「学习AI」拿到口令。验证一次,这个浏览器就能继续阅读全部课程。