claude-code - 💡(How to fix) Fix MCP servers have no provenance verification — supply chain risk [2 comments, 2 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
anthropics/claude-code#53386Fetched 2026-04-26 05:17:10
View on GitHub
Comments
2
Participants
2
Timeline
6
Reactions
0
Timeline (top)
labeled ×3commented ×2cross-referenced ×1

Discovered while trying to determine which mcp-atlassian package was installed — brew info showed sooperset/mcp-atlassian but there was no way to determine this from within Claude Code itself. The server name "atlassian" gave no indication of the author, and it was easy to confuse with a completely different project (atlassian/atlassian-mcp-server).

Error Message

  1. Package hash pinning: Allow MCP configs to pin a package hash or version, and warn if the resolved package doesn't match.

Root Cause

Discovered while trying to determine which mcp-atlassian package was installed — brew info showed sooperset/mcp-atlassian but there was no way to determine this from within Claude Code itself. The server name "atlassian" gave no indication of the author, and it was easy to confuse with a completely different project (atlassian/atlassian-mcp-server).

Fix Action

Fix / Workaround

Suggested mitigations

RAW_BUFFERClick to expand / collapse

Problem

MCP servers are arbitrary code that receive user credentials (API tokens, OAuth secrets, etc.) but there is no mechanism to verify their provenance, authenticity, or integrity.

Current state

  • MCP servers are identified by name only (e.g., "atlassian", "grafana"). Names are not namespaced or reserved.
  • Multiple unrelated packages can use the same server name across registries (pip, npm, Homebrew). For example, sooperset/mcp-atlassian (community) vs atlassian/atlassian-mcp-server (different project) — both called "atlassian."
  • There is no signing, hash verification, or provenance attestation for installed MCP servers.
  • brew info, pip show, npm info report self-declared metadata — a malicious package can claim any homepage URL.
  • Typosquatting is trivial: mcp-atlassian vs mcp-atlaissian vs atlassian-mcp.
  • There is no built-in way in Claude Code to inspect which binary/package is backing an MCP server, or to verify it matches what the user intended to install.

What MCP servers have access to

  • API tokens and OAuth credentials configured by the user
  • Read/write access to external services (Confluence, Jira, Grafana, GitHub, etc.)
  • Ability to act on behalf of the user in those services
  • No sandboxing or capability restrictions beyond what tools the server exposes

Impact

A compromised, typosquatted, or impersonated MCP package could:

  • Exfiltrate all configured API tokens silently
  • Read/write to external services on behalf of the user
  • Persist access via the tokens even after the package is removed

The user has no way to distinguish a legitimate MCP server from a malicious one with the same name.

Suggested mitigations

These are just ideas — the right approach depends on the MCP ecosystem's direction:

  1. Provenance display: claude mcp list could show the resolved binary path, package version, source registry, and homepage for each configured server. At minimum, make it easy to answer "what code am I actually running?"
  2. Package hash pinning: Allow MCP configs to pin a package hash or version, and warn if the resolved package doesn't match.
  3. Curated registry / verified publishers: Flag servers from known publishers vs unknown community packages.
  4. First-run audit prompt: On first use of a new MCP server, show the user what package it resolved to and ask for confirmation.
  5. Capability scoping: Allow users to restrict what credentials/tools an MCP server can access, rather than giving it blanket access to everything configured.

Context

Discovered while trying to determine which mcp-atlassian package was installed — brew info showed sooperset/mcp-atlassian but there was no way to determine this from within Claude Code itself. The server name "atlassian" gave no indication of the author, and it was easy to confuse with a completely different project (atlassian/atlassian-mcp-server).

extent analysis

TL;DR

Implementing provenance display and package hash pinning can help mitigate the risk of compromised or impersonated MCP packages.

Guidance

  • Display the resolved binary path, package version, source registry, and homepage for each configured server using claude mcp list to provide transparency about the code being run.
  • Allow MCP configs to pin a package hash or version and warn if the resolved package doesn't match to ensure authenticity.
  • Consider implementing a curated registry or verified publishers to differentiate between known and unknown community packages.
  • Introduce a first-run audit prompt to inform users about the package being used and request confirmation.

Example

No specific code snippet is provided due to the lack of technical implementation details in the issue.

Notes

The suggested mitigations are ideas and may require further discussion and evaluation to determine the best approach for the MCP ecosystem.

Recommendation

Apply workaround: Implementing provenance display and package hash pinning can provide an immediate improvement in security and help prevent potential attacks.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING