Atlas / MCP servers / pipeworx-io / mcp-noirlab-datalab

mcp-noirlab-datalabSAFE

mcp/pipeworx-io/mcp-noirlab-datalab

NOIRLab Astro Data Lab — datalab.noirlab.edu.

Verdict
SAFE
Grade
B
Trust score
89 /100
Exposed tools
3 2r · 1w · 0d
Transport
stdio · streamable-http
License
MIT
Stars
0
01

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 ADQL SELECT. A TOP n is 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

Read from source at commit 5f677195760bOBSERVED · 2026-10-11
02

Connect

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-code
claude mcp add mcp-noirlab-datalab -- npx -y @pipeworx/[email protected]
claude-desktop
{
  "mcpServers": {
    "mcp-noirlab-datalab": {
      "command": "npx",
      "args": [
        "-y",
        "@pipeworx/[email protected]"
      ]
    }
  }
}
03

Exposed tools (3)

2 read · 1 write · 0 destructive.

ToolRiskDescription
datalab_cone_searchreadFind catalogue sources within a radius of a sky position, in any NOIRLab Data Lab table —
datalab_querywriteRun an ADQL (SQL) query against NSF NOIRLab Astro Data Lab — the DECam, Mayall and Blanco
datalab_tablesreadList the schemas and tables available in NOIRLab Astro Data Lab, with each table\
04

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.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codePASS
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (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)

LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
@modelcontextprotocol/sdk, tsx, typescript, @cloudflare/workers-types
Why it matters. 4 dependency range(s) float
Fix. pin exact versions or ship a lockfile

Gates applied: no_behavioural_pass.

Audited 2026-10-11 · audit v0.4.1 · source sha 5f677195760bfull audit observations/trust-audit/mcp-server/pipeworx-io__mcp-noirlab-datalab.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-115f677195760bSAFEB89first audit
06

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.

Advertisement