你是否曾经想将 GitHub 上的议题、Notion 数据库中的任务、以及 Chrome 浏览记录放在一起做关联分析?或者你希望让 AI 助手能够直接查询你本地 Apple Notes 中的私人笔记,并基于这些信息回答你的问题?
传统的数据库只能查询结构化数据,而 AI 的上下文窗口又有限。anyquery 正是为了解决这个“数据孤岛”问题而诞生的。它是一个 SQL 查询引擎,让你能够用标准的 SQL 语句查询各种文件、数据库和应用程序的数据——从 GitHub、Notion、Google Sheets、到浏览器历史、邮件、甚至是 Spotify 播放列表。更重要的是,它可以通过模型上下文协议直接连接到 LLM,让 AI 助手无缝访问你的所有数据。
项目基本信息
| 信息项 | 详情 |
|---|---|
| 项目名称 | anyquery |
| GitHub地址 | https://github.com/julien040/anyquery |
| 项目描述 | Query anything (GitHub, Notion, +40 more) with SQL and let LLMs (ChatGPT, Claude) connect to using MCP |
| 作者 | julien040 |
| 开源协议 | Other (AGPLv3 核心/MIT RPC) |
| 开源状态 | 公开状态 |
| Languages | Go, Yacc, Astro, MDX, Shell, JavaScript |
| 支持平台 | Windows / macOS / Linux / Web |
| 最后更新 | 2026-04-26 |
一、项目介绍
anyquery 是一个基于 Go 语言编写的通用 SQL 查询引擎。它内置了超过 40 个数据源插件,可以在 SQLite 引擎之上,将外部数据源虚拟成一个个数据库表,然后用标准的 SQL 进行查询。
这个项目的核心理念是“统一数据访问层”。无论你的数据是存储在 JSON 文件中,还是在 GitHub API 后面,还是在 Notion 的复杂数据库中,anyquery 都能将其映射为简单的二维表结构。
anyquery 提供三种主要的访问模式:
- 命令行工具:直接在终端运行
anyquery进入 SQL shell,像操作数据库一样查询数据。 - MySQL 服务器:运行
anyquery server,然后可以用任何 MySQL 客户端连接它,方便数据可视化和集成。 - MCP 服务器:通过
anyquery mcp启动一个 MCP 服务器,让支持 MCP 的 LLM 客户端(如 Claude Desktop、Cursor)能够直接查询你的数据。
二、核心优势
超过 40 个即插即用的数据源
anyquery 支持非常广泛的数据源,包括 GitHub、Notion、Google Sheets、Airtable、Spotify、Salesforce、Apple Notes、Chrome 浏览记录、邮件等。你无需编写任何 ETL 代码,即可开始查询。
强大的 SQL 查询能力(内置 SQLite)
anyquery 构建在 SQLite 之上,因此你可以使用完整的 SQLite SQL 方言,包括 joins、聚合函数、窗口函数、CTE 等。你可以关联来自不同数据源的表,例如关联 GitHub issues 和 Notion 任务表。
原生支持关系图
anyquery 能够自动推断表之间的关系(外键),并通过 PRAGMA foreign_key_list 等 SQLite 内省机制暴露出来。连接的 LLM 可以利用这些信息来生成更准确的查询。
无缝的 MCP 集成
通过 anyquery mcp 命令,可以启动一个 MCP 服务器。LLM 客户端连接后,可以调用 MCP 的 query 工具来执行任意的 SQL 查询,从而获得“实时感知”你的本地数据的能力。
多协议支持,灵活部署
除了 MCP,anyquery 还以原生方式支持 OpenAI 的函数调用,并可以作为 MySQL 服务器运行。你可以根据客户端类型选择最合适的接入方式。
三、适用场景
为 LLM 构建私有数据检索层
你可以让 Claude 直接查询你的 Notion 数据库,回答“我的 Q3 目标完成了多少?”或者“列出本周需要审阅的所有设计文档。”
数据分析和 ETL
使用 SQL 分析你的 Spotify 听歌历史,找出“过去一个月内播放次数最多的前 10 首歌”或 GitHub 仓库的议题关闭率。
产品经理的数据仪表盘
如果你发现 PM 工具(如 Linear、Asana)和维基(Notion)数据是割裂的,可以用 anyquery 将它们 join 到一起,然后用 Metabase 等 BI 工具连接 anyquery 的 MySQL 端口,构建统一仪表盘。
自动化脚本
在你的 shell 脚本中,直接运行 anyquery "SELECT title FROM github_issues WHERE state='open'",将结果传递给下一个程序,无需编写任何 Python 或 JavaScript 代码。
学习 SQL 的实践平台
由于 anyquery 可以连接你日常使用的应用,你可以用自己喜欢的真实数据来练习 SQL,这比使用示例数据库有趣得多。
四、安装教程
anyquery 支持多种操作系统和包管理器。以下介绍最常用的几种安装方式。
使用 Homebrew(macOS / Linux)
brew install anyquery使用 APT(Debian / Ubuntu)
echo "deb [trusted=yes] https://apt.julienc.me/ /" | sudo tee /etc/apt/sources.list.d/anyquery.list
sudo apt update
sudo apt install anyquery使用 Scoop(Windows)
scoop bucket add anyquery https://github.com/julien040/anyquery-scoop
scoop install anyquery使用 Winget(Windows)
winget install JulienCagniart.anyquery验证安装
安装完成后,在终端中运行 anyquery --version,应该会输出版本信息。
快速测试 MCP 功能
通过 MCP 客户端连接到 anyquery 之前,你可以先启动 MCP 服务器,并用 MCP Inspector 测试:
anyquery mcp --stdio打开另一个终端,运行 MCP Inspector:
npx @modelcontextprotocol/inspector在 Inspector 中连接到 anyquery mcp --stdio。
五、使用示例
示例1:在 Claude Desktop 中配置 anyquery
编辑 Claude Desktop 的配置文件(macOS: ~/Library/Application Support/Claude/claude_desktop_config.json;Windows: %AppData%\Claude\claude_desktop_config.json),添加以下内容:
{
"mcpServers": {
"anyquery": {
"command": "anyquery",
"args": ["mcp", "--stdio"]
}
}
}重启 Claude Desktop。现在,你可以开始对话了。
示例2:查询 CSV 文件
假设你有一个名为 sales.csv 的文件,包含 date, product, amount 三列。在 Claude 中,你可以输入:
用户输入:请计算一下 sales.csv 中 product 为 'laptop' 的销售总额。
Claude 会通过 anyquery 执行类似 SELECT SUM(amount) FROM sales WHERE product='laptop' 的查询,然后返回结果。
示例3:查询 GitHub 议题
当你被授予访问权限后,你可以让 Claude:
用户输入:列出我的 GitHub 仓库 'my-open-source-project' 中所有由用户 'alice' 创建的未关闭议题。
示例4:关联不同数据源
假设你有一个 Notion 数据库记录了客户信息,还有一个 SQLite 数据库记录了订单。你可以让 Claude:
用户输入:关联 Notion 中的 customers 表和 SQLite 中的 orders 表,找出过去 30 天没有下过订单的客户。
示例5:通过 MySQL 协议使用 BI 工具
在终端中启动 anyquery 的 MySQL 服务器:
anyquery server &然后,使用任何 MySQL 客户端(例如 TablePlus、DataGrip、Metabase)连接:
mysql -u root -h 127.0.0.1 -P 8070连接后,执行 SHOW TABLES; 你会看到所有可用的数据源表。
六、常见问题
问题1:anyquery 支持哪些数据源?
解决方案:目前官方文档列出超过 40 种,包括但不限于:GitHub、Notion、Google Sheets、Airtable、Spotify、Salesforce、Jira、Linear、Asana、Todoist、Apple Notes、Chrome 书签/历史、Firefox 历史、CSV、JSON、Parquet、SQLite、MySQL、PostgreSQL 等。你可以通过 anyquery plugin list 查看已安装的插件,或访问官网查阅完整列表。
问题2:anyquery 与直接使用 SQLite 的区别是什么?
解决方案:SQLite 只能查询本地文件格式(如 .db 文件)。anyquery 是一个“联邦查询引擎”,它把外部 API、网页应用、云服务、甚至二进制文件(如 Apple Notes)都动态转换为 SQLite 的虚拟表。你是在用 SQL 查询这些实时数据源,而不是导入后的静态副本。
问题3:anyquery 的 MCP 服务器与专门的 MCP 服务器(如 notion-mcp-server)有何不同?
解决方案:专业的 MCP 服务器通常为特定数据源提供了高度定制化的工具。而 anyquery 提供了一个泛用工具:query。你可以通过写 SQL 来实现任何操作。如果你有很强的 SQL 能力,这会更灵活;如果你希望开箱即用的特定功能(如“创建页面”),专用 MCP 可能更合适。
问题4:我第一次连接某个数据源时,anyquery 提示需要认证。
解决方案:anyquery 会通过 OAuth 或 API 密钥等方式引导你完成认证。例如,第一次查询 GitHub 时,它可能会打开浏览器让你登录授权。授权后,anyquery 会安全地缓存令牌,后续查询无需重复认证。
问题5:为什么我查询某些 API 很慢?
解决方案:anyquery 的查询速度受限于底层 API 的速率限制和响应时间。为了避免超时,可以在查询中使用 LIMIT 子句,或者对经常查询的字段创建“虚拟索引”。anyquery 会尽量利用 API 的过滤和分页能力来优化查询。
七、总结
anyquery 是一个雄心勃勃且执行出色的开源项目。它用 1.7k 星证明了其价值,也证明了“用 SQL 统一访问所有数据”这个理念的强大吸引力。
对于 MCP 生态而言,anyquery 提供了一种“元能力”:与其为每个数据源编写和维护一个独立的 MCP 服务器,不如构建一个强大的 SQL 查询引擎,并通过单一的 query 工具将其暴露给 AI。这极大地降低了“让 AI 访问新数据源”的边际成本。
anyquery 的核心优势在于:
- 广度:支持超过 40 个数据源,并且还在不断增加。
- 深度:支持标准 SQL,可以执行复杂的关联查询。
- 开源:核心引擎使用 AGPLv3,但 RPC 库和插件使用 MIT 许可证,兼顾了开放性与商业友好。
无论你是希望让 AI 助手深度理解你的个人数据,还是需要统一团队的 BI 数据访问层,anyquery 都为你提供了一把功能强大的瑞士军刀。
The performance is good for API sources. GitHub queries are fast.
The documentation is excellent. Each plugin has its own guide.
Can it join a CSV file with a Google Sheet? Yes, and it works.
The `anyquery` shell has autocomplete. Very user-friendly.
I'm a Go developer. The codebase is clean and well structured.