Skip to content

[FEATURE] Private MCP servers sourced from GitHub repos + consumer token-env trust policy #1869

Description

@danielmeppiel

Summary

Split out from #20 as a focused, design-needing residual. Two related security/trust items that did NOT ship with the v0.8.0 extended-MCP work:

1. Private MCP servers sourced from GitHub repos ("repo-as-registry")

In the #20 thread, both the maintainer and @Vivalio aligned on a middle ground between "public GitHub MCP Registry" and "stand up a full private MCP registry (e.g. Azure API Center)": source private MCP server definitions from a GitHub repo, the same way APM packages are sourced (honoring GITHUB_HOST / GHE).

At HEAD the model supports registry: <custom-url> (wired by PR #1443) and registry: false (self-defined, shipped inside a package). Neither is the requested first-class "pull a private MCP server definition from a GitHub repo" flow.

2. Consumer-side token-env allow-list policy

Triage design question (Apr 2026): a package declaring env/headers that route a credential (e.g. GITHUB_TOKEN) to a third-party MCP endpoint is a credential-exfiltration surface. Today this is partially gated by --trust-transitive-mcp (transitive servers), but there is no per-token consumer allow-list schema letting a consumer restrict which env vars/secrets a package's MCP servers may receive.

Why grouped

Both are theme/security / area/mcp-trust design items that share the same trust-boundary model (where does a server definition come from, and which credentials may flow to it). Settling them together avoids two overlapping designs.

Suggested design deliverable

A short design doc settling: (a) GitHub-repo MCP sourcing resolution + host/auth reuse, and (b) the consumer token-env allow-list policy hook (likely in apm-policy.yml).

Context

Parent: #20. The extended-config schema, transports, headers, tool filtering, custom registry URL, multi-runtime generation, transitive trust, and the optional-input over-prompt bug (PR #1734) have all shipped. These two trust items are the remaining design-gated residuals.

Metadata

Metadata

Assignees

Labels

area/mcp-configMCP server configuration depth, transports, variable resolution.area/mcp-trustTransitive MCP trust prompts, consent contract, transport security.status/needs-designDirection approved, design discussion required before code.status/triagedInitial agentic triage complete; pending maintainer ratification (silence = approval).theme/governanceGoverned by policy. apm-policy, audit, enforcement, enterprise rollout.theme/securitySecure by default. Content scanning, lockfile integrity, MCP trust boundaries.type/featureNew capability, new flag, new primitive.

Type

No type
No fields configured for issues without a type.

Projects

Status
Todo

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions