认识神级MCP工具系列--用anyquery和数据库交互
# 附言前置
写完如下内容之后,我心里盘算着测试一下 MySQL 的交互能力,结果发现这个工具和 MySQL 的交互并不是很理想,至少我个人测试一个简单的查询都要花将近两分钟的时间(详见 60 (opens new window)),因此这并不是一个很适合全场景的数据库交互 mcp 工具(虽然 sqlite 交互上没有问题),请读者注意。
后续我还会探索其他更为合适数据库交互场景的 mcp 工具。文章已经写了,并且花费了我不少时间,虽然工具不算特别完美,但实践过程和思路,也还算有一些了解和学习的价值。
# 前言
我对 MCP 的了解很浅,这个系列也只是个人基于日常一些开发场景中的探索,如有错漏,还望见谅。
MCP 的概念我就不在过多赘述,相信点进此文的你,应该早已有所耳闻,其中概念虽算不上复杂,但是单独看一些架构图或者概念,也并不容易理解它存在的意义是什么,莫不如直接基于场景,利用工具,来了解 MCP 的概念。
# 介绍
背景:我们在与大模型对话或者通过 Claude Code 编程的时候,有一个特别明显的感受是,直接把数据给到模型,和让模型依靠经验猜数据而进行的编码,两者差异巨大,模型拿到的数据越具体,进行的编码就越准确。于是,如何解决让模型方便地拿到数据就成了开发过程中重要的一个环节。
今天要介绍的工具,就是为了解决这个场景应运而生的,官网的介绍,号称可以通过 SQL 的语法查询一切,除了支持 MySQL,Sqlite,PG,ClickHouse 等数据库之外,还支持 GitHub,Notion 等各种三方数据,同时还支持基于插件扩展的任何三方数据源。
一些信息:
- 项目官网: https://anyquery.dev (opens new window)
- 项目地址: https://github.com/julien040/anyquery (opens new window)
单听介绍,不可谓不强大,但是官方文档写的比较难读,今天我来通过一些实际例子来带你感受一下这个工具的魅力。
# 安装
anyquery 基于 go 语言编写,因此安装从来不会是困难的事情,并且官方提供了各个平台轻松安装的方案,实在不想用,也可以在 release (opens new window) 页面下载二进制运行。
这里简单介绍几种常见的安装场景。
# Mac
brew install anyquery
# APT
echo "deb [trusted=yes] https://apt.julienc.me/ /" | sudo tee /etc/apt/sources.list.d/anyquery.list
sudo apt update
sudo apt install anyquery
2
3
# YUM/DNF
echo "[anyquery]
name=Anyquery
baseurl=https://yum.julienc.me/
enabled=1
gpgcheck=0" | sudo tee /etc/yum.repos.d/anyquery.repo
sudo dnf install anyquery
2
3
4
5
6
# 使用
# 作为一个查询工具
首先,你可以把 anyquery 理解成一个全能的数据库查询客户端。
接下来仅针对 sqlite 做一下演示,它的功能强项不在这里,因此仅作为一个简单介绍。
比如我有项目基于 sqlite 做存储,文件地址是:/Users/eryajf/code/cnb/xirang/data/xirang.db
# 作为一个 MCP 工具
这里才是这个工具的重头戏,可以作为 MCP 工具,让你在与大模型交互的时候,轻松操作你的数据。
如果要交互的数据库是 sqlite,则可通过如下命令启动 mcp server:
anyquery mcp --database /Users/eryajf/code/cnb/xirang/data/xirang.db --stdio
通过如下配置,可以将如上数据库启动为 mcp server 监听:
我这里用 Cherry Studio 来举例,打开 MCP,选择添加服务,上图重要的几个配置项均已标号,其中 3 号和 4 号的配置内容,则是 anyquery 提供的 mcp 能力。
我这里用 gemini 来进行对话演示。
比如可以问有哪些表,模型回答如下:
需要注意:在对话之前,需要在底下工具栏中 MCP 处选上刚刚添加的 mcp 服务。然后直接对话,这个时候模型会自动通过调用 mcp 工具,来查询数据。
接下来再看一个查询具体数据的例子,也是可以直接查询出对应数据的。
我们看到上图中,赵六的邮箱是 zhaoliu@eryajf.net
,接下来让模型改一下这条数据试试:
改完之后,我们还是通过模型对话来查一下这条数据:
可以看到,赵六的邮箱已经更改成功了,可见,借助 anyquery 这个工具,我们就可以通过自然语言来对数据库进行增删改查,这个时候你可能会问权限怎么控制,这的确是个好问题,但不在此文讨论范围。
上边是基于 Cherry Studio 做的测试,接下来再来通过 Claude Code 做一下测试,同时也是一个实践,你可以把这个经验,集成到你的项目开发当中。
cc 支持通过命令来配置 mcp,可通过如下命令添加:
claude mcp add xirang-db anyquery -- mcp --database /Users/eryajf/code/cnb/xirang/data/xirang.db --stdio
具体详细文档,可见 cc 的官方文档:通过 MCP 将 Claude Code 连接到工具 (opens new window)
有的人可能习惯通过配置文件来管理 cc 的 mcp 配置,你也可以把如下配置添加上去:
"mcpServers": {
"xirang-db": {
"type": "stdio",
"command": "anyquery",
"args": [
"mcp",
"--database",
"/Users/eryajf/code/cnb/xirang/data/xirang.db",
"--stdio"
],
"env": {}
}
}
2
3
4
5
6
7
8
9
10
11
12
13
然后启动 claude code cli,启动后键入 /mcp
可以查看到刚刚添加的 mcp:
然后来做一些交互看看:
照例,再来测一下修改数据的场景:
最后,我通过工具查看一下赵六这条数据,可以看到已经被成功修改了:
# 最后
今天,通过两个实际应用案例,真切感受并体会了拥有 MCP 之后的大模型就是插上翅膀的猛虎这句话,包括之前只听到说一句话就让手机点了咖啡这个事儿,但真正背后如何实现的,并不太了解。
但通过这个例子,我感受到了 MCP 的魅力,同时也感受到,AI 编码借助于 MCP,一定会更加高效,并且精准。


- 01
- 带你认识我之看看我的高中同学录(其一)08-24
- 02
- 学习周刊-总第225期-2025年第34周08-21