关于 Noirlab Datalab
Noirlab Datalab 是用于将 NOIRLab 巡天和全天区天文目录作为数据库表查询的 MCP 服务,面向天文学家和数据分析人员,支持只读 ADQL 查询、表发现及天区坐标搜索。
主要功能
- 01列出架构、表和列
- 02执行只读 ADQL SELECT 查询
- 03搜索天区坐标附近的天体
- 04查询巡天及全天区目录
适用场景
- 01查看可用巡天表及字段
- 02使用 ADQL 获取目录记录
- 03查找天区位置附近的天体
MCP 相关
通过 Pipeworx 或独立 stdio 服务,向 MCP 客户端提供目录发现、查询和锥形搜索工具。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://gateway.pipeworx.io/noirlab-datalab/mcpclaude mcp add --transport http pipeworx-io-noirlab-datalab https://gateway.pipeworx.io/noirlab-datalab/mcp{"mcpServers":{"pipeworx-io-noirlab-datalab":{"type":"http","url":"https://gateway.pipeworx.io/noirlab-datalab/mcp"}}}在 Cursor 中打开{"servers":{"pipeworx-io-noirlab-datalab":{"type":"http","url":"https://gateway.pipeworx.io/noirlab-datalab/mcp"}}}在 VS Code 中打开{"mcpServers":{"pipeworx-io-noirlab-datalab":{"type":"http","url":"https://gateway.pipeworx.io/noirlab-datalab/mcp"}}}{"mcpServers":{"pipeworx-io-noirlab-datalab":{"serverUrl":"https://gateway.pipeworx.io/noirlab-datalab/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
@pipeworx/noirlab-datalab
NSF NOIRLab 的 Astro Data Lab——包含 DECam、Mayall 和 Blanco 巡天目录(Legacy Surveys/DECaLS、DES、DELVE、DECaPS、SMASH、NSC),以及镜像的全天区目录(Gaia DR3、AllWISE、CatWISE、2MASS、SDSS、DESI),可作为数据库表进行查询。约有 130 个架构和数百亿行数据。
属于 Pipeworx 的一部分——一个将 AI Agent 连接到 1683+ 个实时数据源的 MCP 网关。
工具
datalab_tables(schema?, table?, limit?)— 列出巡天数据版本、某个版本的表,或某张表的列。请先调用此工具:表名因巡天项目而异,猜错名称会导致查询错误,而不是返回空结果。datalab_query(sql, limit?)— 执行只读 ADQLSELECT。如果省略TOP n,系统会自动注入,因此裸查询不会无限制扫描十亿行表。datalab_cone_search(table, ra, dec, radius?, columns?, limit?)— 搜索天球位置一定半径内的天体,按距离从近到远排列,并给出精确的角距离(单位为度)。
身份验证
无需密钥——但仅限通过 IVOA TAP 端点。 请参阅下面的第一个陷阱。
数据源
- https://datalab.noirlab.edu/tap/sync —
REQUEST=doQuery&LANG=ADQL&FORMAT=csv&QUERY=…。匿名访问,也是此工具包唯一使用的入口。
陷阱
/query/query?sql=并不支持匿名访问,尽管它是文档中提到的主要入口。datalabPython 客户端使用的就是这个接口,文档也首先介绍了它,但未登录时会返回401 The provided security token is invalid;而广泛流传的X-DL-AuthToken: anonymous.0.0.anon_access会返回 HTTP 200,响应正文却是Error in query(). Try checking that you are logged in.。带有失败信息的 200 响应是最糟糕的失败形式,这就是此工具包只使用 TAP 的原因。测量于 2026-09-17。- TAP 将所有错误都报告为 HTTP 200。 语法错误、未知表、超时:所有情况都会返回 200,并附带一个 VOTable,其中只有一个
INFO元素包含QUERY_STATUS="ERROR"。如果将其当作数据读取,就会得到空结果集。每个响应在解析前都会检查此元素。 - ADQL 几何功能尚未实现,Q3C 也不可用。
CONTAINS(POINT('ICRS',ra,dec), CIRCLE('ICRS',…))可以通过解析,并原样传给 PostgreSQL,随后会返回function circle(numeric, numeric, numeric) does not exist。后端实际支持的 Q3C 函数(q3c_radial_query)则会在上一层被 ADQL 解析器拒绝。因此,两种显而易见的锥形搜索写法都会失败。datalab_cone_search使用两层都能接受的三角函数来构建搜索:先使用可通过索引检索的赤经/赤纬范围框(赤经范围按1/cos(dec)扩大,并在 0h 处环绕)缩小扫描范围,再计算精确的大圆距离,剔除范围框的角落并按真实距离排序。 - 行数限制使用
SELECT TOP n,而不是LIMIT n。 这是 ADQL,不是 PostgreSQL。 - 零行通常表示覆盖范围不足,而不是目标不存在。 DECam 巡天覆盖南天区,并有选择地覆盖银道面,因此北天目标在
ls_dr10或des_dr2中合法地查不到结果。零结果提示建议对照全天区目录gaia_dr3.gaia_source再次检查。
快速开始
将其添加到你的 MCP 客户端(Claude Desktop、Cursor、Windsurf 等):
{
"mcpServers": {
"noirlab-datalab": {
"url": "https://gateway.pipeworx.io/noirlab-datalab/mcp"
}
}
}
此端点实际提供的内容
tools/list 在 https://gateway.pipeworx.io/noirlab-datalab/mcp 返回上表中的工具,以及 Pipeworx 共享元工具——ask_pipeworx、discover_tools、search_within、remember/recall,以及网关范围内的其他工具。因此,你看到的工具数量会多于此表:目前,单个工具包端点除了列出该工具包自身的工具,还会列出大约 30 个共享工具。连接的 initialize 响应会说明确切范围,并且是当天情况的权威答案。
这是有意为之,并非意外复用多路连接。元工具能让范围受限的连接回答该工具包未涵盖的问题——通过 ask_pipeworx 跨整个目录路由——因此你无需添加第二个 MCP 服务。目前无法挂载不包含这些元工具的工具包端点;如果额外的 schema 消耗的上下文超过了路由带来的价值,不如只连接一次完整网关,而不是连接多个工具包端点。
或者连接完整的 Pipeworx 网关,直接列出所有工具包的工具,而不只是此工具包的工具:
{
"mcpServers": {
"pipeworx": {
"url": "https://gateway.pipeworx.io/mcp"
}
}
}
两个 URL 都连接到同一个网关和相同的 1683+ 个数据源。唯一的区别是直接列出哪些工具包的工具;从任一端点都可以通过 ask_pipeworx 访问所有工具包。
没有 MCP 客户端?通过 HTTP 调用
curl -X POST https://gateway.pipeworx.io/v1/tools/datalab_query \
-H 'Content-Type: application/json' \
-d '{"sql":"SELECT ra, dec, phot_g_mean_mag FROM gaia_dr3.gaia_source WHERE phot_g_mean_mag < 6","limit":5}'
首次调用无需账号。检查任意工具:GET https://gateway.pipeworx.io/v1/tools/datalab_query。查找工具:使用 {"query":"..."} 向 https://gateway.pipeworx.io/v1/tools/search_packs 发送 POST 请求。
独立运行(无需网关账号)
此软件包也可以作为本地 stdio MCP 服务运行——无需 Pipeworx 账号,也无需往返网关:
{
"mcpServers": {
"noirlab-datalab": {
"command": "npx",
"args": ["-y", "@pipeworx/mcp-noirlab-datalab"]
}
}
}
或者直接运行它,确认服务能够启动:
npx -y @pipeworx/mcp-noirlab-datalab
它通过 stdin/stdout 使用 MCP 通信,并为仅此工具包的工具响应 initialize/tools/list/tools/call——不包含上述网关连接额外提供的任何共享元工具。相同的源代码、相同的工具,但不支持 ask_pipeworx 路由。
使用 ask_pipeworx
你可以用通俗的英语提问,而不是直接调用工具——这既适用于上面的工具包端点,也适用于完整网关:
ask_pipeworx({ question: "your question about Noirlab Datalab data" })
网关会自动选择合适的工具并填写参数。
更多内容
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。