A Model Context Protocol (MCP) server for the Have I Been Pwned (HIBP) API
A Model Context Protocol (MCP) server for the Have I Been Pwned (HIBP) API that allows you to query breach data using natural language.
This MCP server provides tools to interact with the Have I Been Pwned API, allowing you to:
{
"mcpServers": {
"HIBP-MCP": {
"command": "npx",
"args": ["-y", "@darrenjrobinson/hibp-mcp"],
"env": {
"HIBP_API_KEY": "<your-hibp-api-key>",
"HIBP_SUBSCRIPTION_PLAN": "Pwned 1"
}
}
}
}
git clone https://github.com/darrenjrobinson/HIBP-MCP-Server.git
cd HIBP-MCP-Server
npm install
npm run build
{
"mcpServers": {
"HIBP-MCP": {
"command": "node",
"args": ["path/to/hibp-mcp/build/main.js"],
"env": {
"HIBP_API_KEY": "<your-hibp-api-key>",
"HIBP_SUBSCRIPTION_PLAN": "Pwned 1"
}
}
}
}
| Name | Description |
|---|---|
HIBP_API_KEY | Your Have I Been Pwned API key |
HIBP_SUBSCRIPTION_PLAN | Your HIBP API subscription plan (Pwned 1, Pwned 2, Pwned 3, Pwned 4, or Pwned 5) |
Once configured, you can ask Claude natural language questions about data breaches. Here are some examples:
Query breached accounts and breaches from the Have I Been Pwned API.
Parameters:
operation: The HIBP operation to perform (getAllBreachesForAccount, getAllBreachedSites, getBreachByName, getDataClasses)account: Email address to check for breaches (required for getAllBreachesForAccount)domain: Domain to filter breaches by (optional)name: Breach name to get details for (required for getBreachByName)includeUnverified: Whether to include unverified breaches (optional)truncateResponse: Whether to truncate the response (optional)Query pastes containing account data from the Have I Been Pwned API.
Parameters:
account: Email address to check for pastes (required)Check if a password has been exposed in data breaches using the Pwned Passwords API.
Parameters:
password: Password to check (will be hashed locally before sending and only the first 5 characters sent)Passwords checked through the HIBP-PwnedPasswords tool are never sent in plain text. They are hashed locally using SHA-1, and only the first 5 characters of the hash are sent to the API using k-anonymity.
Contributions are welcome! Please feel free to submit a Pull Request.
MIT
Source-derived launch command. Check the maintainer’s required arguments and credentials before running:
npx -y @darrenjrobinson/hibp-mcpMerge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.
{
"mcpServers": {
"io-github-darrenjrobinson-hibp": {
"command": "npx",
"args": [
"-y",
"@darrenjrobinson/hibp-mcp"
]
}
}
}Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.
Claude Desktop setup reference@darrenjrobinson/hibp-mcpnpmio.github.darrenjrobinson/hibp works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.