# agenthost

**Category:** 💻 Developer Tools  
**Repository:** https://github.com/AgenthostEU/agenthost-mcp  
**Views:** 0  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/agenthost

## Description
Agent-first web hosting: deploy sites, apps, databases and domains over MCP.

## Claude Desktop Quick Installation
Heuristic fallback — verify the package name and runner against the repository README before running it. Uses `npx` (confidence: low):

```json
"mcpServers": {
  "agenthost": {
    "command": "npx",
    "args": ["-y","agenthost"]
  }
}
```

## Documentation & README

# agenthost MCP server

[agenthost](https://agenthost.eu) is agent-first web hosting, driven entirely
through an MCP server. This repository holds the [MCP Registry](https://registry.modelcontextprotocol.io)
listing for it — [`server.json`](https://github.com/AgenthostEU/agenthost-mcp/blob/HEAD/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](https://modelcontextprotocol.io/specification/basic/transports)
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:

```json
{
  "mcpServers": {
    "agenthost": {
      "type": "streamable-http",
      "url": "https://agenthost.eu/mcp"
    }
  }
}
```

## Publishing

Publishing is automated with GitHub Actions ([`.github/workflows/publish-mcp.yml`](https://github.com/AgenthostEU/agenthost-mcp/blob/HEAD/.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.json` against 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:

```bash
git tag v0.1.0
git push origin v0.1.0
```

Verify afterwards:

```bash
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:

```bash
# 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:

1. **Add the TXT record** from step 2 on the **apex** of `agenthost.eu`
   (`agenthost.eu`, not a `_mcp-auth` subdomain). Wait for it to propagate.
2. **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 named `mcp-registry-publish`
   and restrict that environment to the default branch and release tags — the
   workflow already references that environment.
3. Delete `key.pem` once 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`](https://static.modelcontextprotocol.io/schemas/2025-12-11/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.

