dgb-digiid-mcp
Gives AI agents a verifiable identity using Digi-ID passwordless authentication on DigiByte, enabling them to prove who they are by signing challenges without revealing private keys.
README
dgb-digiid-mcp
Give an AI agent a verifiable identity. An MCP server that lets an agent prove who it is using Digi-ID — DigiByte's passwordless authentication — by signing a challenge with a key it never reveals.
The natural companion to dgb-digidollar-mcp: an agent that can prove who it is and pay for what it uses — the two genuinely chain-shaped problems of the agent era, both on a decentralized rail.
Works on testnet or mainnet. Signing and verifying are pure cryptography, so the node does not need to be synced or funded — any DigiByte node with the identity wallet loaded will do. And because no money is involved, it's safe on mainnet from day one.
The flow
Service ──"prove who you are": digiid://mysite/cb?x=<nonce>──▶ Agent
Agent ──signs the URI with its identity key──────────────▶ (no key revealed)
Agent ──POST { address, uri, signature } ─────────────────▶ Service /callback
Service ──verifies signature + domain + nonce──────────────▶ authenticated as <address>
The agent's address is its identity. A service recognises the same agent across sessions without ever handling a password or a shared secret.
Proven end to end (see example/service.js): an agent authenticated to a
service through the MCP server, and a forged response — the correct challenge
signed with the wrong key but claiming the identity address — was rejected with
"signature does not verify."
Why it can't be faked
- The signature is bound to the address. Only the holder of the identity's
private key can produce a signature that
verifymessage(address, sig, uri)accepts. Claiming someone else's address doesn't help — the math won't verify. - Domain-bound. The signed message is the full
digiid://URI including your domain, so a signature the agent made for another site can't be replayed at yours. - Nonce / one-time use. Each challenge carries a random nonce the service issued and burns on use, so a captured response can't be replayed.
- Legacy-address requirement, handled. DigiByte message signing only works with legacy (P2PKH) addresses, not bech32 — the server checks this at startup and fails loudly rather than mysteriously.
Tools (agent side)
| Tool | What it does |
|---|---|
get_identity |
Return the agent's Digi-ID address — its stable public identity. Reveals no secret. |
authenticate |
Given a digiid:// challenge, sign it and POST the response to the service's callback. Returns the service's reply. The agent's "log in." |
Library (service side)
src/digiid.js is a dependency-free module a service uses to challenge and verify:
import { buildChallenge, verifyResponse } from "dgb-digiid-mcp";
const { uri, nonce } = buildChallenge({ domain: "mysite.com" });
// ...show uri to the agent (or as a QR to a human's Digi-ID wallet)...
const result = await verifyResponse(
{ address, uri, signature },
{ verifyMessage, expectedDomain: "mysite.com", isNonceValid }
);
if (result.ok) authenticateSession(result.identity);
Because Digi-ID is a published standard, the same server works for human Digi-ID wallets too — not just agents.
Setup
Point it at any DigiByte node and give it a legacy identity address:
digibyte-cli -rpcwallet=identity getnewaddress "agent" "legacy" # note the "legacy"
npm install
cp .env.example .env # RPC creds + DIGIID_ADDRESS
Run the demo (a passwordless login service + the agent authenticating to it):
node --env-file=.env example/service.js # terminal 1
# then drive the MCP server's `authenticate` tool against the challenge from GET /login
Add to your MCP client (npx dgb-digiid-mcp), env: DGB_RPC_URL, DGB_RPC_USER,
DGB_RPC_PASSWORD, DGB_WALLET, DIGIID_ADDRESS.
Related
- dgb-digidollar-mcp — the agent pays in DigiDollar.
- dgb-x402 — services accept those payments.
- dgb-chain-mcp — the agent queries DigiByte.
Independent community project. Not affiliated with the DigiByte Foundation. MIT licensed.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.
E2B
Using MCP to run code via e2b.