mcpField
N
Noirlab Datalab

Noirlab Datalab

远程服务
pipeworx.io科研与教育01 天前更新

关于 Noirlab Datalab

Noirlab Datalab 是用于将 NOIRLab 巡天和全天区天文目录作为数据库表查询的 MCP 服务,面向天文学家和数据分析人员,支持只读 ADQL 查询、表发现及天区坐标搜索。

主要功能

  1. 01列出架构、表和列
  2. 02执行只读 ADQL SELECT 查询
  3. 03搜索天区坐标附近的天体
  4. 04查询巡天及全天区目录

适用场景

  1. 01查看可用巡天表及字段
  2. 02使用 ADQL 获取目录记录
  3. 03查找天区位置附近的天体

MCP 相关

通过 Pipeworx 或独立 stdio 服务,向 MCP 客户端提供目录发现、查询和锥形搜索工具。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://gateway.pipeworx.io/noirlab-datalab/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;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?) — 执行只读 ADQL SELECT。如果省略 TOP n,系统会自动注入,因此裸查询不会无限制扫描十亿行表。
  • datalab_cone_search(table, ra, dec, radius?, columns?, limit?) — 搜索天球位置一定半径内的天体,按距离从近到远排列,并给出精确的角距离(单位为度)。

身份验证

无需密钥——但仅限通过 IVOA TAP 端点。 请参阅下面的第一个陷阱。

数据源

陷阱

  • /query/query?sql= 并不支持匿名访问,尽管它是文档中提到的主要入口。 datalab Python 客户端使用的就是这个接口,文档也首先介绍了它,但未登录时会返回 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

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。