AI数据查询对比工具

一个实验性项目,通过MCP服务器和CLI工具两种方式对比AI代理在结构化数据查询中的表现。

  • by gabrewer
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 gabrewer/cassini-mcp

使用说明

卡西尼MCP vs CLI——人工智能接地实验

问题: 为AI代理提供结构化的MCP服务器是否比让它直接通过CLI工具查询SQLite数据库产生更好的答案?这个仓库是测试台。

这 卡西尼-惠更斯任务 在土星系统周围进行了13年精心策划的观测。它的总体规划——数万次预定观测——现在是一个SQLite数据库。它足够丰富、真实和领域特定,以至于模型无法通过它来伪造。这使它成为比较两种将人工智能代理置于结构化数据中的方法的理想主题。


此回购中有什么

Path 它是什么
cassini.db 卡西尼号任务数据的SQLite数据库
mcp/ MCP服务器将卡西尼数据作为工具公开
cli/ 用于直接查询卡西尼数据的CLI工具
loop/ The agentloop 构建此项目的编排器
prd.json 推动构建的产品需求
.claude/agents/ 代理定义(测试编写者、构建者、审阅者等)

数据集: cassini.db

两张桌子。所有真实数据。

master_plan --61873行

卡西尼号轨道之旅期间计划的每一次观测,从2005年4月到2016年9月15日的大结局。

列 说明
id 自动递增主键
start_time_utc 观察开始时间
duration 观察时长(格式: DDDThh:mm:ss)
date 日历日期(例如。 15-Jan-05)
team 仪器团队(CIRS、UVIS、ISS、VIMS、INMS等)
spass_type 观测子类型分类
target 目标天体(土星、土卫六、土卫二、光环等)
request_name 短内部标识符
title 人类可读的观察标题
description 完整的科学描述

按观察次数排列的首要目标: 土星(16958)、土卫六(9503)、环(5808)、土卫二(1626)、土卫五(964)、土卫四(780)、土卫八(682)。

顶尖乐器团队: CIRS(11969),UVIS(9208),ISS(8989),VIMS(6376),INMS(4747)。

planets --6排

卡西尼号访问的土星系统天体的参考数据。

列 说明
name 天体名称(土星、土卫六、土卫二、土卫八、土卫五、土卫一)
type planet 或 moon
parent_body 母体(土星代表所有卫星)
radius_km 平均半径(单位:千米)
mass_kg 质量(千克)
orbital_period_days 轨道周期
discoverer 谁发现的
discovered_date 发现日期
notes 显著特征

设置

先决条件

  • 包子 ≥ 1.0
  • 克劳德桌面版 (适用于MCP)或任何兼容MCP的客户端
  • 这 cassini.db 文件(包含在此仓库中)

MCP服务器

MCP服务器将卡西尼数据作为AI代理在对话中可以调用的可调用工具公开。

cd mcp
bun install
bun run dev          # development mode with --watch
bun run build        # compile to dist/cassini-mcp

在克劳德桌面注册(~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "cassini": {
      "command": "bun",
      "args": ["run", "/path/to/session-7/mcp/src/index.ts"]
    }
  }
}

重新启动克劳德桌面。卡西尼工具将出现在工具选择器中。

CLI工具

CLI工具允许模型(或人类)直接从命令行查询数据库。

cd cli
bun install
bun run dev --help   # see available commands
bun run build        # compile to dist/cassini-cli

基本用法:

# Ask a question in plain language
./cassini-cli ask "How many times did Cassini observe Enceladus?"

# Query a specific target
./cassini-cli target enceladus --limit 10

# Summarise a moon
./cassini-cli moon titan

示例问题

这些问题可以从实际数据中回答 cassini.db。对这两种实现进行尝试。

1.有多少观测以土卫二为目标,由哪个仪器小组领导?

土卫二在年出现1626次 master_plan.知道哪些团队占主导地位,以及观察结果的名称,告诉你每次飞越的科学重点。

2.卡西尼号在总决赛前一周观测到了什么?

任务于2016年9月15日结束。这 master_plan 记录一直持续到那个日期。在最后几天会出现什么目标、持续时间和团队?

3.哪颗卫星的观测次数最多,与它的半径相比如何?

泰坦(9503次观测,半径2574公里)与土卫二(1626次观测,直径252公里)。这 planets 表格提供了身体统计数据; master_plan 供应计数。

4.哪个仪器团队的观察时间最长,他们的主要目标是什么?

CIRS以11969次预定观测领先。归纳 duration 并按以下方式分组 team 和 target 展示了科学时间是如何分配的。

5.将乔瓦尼·卡西尼发现的卫星与威廉·赫歇尔发现的卫星进行比较——它们的观测计数是什么样子的?

土卫八和土卫五(均为卡西尼,1671-1672)与土卫二和土卫二(均为赫歇尔,1789)。十字 planets.discoverer 随着 master_plan 目标计数。


如何比较

目标不是对原始查询速度进行基准测试,而是了解界面如何影响人工智能推理的质量。

观察内容

维度 MCP CLI
工具透明度 代理显式调用命名工具;您可以看到每次调用 代理都会写入和运行SQL;意图不太明显
错误处理 工具架构在执行前强制执行有效输入 运行时出现SQL错误
后续问题 Agent可以在一个回合内链接工具调用 每个问题都可能需要一个新的调用
快速工程 工具说明指导代理 系统提示和示例完成工作
幻觉表面 受工具输出约束 受查询结果约束

建议的工作流程

  1. 从上述五个示例问题中选择一个。
  2. 在MCP服务器处于活动状态时,在Claude Desktop中询问。注意所调用的工具、中间步骤和最终答案。
  3. 通过CLI工具运行相同的问题(或要求模型使用CLI)。注意生成的SQL和答案。
  4. 比较:哪个答案更准确?哪条路更透明?哪种错误更容易纠正?

没有正确的答案——实验才是关键。


关于 agentloop

该项目由 agentloop,一个轻量级的Claude驱动的构建编排器,生活在 loop/ 目录。上面写着 prd.json,启动专业代理(测试编写者、后端构建者、代码审查者、git提交者),并驱动他们完成审查周期,直到工作交付。您正在阅读的README是由后端构建器代理在第一个sprint期间编写的。

看 ORCHESTRATION.md 管道的工作原理,以及 .claude/agents/ 对于代理定义。


进一步阅读