agenthost MCP server
agenthost is agent-first web hosting, driven entirely
through an MCP server. This repository holds the MCP Registry
listing for it — server.json — and the workflow that publishes
that listing.
agenthost is a remote MCP server: it is hosted by agenthost and reachable over
Streamable HTTP
at https://agenthost.eu/mcp. There is nothing to install locally.
- Registry name:
eu.agenthost/agenthost - Endpoint:
https://agenthost.eu/mcp(Streamable HTTP) - Website: https://agenthost.eu
The server code itself lives in agenthost's private control-panel repository; this repository only carries the public registry metadata.
Connecting
Point any MCP client that speaks Streamable HTTP at https://agenthost.eu/mcp.
Authentication is handled by the client's OAuth flow — you sign in (or sign up) at
agenthost in your browser, so there is no token to paste. For unattended clients
that cannot open a browser, agenthost can mint a long-lived API token to send as a
Bearer header.
Example client configuration:
{
"mcpServers": {
"agenthost": {
"type": "streamable-http",
"url": "https://agenthost.eu/mcp"
}
}
}
Publishing
Publishing is automated with GitHub Actions (.github/workflows/publish-mcp.yml).
The registry entry is namespaced under eu.agenthost — the reverse-DNS form of
agenthost.eu — and ownership is proven with DNS authentication: a TXT record
on the apex of agenthost.eu holds the public half of an Ed25519 signing key, and
the workflow signs with the private half stored in the MCP_PRIVATE_KEY secret.
- Every push and pull request validates
server.jsonagainst the official schema (mcp-publisher validate) — no secret required. - Pushing a
v*tag (or running the workflow manually) publishes to the registry. On a tag, the published version is taken from the tag, so the git tag is the single source of truth for the registry version.
To cut a release:
git tag v0.1.0
git push origin v0.1.0
Verify afterwards:
curl "https://registry.modelcontextprotocol.io/v0.1/servers?search=eu.agenthost/agenthost"
One-time DNS auth setup
Generate the signing key on a trusted machine (needs OpenSSL 3+), so the private key never leaves your control:
# 1. Generate an Ed25519 key pair
openssl genpkey -algorithm Ed25519 -out key.pem
# 2. Build the DNS TXT record (public key)
PUBLIC_KEY="$(openssl pkey -in key.pem -pubout -outform DER | tail -c 32 | base64)"
echo "agenthost.eu. IN TXT \"v=MCPv1; k=ed25519; p=${PUBLIC_KEY}\""
# 3. Extract the private key for the GitHub secret
openssl pkey -in key.pem -noout -text | grep -A3 'priv:' | tail -n +2 | tr -d ' :\n'; echo
Then:
- Add the TXT record from step 2 on the apex of
agenthost.eu(agenthost.eu, not a_mcp-authsubdomain). Wait for it to propagate. - Add the private key from step 3 as a repository secret named
MCP_PRIVATE_KEY(Settings → Secrets and variables → Actions). For stronger protection, store it instead on a GitHub Environment namedmcp-registry-publishand restrict that environment to the default branch and release tags — the workflow already references that environment. - Delete
key.pemonce the secret is stored.
If you rotate the key, remove the old TXT record from the apex — a stale record is tried first and will fail verification.
Editing server.json
server.json follows the MCP Registry
server.schema.json
(the $schema field pins the exact version). Keep the remotes[].url in sync with
the production endpoint, and keep description within the schema's 100-character
limit. CI validates every change, so a malformed edit fails in review.