@bdelanghe/site-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@@bdelanghe/site-mcpShow me the latest posts."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@bdelanghe/site-mcp
A local, read-only MCP server over robertdelanghe.dev's signed static API.
It exposes the site's identity data — profile, writing, the GitHub corpus, the
résumé credential, the OpenAPI doc — to any MCP client (Claude Desktop, Claude
Code, etc.), and verifies every response byte-for-byte against the site's
Sigstore-signed sha256 manifest before handing it back. If the bytes a
client would receive don't match the signed manifest, the server refuses to
return them.
It runs locally over stdio — the client spawns it as a subprocess. There is no hosted server and no network listener, which preserves the site's static / no-attack-surface posture.
What it is / isn't
Read-only. There are no write or mutating tools, by design.
Trustless. Responses are content-addressed and checked against the signed manifest; you don't have to trust the transport (or this process) to trust the bytes — the digest has to match.
Local. stdio transport only. Nothing is served to the network.
Related MCP server: club-mcp
Install / run
Requires Node ≥ 18.17.
# Run straight from npm (no install):
npx -y @bdelanghe/site-mcp
# Or from a clone:
npm install
npm run build
npm startOn startup it logs to stderr (stdout is the MCP channel):
site-mcp ready (stdio) → https://robertdelanghe.dev; signature mode=offMCP client configuration
Add to your client's MCP config (Claude Desktop: claude_desktop_config.json;
Claude Code: .mcp.json / claude mcp add):
{
"mcpServers": {
"robertdelanghe": {
"command": "npx",
"args": ["-y", "@bdelanghe/site-mcp"],
"env": {
"SITE_MCP_SIGNATURE_MODE": "warn"
}
}
}
}Resources
Each maps to a file under https://robertdelanghe.dev/api/v1/:
Resource URI | Endpoint | Contents |
|
| Headline, intro, label, links |
|
| JSON Feed of writing (post list) |
|
| A single post (templated; |
|
| GitHub corpus: stats + highlights |
|
| Per-page DOM conformance report |
|
| Résumé as a Verifiable Credential |
|
| The OpenAPI 3.2 document for the API |
Tools (read-only)
Tool | Args | Returns |
| — | The posts feed (slug, title, summary, tags) |
|
| A single post by slug |
| — | The conformance / accessibility report |
Resource reads and tool results carry a _meta.verification block recording the
manifest-relative path, source URL, the verified sha256, and the manifest
signature status.
Verification / trust model
The site publishes a single signed manifest, https://robertdelanghe.dev/site.sha256
(ordinary sha256sum format — <digest> <path>, one line per published file,
including everything under api/v1/), and a Sigstore bundle over it,
site.sha256.sigstore.json.
Per-file hash check (always on). The server fetches
site.sha256once per process, then for every resource it (a) fetches the file, (b) computes the SHA-256 of the bytes it received, and (c) requires that digest to equal the manifest entry for that path. A tampered file, a stale CDN edge, or a man-in-the-middle changes the bytes → the digest won't match → the server raises aVerificationErrorinstead of returning anything. A path that isn't in the manifest is likewise refused (it isn't a signed artifact of the site).Manifest signature check (optional). Set
SITE_MCP_SIGNATURE_MODEtowarnorrequireto also verify the Sigstore bundle oversite.sha256against the expected GitHub Actions deploy identity (…/bdelanghe/site/.github/workflows/deploy.yml@refs/heads/main, issuerhttps://token.actions.githubusercontent.com). This anchors the manifest itself to the build that produced it.warnlogs failures to stderr;requirefails closed. Uses the optionalsigstoredependency (it fetches Sigstore's TUF trust root on first use).
Configuration
All optional environment variables:
Variable | Default | Meaning |
|
| Origin serving the site + API + manifest |
|
|
|
| deploy workflow SAN | Expected Sigstore certificate identity |
| GitHub Actions OIDC | Expected Sigstore OIDC issuer |
|
| Per-request fetch timeout |
Development
npm install
npm run build # tsc → dist/
npm test # node --test via tsx (manifest + fetch/verify, no network)
npm run typecheckLicense
MIT — see LICENSE. The site data itself is published under CC BY 4.0.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/bdelanghe/site-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server