关于 MCP Security Sanitizer
MCP Security Sanitizer 是基于本地正则表达式的 MCP 服务和聊天客户端,可在消息发送给 Groq 前进行清理。它会遮盖选定的密钥和个人信息模式,但无法保证识别所有敏感内容。
主要功能
- 01遮盖常见 API 密钥和秘密
- 02隐藏邮箱及北美常见电话号码
- 03统计识别出的敏感模式
- 04每条非空消息发送前调用清理工具
- 05日志不记录工具内容
适用场景
- 01发送聊天提示前遮盖测试凭据
- 02从聊天输入中移除常见联系信息
- 03统计文本中识别出的风险
MCP 相关
本地 SSE MCP 服务提供遮盖常见秘密和个人信息、统计已识别风险的工具。客户端在将每条非空消息发送给 Groq 前调用两个遮盖工具。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://mcp-security-sanitizer-server.onrender.com/sseclaude mcp add --transport sse saurabhdrh-mcp-security-sanitizer https://mcp-security-sanitizer-server.onrender.com/sse{"mcpServers":{"saurabhdrh-mcp-security-sanitizer":{"type":"sse","url":"https://mcp-security-sanitizer-server.onrender.com/sse"}}}在 Cursor 中打开{"servers":{"saurabhdrh-mcp-security-sanitizer":{"type":"sse","url":"https://mcp-security-sanitizer-server.onrender.com/sse"}}}在 VS Code 中打开{"mcpServers":{"saurabhdrh-mcp-security-sanitizer":{"type":"sse","url":"https://mcp-security-sanitizer-server.onrender.com/sse"}}}{"mcpServers":{"saurabhdrh-mcp-security-sanitizer":{"serverUrl":"https://mcp-security-sanitizer-server.onrender.com/sse"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
MCP 安全清理器
一个小型 MCP 服务和交互式 LangChain/Groq 聊天机器人。服务提供基于本地正则表达式的工具,用于遮蔽常见机密和个人身份信息(PII);客户端会在发送每条消息给大模型前进行清理。
重要限制: 正则匹配只能识别此处实现的模式,无法保证检测出所有机密或 PII 值。客户端保证在将每条非空用户消息传给 Groq 前,都会调用两个已配置的清理工具;系统提示词只是纵深防御措施,而非强制执行机制。除非添加适当的控制措施,并验证检测覆盖范围适用于你的环境,否则请勿发送受监管或高度敏感的数据。
架构
User input
|
v
Python client --MCP/SSE--> local regex scrubbers
| 1. mask_api_keys_and_secrets
| 2. mask_pii_data
v
Sanitized text --> LangChain agent --> Groq
清理过程使用 MCP 服务中的本地 Python 正则表达式,不消耗任何 LLM 令牌。客户端会在调用 Agent 前同步调用清理工具,因此在此聊天流程中,原始输入不会发送给 Groq。MCP 传输仍然属于网络边界;此配置将服务绑定到环回地址(127.0.0.1),旨在用于本地开发。
日志拦截器会打印工具名称和参数字段名称,但会隐去所有参数和结果内容,因此不会记录未清理的输入或可能敏感的清理输出。
工具
| 工具 | 行为 |
|---|---|
mask_api_keys_and_secrets(text) | 将 OpenAI 风格的 sk-... 密钥、Bearer 令牌,以及常见的命名密钥/机密/密码/令牌赋值遮蔽为 [REDACTED_SECRET]。 |
mask_pii_data(text) | 将电子邮件地址遮蔽为 [REDACTED_EMAIL],并将常见的北美电话号码格式遮蔽为 [REDACTED_PHONE]。 |
audit_text_for_risks(text) | 返回已识别的机密、电子邮件地址和电话号码数量。 |
要求
- Python 3.11+
uv- Groq API 密钥
设置
在项目目录中解析依赖项、创建项目本地的 .venv,并写入或更新 uv.lock:
uv sync
使用 uv run 时,无需激活 .venv;它会自动选择项目环境。
在项目目录中(与 pyproject.toml 同级)创建 .env 文件:
GROQ_API_KEY=your_groq_api_key
GROQ_MODEL=openai/gpt-oss-120b
请勿将 .env 纳入版本控制。客户端启动时会加载此文件,并在连接 Groq 前检查是否已设置 GROQ_API_KEY。放在 .venv 内的 .env 也会被识别为备用位置,但推荐放在项目目录中,因为 .venv 是生成目录,可能会被删除并重新创建。GROQ_MODEL 是可选项;如果未设置,客户端会使用 openai/gpt-oss-120b。如果 Groq 提示模型不可用,请将 GROQ_MODEL 设置为你的账户已启用的模型 ID。API 密钥由 ChatGroq 使用,不会发送给 MCP 服务。
运行
在一个终端中启动 MCP 服务:
uv run server.py
服务使用 SSE 传输监听 http://127.0.0.1:8000,MCP 端点为 /sse。
服务启动截图
下图展示了服务启动后终端的预期状态。这是生成的示例,而非直接截取自你的机器;进程 ID 和日志格式可能因 FastMCP/Uvicorn 版本而异。
在第二个终端中启动交互式聊天机器人:
uv run client.py
或者,在每个终端中激活项目环境并直接运行 Python。例如,在 Windows PowerShell 中:
.\.venv\Scripts\Activate.ps1
python server.py
在第二个已激活的终端中:
.\.venv\Scripts\Activate.ps1
python client.py
输入 exit 或 quit 结束聊天。
可尝试的示例提示词
服务器和客户端都在运行后,将以下任一提示词粘贴到 客户端中。以下所有值均为合成测试数据;测试时请勿使用真实凭据 或个人信息。
电子邮件和电话
Write a friendly appointment reminder for [email protected] and ask them to
call (415) 555-0134 if they need to reschedule.
传递给 Agent 的文本应将这些值替换为:
[email protected] -> [REDACTED_EMAIL]
(415) 555-0134 -> [REDACTED_PHONE]
API 密钥和命名密码
Explain why this demo credential should not be shared: sk-1234567890abcdef.
The test password is password=hunter2.
在消息发送给 Groq 之前,这两个凭据值都应替换为 [REDACTED_SECRET]。
Bearer 令牌和混合数据
Help me write a support note for [email protected]. The test phone is
212-555-0199 and the example authorization header is Bearer
abc123.def456.ghi789.
适用的工具会遮蔽电子邮件、电话号码和 Bearer 令牌。交互式客户端不会将清理后的文本打印到终端;它会记录运行了哪些工具,同时隐藏这些工具的参数和结果。上面的预期替换内容描述的是传递下去的内容,而不是控制台中显示的内容。
终端中看到的内容
在两个单独的终端中运行服务器和客户端。客户端连接到服务器后,服务器会持续运行。
终端 1 — MCP 服务(时间戳和进程 ID 各不相同):
INFO Starting MCP server 'MCP Security Sanitizer' with transport 'sse'
on http://127.0.0.1:8000/sse
INFO: Started server process [process-id]
INFO: Waiting for application startup.
INFO: Application startup complete.
终端 2 — 客户端(示例清理器调用;以下虚假值仅用于测试):
Secure assistant ready. Type 'exit' or 'quit' to stop.
You: Contact [email protected] at (415) 555-0134; test key sk-1234567890abcdef.
[MCP] Calling mask_api_keys_and_secrets (arguments: text)
[MCP] mask_api_keys_and_secrets completed; result content withheld.
[MCP] Calling mask_pii_data (arguments: text)
[MCP] mask_pii_data completed; result content withheld.
Assistant: [The assistant's reply appears here after the sanitized message is
sent to the configured Groq model.]
拦截器会有意隐藏终端中的工具参数和结果,因此 MCP 日志不会打印未清理的输入。传递给 Agent 的消息会进行以下替换:
Contact [REDACTED_EMAIL] at [REDACTED_PHONE]; test key [REDACTED_SECRET].
助手的回复取决于 Groq 模型,并非固定输出。下图展示了服务器启动和本地清理器调用。这是终端视图示例,不是原始桌面截图;清理器检查不会发起 Groq 请求。每次运行的启动时间戳和进程 ID 各不相同。
配置和生产环境注意事项
- 客户端需要这两个清理器工具。如果任一工具不可用或返回不受支持的结果,请求就会失败,而不会以未清理的形式发送。
- 服务按要求使用 SSE。对于生产部署,请根据你的环境配置身份验证、TLS、网络限制、监控和生命周期管理。
- 在依赖此服务满足合规要求之前,请更新正则表达式,并针对你所在组织实际使用的机密和 PII 格式添加测试。
uv run无需手动激活即可管理并使用项目环境。如需直接运行python server.py或python client.py,请先在该终端中激活.venv。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。