mcp-noirlab-datalabSAFE
NOIRLab Astro Data Lab — datalab.noirlab.edu.
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
NSF NOIRLab's Astro Data Lab — the DECam, Mayall and Blanco survey catalogues (Legacy Surveys/DECaLS, DES, DELVE, DECaPS, SMASH, NSC) alongside mirrored all-sky catalogues (Gaia DR3, AllWISE, CatWISE, 2MASS, SDSS, DESI), queryable as database tables. Around 130 schemas and tens of billions of rows.
Part of Pipeworx — an MCP gateway connecting AI agents to 1683+ live data sources.
Tools
datalab_tables(schema?, table?, limit?)— list the survey data releases, one release's tables,
or one table's columns. Call it first: table names are survey-specific and a guessed name is a query error, not an empty result.
datalab_query(sql, limit?)— run a read-only ADQLSELECT. ATOP nis injected when you omit
one, so a bare query cannot scan a billion-row table unbounded.
datalab_cone_search(table, ra, dec, radius?, columns?, limit?)— sources within a radius of a
sky position, nearest first, with exact angular separation in degrees.
Auth
Keyless — but only through the IVOA TAP endpoint. See the first trap below.
Data sources
- —
REQUEST=doQuery&LANG=ADQL&FORMAT=csv&QUERY=....
Anonymous, and the only door this pack uses.
Traps
- `/query/query?sql=` is NOT anonymous, despite being the documented front door. It is what the
datalab Python client uses and what the docs lead with, but without a login it answers 401 The provided security token is invalid — and the widely-quoted X-DL-AuthToken: anonymous.0.0.anon_access answers HTTP 200 with the body Error in query(). Try checking that you are logged in. A 200 carrying a failure is the worst shape a failure can take, and it is why this pack speaks TAP only. Measured 2026-09-17.
- TAP reports every error as HTTP 200. Syntax errors, unknown tables, timeouts: all come back
200 with a VOTable whose single INFO element carries QUERY_STATUS="ERROR". Read as data t
5f677195760bOBSERVED · 2026-10-11Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control.
claude mcp add mcp-noirlab-datalab -- npx -y @pipeworx/[email protected]
{
"mcpServers": {
"mcp-noirlab-datalab": {
"command": "npx",
"args": [
"-y",
"@pipeworx/[email protected]"
]
}
}
}Exposed tools (3)
2 read · 1 write · 0 destructive.
| Tool | Risk | Description |
|---|---|---|
datalab_cone_search | read | Find catalogue sources within a radius of a sky position, in any NOIRLab Data Lab table — |
datalab_query | write | Run an ADQL (SQL) query against NSF NOIRLab Astro Data Lab — the DECam, Mayall and Blanco |
datalab_tables | read | List the schemas and tables available in NOIRLab Astro Data Lab, with each table\ |
Trust audit
SAFEgrade B · trust 89/100 Nothing in the source contradicts what it says it does. Grade A is reserved for packages that have also passed the behavioural sandbox.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | PASS |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- none-observed
- Network
- declared (1 observation(s))
- Shell
- none-observed
- Dependencies
- not all pinned
- Secrets in source
- none-found
Findings (1)
@modelcontextprotocol/sdk, tsx, typescript, @cloudflare/workers-types
Gates applied: no_behavioural_pass.
5f677195760bfull audit observations/trust-audit/mcp-server/pipeworx-io__mcp-noirlab-datalab.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-11 | 5f677195760b | SAFE | B | 89 | first audit |
Questions
What is the mcp-noirlab-datalab MCP server?
NOIRLab Astro Data Lab — datalab.noirlab.edu.
What tools does mcp-noirlab-datalab expose?
3 in total: 2 read-only, 1 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.
Is mcp-noirlab-datalab safe to connect to an agent?
The audit found nothing in the source that contradicts what it says it does, and graded it B (89/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean server reads B.
What credentials does mcp-noirlab-datalab need?
No credential environment variables were found in its source, so it appears to need none.
How does mcp-noirlab-datalab run?
It speaks stdio and streamable-http, so it runs as a local process your client starts. It is published on npm as @pipeworx/mcp-noirlab-datalab at 0.1.1.
How current is this page?
The grade is for one exact copy of the source (5f677195760b), read on 2026-10-11. The repository is watched and re-audited when it changes.