Hepdata Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Hepdata Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
This is an MCP server for discovering HEPData records, listing tables, fetching table data, and exposing HEPData export links. This is an early MVP implementation, focused on read-only access to public HEPData content.
Local stdio is the default and recommended mode. HTTP support exists for local testing and hardened central deployments, but remote HTTP is also supported for multiple clients support.
HEPData MCP is published on PyPI as hepdata-mcp. The easiest way to run it is with uvx:
uvx hepdata-mcpIf you want to avoid package resolution during MCP client startup, install the tool once:
uv tool install hepdata-mcp
hepdata-mcpUpgrade that installed tool with uv tool upgrade hepdata-mcp. For MCP client configs in this mode, use hepdata-mcp as the command with no arguments.
For development, install this checkout in editable mode:
git clone https://github.com/HEPData/hepdata-mcp ~/.local/uv/hepdata-mcp-src
cd ~/.local/uv/hepdata-mcp-src
uv sync --all-groupsFor development checks:
uv run pytest
uv run ruff check .
uv run ruff format --check .
uv run mypyThe Docker image is published on Docker Hub as hepdata/hepdata-mcp. Pull the latest release:
docker pull hepdata/hepdata-mcp:latestFor reproducible deployments, pin a release tag such as hepdata/hepdata-mcp:0.1.0.
Run over stdio for clients that can launch Docker commands:
docker run --rm -i hepdata/hepdata-mcp:latestExample stdio client command:
{
"mcpServers": {
"hepdata": {
"command": "docker",
"args": ["run", "--rm", "-i", "hepdata/hepdata-mcp:latest"]
}
}
}Run local streamable HTTP:
docker run --rm \
-p 127.0.0.1:8000:8000 \
-e HEPDATA_MCP_ALLOW_REMOTE_HTTP=1 \
-e HEPDATA_MCP_TRUST_PROXY_AUTH=1 \
hepdata/hepdata-mcp:latest \
--transport streamable-http --host 0.0.0.0 --port 8000The container runs as a non-root user. For remote HTTP deployment, keep the same reverse-proxy, TLS, authentication, and rate-limit requirements described below.
Build the image from this checkout for local development:
docker build -t hepdata-mcp:local .search_recordsget_recordlist_tablesdescribe_tableget_tableget_record_exportsget_record_versionsget_jsonldserver_infoResources:
hepdata://record/{identifier}hepdata://record/{identifier}/tablesMost MCP clients launch commands directly, without a shell. Use uvx as the command and pass the package name as an argument.
Warm the uvx cache once before configuring a client, especially on machines with slow or restricted network access:
uvx hepdata-mcp --helpUseful variants:
uvx hepdata-mcp==0.1.0
uvx --refresh hepdata-mcpIf a GUI-launched client cannot find uvx, check where uvx is installed with command -v uvx and use that path as the command. On macOS this is commonly needed for clients such as Claude Code; Homebrew installs often use /opt/homebrew/bin/uvx, while standalone uv installs may use /Users/<you>/.local/bin/uvx. Use the expanded absolute path because MCP clients usually do not expand ~ or $HOME.
Create or edit .vscode/mcp.json:
{
"servers": {
"hepdata": {
"command": "uvx",
"args": ["hepdata-mcp"]
}
}
}Then run MCP: List Servers from the VS Code command palette and start hepdata.
For GitHub Copilot CLI:
copilot mcp add hepdata --type stdio -- uvx hepdata-mcpAdd to ~/.codex/config.toml:
[mcp_servers.hepdata]
command = "uvx"
args = ["hepdata-mcp"]
supports_parallel_tool_calls = trueOr, if using a local HTTP server:
codex mcp add hepdata --url http://127.0.0.1:8000/mcpProject .mcp.json example:
{
"mcpServers": {
"hepdata": {
"type": "stdio",
"command": "uvx",
"args": ["hepdata-mcp"]
}
}
}On macOS, if Claude Code cannot find uvx, expand the command:
{
"mcpServers": {
"hepdata": {
"type": "stdio",
"command": "/opt/homebrew/bin/uvx",
"args": ["hepdata-mcp"]
}
}
}CLI alternative:
claude mcp add-json hepdata '{"type":"stdio","command":"uvx","args":["hepdata-mcp"]}'Add to ~/.qwen/settings.json or .qwen/settings.json:
{
"mcpServers": {
"hepdata": {
"command": "uvx",
"args": ["hepdata-mcp"],
"timeout": 30000,
"trust": false
}
}
}Most stdio MCP clients support a similar shape:
{
"mcpServers": {
"hepdata": {
"command": "uvx",
"args": ["hepdata-mcp"]
}
}
}Start local streamable HTTP:
uvx hepdata-mcp --transport streamable-http --host 127.0.0.1 --port 8000Local URL:
http://127.0.0.1:8000/mcpExample VS Code / GitHub Copilot HTTP config:
{
"servers": {
"hepdata": {
"type": "http",
"url": "http://127.0.0.1:8000/mcp"
}
}
}Example Qwen Code HTTP config:
{
"mcpServers": {
"hepdata": {
"httpUrl": "http://127.0.0.1:8000/mcp",
"timeout": 30000
}
}
}Remote HTTP binds are intentionally blocked unless both deployment opt-ins are set:
HEPDATA_MCP_ALLOW_REMOTE_HTTP=1 \
HEPDATA_MCP_TRUST_PROXY_AUTH=1 \
uvx hepdata-mcp --transport streamable-http --host 0.0.0.0 --port 8000Only use this behind hardened ingress:
HEPDATA_MCP_LIVE_TESTS=1 uv run pytest tests/test_live_client.pyThis project follows the main HEPData project license: GNU General Public License version 2 or later (GPL-2.0-or-later). See LICENSE.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.