MCP Registry identities
Resolve official MCP Registry v0.1 identities from apm.yml on ht install.
ht install and apply-from-manifest resolve dependencies.mcp registry strings from MCP Registry v0.1. Identities look like io.github.github/github-mcp-server, with an optional @version pin. This is the same native MCP emit path existing serializers already use — not a second resolver, not a CLI release, and not Microsoft's apm binary. apm.yml, apm.lock.yaml, and the environments mapping stay the project files they already were.
dependencies:
mcp:
- io.github.github/github-mcp-server
- io.github.github/github-mcp-server@1.11.0
- name: filesystem
registry: false
command: npx
args: ["-y", "@modelcontextprotocol/server-filesystem", "/workspace"]ht install
ht install --mcp io.github.github/github-mcp-server --target cursor
ht mcp search github
ht mcp list
ht mcp show io.github.github/github-mcp-server
ht mcp install io.github.github/github-mcp-server --target cursorht mcp install <id> is an alias of ht install --mcp <id>: append the identity to apm.yml dependencies.mcp, then run the same install.
Registry fetch
Registry strings fetch:
GET https://registry.modelcontextprotocol.io/v0.1/servers/{urlencoded-id}/versions/{latest|pin}
Override the host with HARNESSTAP_MCP_REGISTRY_URL. ht mcp search is GET /v0.1/servers?search=. ht mcp list is GET /v0.1/servers with cursor pagination. ht mcp show fetches /v0.1/servers/{id}/versions/latest and prints the native config HT would emit. Search, list, and show are discovery only; they do not mutate apm.yml.
How identities resolve
- Prefer a registry
remotes[]HTTP/SSE URL when present. GitHub MCP useshttps://api.githubcopilot.com/mcp/plus an${AUTHORIZATION}placeholder (Bearer ${AUTHORIZATION}). - Otherwise pick the first package in
npm→oci→pypi→nugetorder and emitnpx/docker run -i --rm/uvx/dnx. - Write the same native MCP files existing serializers already emit (
.cursor/mcp.json,.mcp.json, and the other harness MCP files HT already serializes). Secret env and headers stay${VAR}placeholders.
Self-defined entries (registry: false with command / url) skip the registry. Command or URL authored inline also skip the registry.
Append and rollback
ht install --mcp / ht mcp install snapshot apm.yml, append the identity, then run install. If install fails or --dry-run is set, the manifest write is restored to the prior bytes.
Trust and targets
Executable parking is unchanged: depth > 0 when executables: is on. Root-manifest MCP is depth 0 and is not a new trust path. Root dependencies.mcp (including registry ids) is the CLI #159 path. Target selection is unchanged from CLI #157: --target / --all / --harness, then targets:, then prefs, then filesystem. No second target pipeline.
Out of scope
Not shipped here:
- Runtime MCP sandbox
- GitHub PAT auto-header injection
- VS Code / JetBrains / Windsurf / Kiro adapters HT does not already serialize
- Signing / SLSA / Microsoft's
apmbinary - LSP
See also: Install, Apply, Executable trust, Compile and targets, Command reference.