DLP Bench Test policies before an incident

MCP server for DLP testing

A public Model Context Protocol (MCP) server that exposes the same synthetic data generators used on this site (SSN, IBAN, passport, cards) — over MCP instead of a web page. Point any MCP-capable AI agent at this endpoint; tool calls travel as ordinary HTTPS that your DLP can inspect.

Endpoint https://dlpbench.com/api/mcp/ mcp-setup-readme.md

Drop the readme into a repo and ask the agent to wire up the connection.

Connect

Pick a client:

Cursor

File .cursor/mcp.json at the project root (or ~/.cursor/mcp.json):

dlpbench.com · json
{
    "mcpServers": {
        "dlpbench": {
            "url": "https://dlpbench.com/api/mcp/"
        }
    }
}
Claude Code / Desktop
dlpbench.com · json
{
    "mcpServers": {
        "dlpbench": {
            "type": "http",
            "url": "https://dlpbench.com/api/mcp/"
        }
    }
}

CLI: claude mcp add dlpbench --transport http https://dlpbench.com/api/mcp/

Desktop: claude_desktop_config.json (macOS ~/Library/Application Support/Claude/, Windows %APPDATA%\Claude\) — same JSON.

Windsurf

File ~/.codeium/windsurf/mcp_config.json (key serverUrl):

dlpbench.com · json
{
    "mcpServers": {
        "dlpbench": {
            "serverUrl": "https://dlpbench.com/api/mcp/"
        }
    }
}

Reload Windsurf and check the MCP Servers list.

VS Code Copilot

File .vscode/mcp.json:

dlpbench.com · json
{
    "servers": {
        "dlpbench": {
            "type": "http",
            "url": "https://dlpbench.com/api/mcp/"
        }
    }
}

curl examples

A simple way to verify the MCP server.

  1. initialize

    Handshake: client introduces itself to the server
    dlpbench.com · bash
    curl -sS -X POST "https://dlpbench.com/api/mcp/" -H "Content-Type: application/json" -d "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2025-06-18\",\"capabilities\":{},\"clientInfo\":{\"name\":\"curl\",\"version\":\"0.0.1\"}}}"
  2. tools/list

    Fetch the tool list
    dlpbench.com · bash
    curl -sS -X POST "https://dlpbench.com/api/mcp/" -H "Content-Type: application/json" -d "{\"jsonrpc\":\"2.0\",\"id\":2,\"method\":\"tools/list\"}"
  3. generate

    Response returns a generated table with SSN fields
    dlpbench.com · bash
    curl -sS -X POST "https://dlpbench.com/api/mcp/" -H "Content-Type: application/json" -d "{\"jsonrpc\":\"2.0\",\"id\":3,\"method\":\"tools/call\",\"params\":{\"name\":\"generate\",\"arguments\":{\"preset\":\"us-pii\",\"count\":5,\"format\":\"csv\"}}}"
  4. generate_prompt_context

    Response returns generated prose with personal data
    dlpbench.com · bash
    curl -sS -X POST "https://dlpbench.com/api/mcp/" -H "Content-Type: application/json" -d "{\"jsonrpc\":\"2.0\",\"id\":4,\"method\":\"tools/call\",\"params\":{\"name\":\"generate_prompt_context\",\"arguments\":{\"scenario\":\"hr_us\",\"count\":2,\"format\":\"text\"}}}"
  5. echo_sensitive_data

    Send personal data to the server
    dlpbench.com · bash
    curl -sS -X POST "https://dlpbench.com/api/mcp/" -H "Content-Type: application/json" -d "{\"jsonrpc\":\"2.0\",\"id\":5,\"method\":\"tools/call\",\"params\":{\"name\":\"echo_sensitive_data\",\"arguments\":{\"label\":\"test\",\"payload\":\"SSN 478-21-3344\"}}}"

MCP tools

Six tools are available.

generate

Synthetic US/EU/APAC fields in the response body: presets (SSN, IBAN, cards, bank) or custom columns — same as the on-site generator.

generate_prompt_context

Prose with embedded PII (HR, payroll, bank, PCI, APAC ID scenarios) — narrative leakage, not CSV columns.

list_dlp_patterns

Regex library from the Regex page: id, category, and example.

regex_test

Run a pattern against text on the server (PCRE engine).

echo_sensitive_data

Returns the string unchanged. PII travels in the request arguments.

probe_request

Shows User-Agent, IP, and time as the server sees them — useful for locating the intercept point.

What to watch in the DLP console

Check the network (HTTPS), the endpoint agent (arguments and response), and CASB — does it flag an unfamiliar external MCP?

  • The tools/list response is a typical MCP handshake fingerprint. If that call never shows up, DLP is not covering MCP traffic.
  • Whether DLP caught SSN, IBAN, or a card number in the response body of tools/call (generate).
  • The same data in prose, not a table — generate_prompt_context.
  • Personal data in the outbound request — echo_sensitive_data.
  • Outbound connection to dlpbench.com, path /api/mcp/.

FAQ

What is MCP?

Model Context Protocol is an open protocol that lets an AI agent (Cursor, Claude, and similar) attach external tools: it calls a server over HTTPS and invokes functions via JSON-RPC. For DLP this is a separate outbound channel — not a browser form or FTP, but a programmatic client with the same sensitive data in the request or response.

Why is the endpoint unauthenticated?

By design: it models an external MCP a user plugged in on their own, without IT approval. For CASB and network policy, what matters is the outbound connection to an unfamiliar host and a tools/list response — not a locked lab with a token.

Do you store what the agent sends in a call?

No. MCP requests and responses are not saved or logged. Data is synthetic; echo_sensitive_data only returns the argument you passed in the response.

Which URL do I put in the client settings?

Only https://dlpbench.com/api/mcp/ — Streamable HTTP, no separate subdomain. Sessions and SSE are unused: every call is a plain POST.

Does generation match the on-site generator and Regex library?

Yes. Same field types, presets, and checksums (SSN, Luhn, IBAN MOD-97, TFN/NRIC/Aadhaar). The server uses the same algorithms as the browser generator; the seed parameter makes rows reproducible across MCP calls. The regex catalog matches the Regex page.

Not using AI / do not need MCP?

Use the manual channel tests, or download ready test data to your machine.