MaskFlow PII proxy MCP server
Commit Nov 1, 2026Masks personally identifiable information in outbound MCP tool-call arguments and restores original values in the results.
Also known as maskflow/maskflow, mcp, maskflow-mcp
- Stars
- 2
- Tools
- —
- Downloads, 30 days
- 118
- Latest version
- 0.1.2
- Last commit
- Nov 1, 2026
- License
- MIT
What is MaskFlow PII proxy MCP?
MaskFlow PII proxy masks personally identifiable information in outbound MCP tool-call arguments and restores original values in the results.
Summary generated from the project's README
About MaskFlow PII proxy MCP server
MaskFlow PII proxy acts as a security layer between AI agents and MCP servers by intercepting tool calls. It identifies personally identifiable information in outbound arguments and replaces them with consistent placeholders before they reach the backend. When the tool returns a result, the proxy restores the original values so the agent can continue its task without seeing the raw sensitive data in the transit logs.
Developers can deploy this as a local shim using stdio for clients like Claude Desktop or as an HTTP proxy. It supports various backend configurations, including command line strings or existing JSON config files. The system uses a detection engine that covers generic PII and specific Indian identifiers like Aadhaar, PAN, GSTIN, and UPI. Users can tune the detection by adjusting the minimum confidence threshold or using the patterns-only flag to skip the spaCy model for faster performance.
This tool is designed for privacy-conscious developers who need to prevent names, emails, and phone numbers from reaching third-party servers. It maintains a memory-resident map of tokens to values that is never logged, ensuring that only masked data crosses the wire.
What you can do with it
- 1Securing Indian identity documentsEnsure specific Indian identifiers like Aadhaar or PAN are caught by the detection engine.
- 2Configuring local agent environmentsWrap an existing GitHub MCP server configuration to add a privacy layer in Claude Desktop.
- 3Controlling data exposure in resultsMask sensitive information that a tool might generate or introduce within its own output.
Written from the project's README. Every use case is checked against a quote from it.
How to install MaskFlow PII proxy MCP
Formats verified 10 Nov 2026Install MaskFlow PII proxy MCP in Claude Code
$ claude mcp add mcp -- uvx maskflow-mcpInstall MaskFlow PII proxy MCP in Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"mcp": {
"command": "uvx",
"args": [
"maskflow-mcp"
]
}
}
}Install MaskFlow PII proxy MCP in VS Code
.vscode/mcp.json
{
"servers": {
"mcp": {
"type": "stdio",
"command": "uvx",
"args": [
"maskflow-mcp"
]
}
}
}Install MaskFlow PII proxy MCP in Claude Desktop
claude_desktop_config.json
{
"mcpServers": {
"mcp": {
"command": "uvx",
"args": [
"maskflow-mcp"
]
}
}
}Install MaskFlow PII proxy MCP in Codex
~/.codex/config.toml
[mcp_servers.mcp] command = "uvx" args = ["maskflow-mcp"]
Install MaskFlow PII proxy MCP in Gemini CLI
~/.gemini/settings.json
{
"mcpServers": {
"mcp": {
"command": "uvx",
"args": [
"maskflow-mcp"
]
}
}
}Automated checks
Ran Nov 14, 2026Full report →Not verified yet. A server needs a score of 80, no serious finding, and enough data for us to check. How checks work
- Source repository linked and reachablemaskflow/maskflow is public and reachablegithub.com/maskflow/maskflow ↗Pass
- Package names this repository as its sourceNot checked
- Build provenance (Sigstore attestation)Sigstore attestation for maskflow-mcppypi.org/project/maskflow-mcp/ ↗Pass
- Open source license (OSI)MITspdx.org/licenses/MIT.html ↗Pass
- Commit or release in the last yearLast commit or release 2026-11-01github.com/maskflow/maskflow ↗Pass
- OpenSSF ScorecardNot checked
- Package name not close to a popular packageNo popular package one edit away from maskflow-mcpPass
- No critical advisory in the package or its dependenciesCritical advisory: GHSA-vv7q-7jx5-f767osv.dev/vulnerability/GHSA-vv7q-7jx5-f767 ↗Finding
- No hidden instructions to the model0 tool descriptions and the README read; no override phrases, credential paths or hidden charactersPass
- Destructive tools are labelledNot checked
- Remote endpoint answers the MCP handshakeNot checked
README
View on GitHubmaskflow-mcp
A Model Context Protocol proxy that
wraps any MCP server and keeps PII out of your agent's tool traffic. It
masks PII in outbound tools/call arguments before they reach the backend
tool, and restores the originals in the results, with placeholders that
stay consistent for the whole agent run.
Agents routinely pass user PII (names, emails, PAN, Aadhaar, phone numbers) straight into third-party MCP servers as tool arguments. This proxy is a drop-in shim that stops the real values at the boundary. It runs MaskFlow's detection engine, so the Indian identifiers (Aadhaar, PAN, GSTIN, UPI, IFSC, ABHA, Indian names / addresses) are covered alongside the generic PII.
MIT, no gates, no telemetry.
Install
pip install maskflow-mcp
# or, no install:
uvx maskflow-mcp stdio --backend "npx -y @modelcontextprotocol/server-github"
Pulls fastmcp (the 2.x line, which does not bundle LLM vendor SDKs). The
first detection run downloads a small spaCy model; pass --patterns-only
to skip it.
Use it
stdio (Claude Desktop, most agents)
Point the agent at maskflow-mcp and give it the real server as --backend:
// claude_desktop_config.json
{
"mcpServers": {
"github": {
"command": "maskflow-mcp",
"args": ["stdio", "--backend", "npx -y @modelcontextprotocol/server-github",
"--pass-env", "GITHUB_TOKEN"]
}
}
}
Or wrap a server already defined in a config file:
maskflow-mcp stdio --config ./claude_desktop_config.json --backend-name github
HTTP
maskflow-mcp http --backend https://example.com/mcp --host 127.0.0.1 --port 9000
Options
| Flag | Default | Meaning |
|---|---|---|
--backend |
– | Backend command line, or a URL |
--config / --backend-name |
– | Read the backend from a Claude-Desktop-style JSON file |
--pass-env VAR |
– | Forward an env var to a stdio backend (repeatable) |
--min-confidence |
0.5 |
Detection threshold |
--patterns-only |
off | Skip the spaCy NER pass (faster; drops bare-name / address detection) |
--mask-tool-results |
off | Also mask PII the tool introduced in its result, not just unmask placeholders it echoed |
--session-ttl |
3600 |
Lifetime of a per-connection session |
What is masked
tools/call arguments are walked (string and numeric values only, keys
never) and masked through the connection's session. The result's text and
structured content is unmasked, restoring placeholders the tool echoed. By
default raw PII that the tool adds to a result passes through untouched;
--mask-tool-results masks that too, so the agent never sees it.
tools/list, prompts/*, and resources/* pass through unchanged
(resource content masking is not on by default).
PII safety
The token-to-value map lives in memory per connection and is never logged.
Only masked values cross the wire to the backend. See docs/mcp.md in the
MaskFlow repo for the design.
MaskFlow PII proxy MCP questions
How do I add MaskFlow PII proxy MCP to Claude Code?
Run claude mcp add mcp -- uvx maskflow-mcp in your terminal. Add --scope user to make it available in every project.
How do I add MaskFlow PII proxy MCP to Cursor?
Open ~/.cursor/mcp.json and add the server under mcpServers, using the Cursor config shown in the install section above.
What kind of PII does this proxy detect?
It detects generic PII like names, emails, and phone numbers, as well as specific Indian identifiers such as Aadhaar, PAN, GSTIN, UPI, IFSC, ABHA, and Indian names or addresses.
Is my sensitive data logged?
No, the mapping between tokens and original values is stored in memory for each connection and is never logged.
Can I skip the heavy NLP detection for faster performance?
Yes, you can use the --patterns-only flag to skip the spaCy NER pass, though this will reduce detection for bare names and addresses.