Token导航 LogoToken导航TokenDH.com
anonymcp (Frankkyazze9) logo
安全风控stdio官方级别未说明来源级核验

anonymcp (Frankkyazze9)

MCP Server

AnonyMCP是一个可组合的数据治理层,提供PII检测、匿名化、分类和审计日志功能,适用于任何AI工作流程。

工具数

6

提示词数

0

GitHub Stars

2

资源数

0
PythonClaude安全Claude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

frankkyazze9

提供方

frankkyazze9

最后核验

2026/5/17 20:21

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

uv run anonymcp

详细介绍

AnonyMCP

Data governance as a composable MCP layer.

PII detection, anonymization, classification, and audit logging for any AI workflow.

______________________________________________________________________

为什么存在

AI没有合规层。不是真的。

每当LLM读取文档、处理客户数据或生成摘要时,PII都可能在不知不觉中泄露。今天的治理是事后才想到的:最后才加上,由没有人阅读的政策文件强制执行,并依赖于人类捕捉机器错过的东西。如果你在GRC呆过一段时间,你就知道这个故事是如何结束的。

AnonyMCP将治理作为一个可组合的组件直接嵌入到AI工作流中 主控程序 服务器。而不是在事后问“我们编辑了吗?”,每一段文本都变得可分类、可审计和可保护 *之前* 它曾经达到一个模型。

这不仅仅是一个PII洗涤器。它是一个策略驱动的治理引擎,具有可配置的敏感级别、操作员规则、实时警报和完整的审计跟踪。合规团队、法律和工程部门最终可以查看同一个配置文件,并就发生的事情达成一致。

目标很简单:让负责任的数据处理成为阻力最小的路径。

为什么选择MCP层?

PII库存在。Presidio本身是坚实的。但是,当你的AI堆栈是五个服务、三个团队和一个没有人完全理解的RAG管道时,存储在仓库中的库并没有帮助。MCP为您提供了一个单一的治理检查点,任何AI工作流都可以在没有自定义集成的情况下调用该检查点。Claude Desktop、LangChain代理、内部工具,MCP可以使用它。您无需修改现有代码。您添加了一个工具调用。

这种可组合性是关键。治理不再是每个团队编写自己的PII处理(或者更有可能的是,不编写),而是成为一个共享服务,有一个策略文件、一个审计跟踪和一个地方来回答“这些数据发生了什么?”

用例

  • LLM前筛查 -在PII进入模型上下文窗口之前,从用户输入中删除PII
  • LLM后过滤 -捕获PII——生成的响应中的模型泄漏
  • RAG管道治理 -按敏感度级别对检索到的文档进行分类和编辑
  • CI/CD门 -部署前扫描提示模板以查找硬编码的PII
  • 监管证据 -将审计日志导出为合规性工件,而不是编写无人阅读的策略文档

现实世界场景 下面详细介绍了企业将如何实际部署它。

______________________________________________________________________

特性

  • 检测 -使用置信度评分识别50多种PII实体类型(电子邮件、SSN、信用卡、姓名、医疗记录等)
  • 匿名化 -使用可配置的每个实体运算符替换、编辑、屏蔽、哈希或加密PII
  • 分类 -将文本分类为 PUBLIC / INTERNAL / CONFIDENTIAL / RESTRICTED
  • 审计 -使用导出器(JSONL文件、stdout、webhook)对每个治理操作进行结构化日志记录
  • 策略驱动 -基于YAML的治理策略,具有每个实体的运算符规则和警报阈值
  • MCP本地 -适用于任何MCP客户端:Claude Desktop、定制代理、RAG管道或您自己的工具

______________________________________________________________________

建筑

______________________________________________________________________

快速入门(本地/开发)

先决条件

安装

git clone https://github.com/frankkyazze9/anonymcp.git
cd anonymcp
uv sync          # installs all deps including the spaCy model

探索CLI

anonymcp --help

HTTP服务器(用于管道和集成)

# Start the server
anonymcp --transport streamable-http --port 8100

# Verify it's running
curl http://localhost:8100/health
# → {"status":"ok","policy":"default","policy_version":"1.0"}

Claude Desktop(用于原型制作)

添加到您的 claude_desktop_config.json:

{
  "mcpServers": {
    "anonymcp": {
      "command": "uv",
      "args": ["--directory", "/path/to/anonymcp", "run", "anonymcp"]
    }
  }
}

重新启动克劳德桌面。您将看到6个新工具。

______________________________________________________________________

现实世界场景

这些不是假设。AnonyMCP就是为这些部署而设计的。

健康保险支持聊天机器人

一家中型健康保险公司有一个基于LLM的客户支持聊天机器人。成员键入消息,如“我对程序代码99213的索赔被拒绝,我的SSN是452-29-1098,我的成员ID是HX-8827431,你能检查状态吗?”聊天机器人将其输入RAG管道,该管道从索赔数据库和保单文件中提取。

问题。 他们的合规团队标记了原始成员消息,包括SSN、诊断代码和成员ID,这些消息未经编辑就进入了LLM上下文窗口。根据HIPAA,如果LLM提供商记录或保留了输入,则这是一个可报告的风险敞口。法律团队希望得到证据,证明PII是在模型推理之前而不是之后被剥离的。

实施。 AnonyMCP在Kubernetes集群中作为sidecar运行,使用 streamable-http 使用mTLS(他们的基础设施已经使用基于证书的服务网格认证)。LangChain编排层在LLM调用之前有一个新步骤:它将原始用户消息发送到 scan_and_protect响应返回时,SSN已编辑,成员ID替换为占位符,分类为 CONFIDENTIALLLM看到干净的文本。编排层单独使用原始成员ID查询索赔数据库,因此查找仍然有效。

管道代理获得 read-角色API密钥。合规团队获得 admin-角色键并运行每周脚本调用 get_audit_log 过滤到 classification=CONFIDENTIAL 为其HIPAA合规粘合剂提供证据。

基于人工智能摘要的法律文件审查

一家制造公司的公司法律部门使用内部人工智能工具来汇总合同、雇佣协议和诉讼文件。律师上传PDF文件,系统提取文本,法学硕士生成条款摘要和风险标志。每天大约有40名律师和律师助理使用它。

问题。 雇佣协议包含员工姓名、工资、家庭住址,有时还包括医疗住宿细节。诉讼文件包含证人姓名、证词内容和保密协议下的财务数据。总法律顾问不希望这些信息流向内部托管的法学硕士,即使没有分类和处理记录。他们还需要根据敏感性进行不同的处理:公共合同样板可以直接通过,但员工健康信息需要完全编辑。

实施。 AnonyMCP作为Docker Compose服务在法律团队的内部服务器上运行。不需要TLS,因为它已打开 127.0.0.1 在公司VPN之后,但他们启用API密钥验证,因为服务器承载其他服务。文档管道调用 classify_sensitivity 首先在每个提取的文本块上。块分类为 PUBLICINTERNAL 按原样通过LLM。 CONFIDENTIAL 大块通过 anonymize_text,它取代了名字,掩盖了财务数字。 RESTRICTED 块(例如,包含医疗设施)被完全阻止:实体类型被记录下来,但文本永远不会到达模型。

YAML策略文件由法律部门和IT部门共同编写。法律部门定义了哪些实体类型映射到哪些敏感层(他们添加了 SALARYMEDICAL_CONDITIONHIGH 列表)。IT管理部署。当策略发生变化时,法律部门会编辑YAML,IT部门会滚动部署,审计日志会捕获具有新旧版本号的策略更改事件。

基于AI生成销售洞察的CRM平台

一家B2B SaaS公司销售CRM平台。他们推出了“AI Insights”功能:该系统分析通话记录、电子邮件线程和交易记录,然后生成交易风险评分、下一步建议和情绪摘要。该功能使用外部LLM API。

问题。 他们的CRM数据包含来自客户客户的个人身份信息:CRM中的最终联系人。姓名、电话号码、电子邮件地址,有时还有“与首席财务官交谈时,他提到他妻子的健康问题正在影响时间表”等注释。企业前景(银行、医疗保健公司)在安全审查期间提出了尖锐的问题:“我们的CRM数据是否会发送给第三方LLM?有哪些个人身份信息控制措施?你能证明吗?”如果没有具体的答案,交易就会停滞不前。

实施。 AnonyMCP在应用程序负载平衡器后面的AWS基础架构中作为共享服务运行。TLS终止于ALB,ALB和AnonyMCP实例之间的mTLS。两个副本可用。每次AI Insights功能处理CRM记录时,文本都会通过 scan_and_protect 在离开它们的基础设施去往外部LLM API之前。治理策略针对其用例进行了调整: PERSONPHONE_NUMBER 用通用令牌替换, EMAIL_ADDRESS 戴上口罩,任何与健康相关的东西都会被完全编辑。LLM仍然有足够的背景来生成有用的见解(“与首席财务官交谈,\[已编辑\]正在影响时间表”足以标记交易风险),但实际的PII从未越过第三方提供商。

业务解锁是审计跟踪。当企业潜在客户的安全团队发送他们的供应商问卷,询问“描述您对AI功能的数据处理”时,产品团队会指向实际的审计日志,显示每个LLM调用都是通过治理层预处理的,包括实体计数、分类级别和策略版本。这使得为期三周的安全审查变成了一项检查。他们还在应用程序中展示了审计数据的轻量级版本,这是一个仪表板,显示CRM管理员在他们的帐户中检测到并匿名化了多少PII实体,这成为了一个卖点,而不是一种负担。

______________________________________________________________________

企业部署

老实说:生产AI治理不在Claude Desktop上运行。以下是AnonyMCP如何融入实际基础设施。

HTTP服务(最常见)

将AnonyMCP作为独立的HTTP服务运行。你的AI编排层(LangChain、LlamaIdex、自定义管道等)像其他微服务一样通过网络调用它。

# With TLS and auth (production)
ANONYMCP_TRANSPORT=streamable-http \
ANONYMCP_TLS_CERTFILE=/etc/ssl/certs/anonymcp.pem \
ANONYMCP_TLS_KEYFILE=/etc/ssl/private/anonymcp-key.pem \
ANONYMCP_REQUIRE_AUTH=true \
ANONYMCP_API_KEYS=your-secret-key \
uv run anonymcp

# Docker
cd docker && docker compose up --build

它是一个无状态的HTTP服务器,因此横向扩展很简单。将其放在负载均衡器或服务网格后面,并将MCP客户端SDK指向 https://anonymcp-service:8100/mcp.

Kubernetes/Helm

在集群中部署为sidecar或独立服务:

# k8s deployment (simplified)
apiVersion: apps/v1
kind: Deployment
metadata:
  name: anonymcp
spec:
  replicas: 2
  template:
    spec:
      containers:
        - name: anonymcp
          image: anonymcp:latest
          ports:
            - containerPort: 8100
          env:
            - name: ANONYMCP_TRANSPORT
              value: "streamable-http"
            - name: ANONYMCP_POLICY_PATH
              value: "/config/policy.yaml"
          volumeMounts:
            - name: policy-config
              mountPath: /config
      volumes:
        - name: policy-config
          configMap:
            name: anonymcp-policy

将您的治理策略存储在ConfigMap或Secret中。当策略更改时,滚动部署。通过热交换 manage_policy 该工具也可以使用,但GitOps在审计方面更干净。

Python SDK集成

如果MCP觉得对您的用例来说过于苛刻,您可以直接导入引擎:

from anonymcp.engine.detector import TextDetector
from anonymcp.engine.anonymizer import TextAnonymizer
from anonymcp.engine.classifier import TextClassifier
from anonymcp.policy.engine import PolicyEngine

policy_engine = PolicyEngine.from_file("policies/default.yaml")
detector = TextDetector()
anonymizer = TextAnonymizer(policy=policy_engine.policy)
classifier = TextClassifier(policy_engine=policy_engine)

# Use in your pipeline
result = detector.detect("Customer SSN is 219-09-9999")
protected = anonymizer.anonymize(result.raw_results)

当您在现有的Python服务中嵌入治理检查并且不需要MCP协议层时,这很有用。

CI/CD管道闸门

运行AnonyMCP作为部署前检查,在发货前扫描提示、模板或LLM输出:

# In your CI pipeline
echo "$PROMPT_TEMPLATE" | uv run python -c "
from anonymcp.engine.detector import TextDetector
import sys
detector = TextDetector()
result = detector.detect(sys.stdin.read())
if result.entities_found > 0:
    print(f'BLOCKED: {result.entities_found} PII entities found')
    sys.exit(1)
print('CLEAN')
"

______________________________________________________________________

安全

通过网络以明文形式发送PII的治理工具比无用还要糟糕。这是一种责任。AnonyMCP内置TLS和API密钥身份验证,因此默认值是安全的,任何缺口都是实现者的配置问题,而不是我们的配置问题。

TLS(传输加密)

提供证书和密钥路径。AnonyMCP通过uvicorn自动配置HTTPS:

ANONYMCP_TRANSPORT=streamable-http \
ANONYMCP_TLS_CERTFILE=/etc/ssl/certs/anonymcp.pem \
ANONYMCP_TLS_KEYFILE=/etc/ssl/private/anonymcp-key.pem \
uv run anonymcp

如果绑定到网络接口(0.0.0.0)如果未配置TLS,AnonyMCP会记录警告。仅本地主机部署(127.0.0.1)跳过警告,因为交通永远不会离开盒子。

双向TLS(mTLS)

对于需要验证的零信任环境 *客户端* 也:

ANONYMCP_TLS_CA_CERTS=/etc/ssl/certs/client-ca.pem

这将启用客户端证书验证。只有出示由CA签名的证书的客户端才能连接。

API密钥验证

TLS对电线进行加密。身份验证控制谁可以进入:

ANONYMCP_REQUIRE_AUTH=true
ANONYMCP_API_KEYS=pipeline-key:read,admin-key:admin

每个HTTP请求都必须包含 Authorization: Bearer .密钥以恒定时间进行比较,以防止定时攻击。丢失或无效的密钥将在审计日志中获得401/403和警告。

基于角色的访问控制

每个API键都分配了一个角色,该角色控制它可以调用哪些工具:

角色工具用例
readanalyze_text、匿名文本、分类敏感性、扫描和保护管道代理、应用程序集成
admin所有工具,包括get_audit_log和manage_policy安全团队、CI/CD、运维工具

没有角色后缀的键(例如。 my-key 而不是 my-key:read)默认为 admin 为了向后兼容性。stdio传输(Claude Desktop)始终以管理员身份运行,因为它是一个本地单用户上下文。

安全模型摘要

图层功能配置
TLS加密传输中的数据ANONYMCP_TLS_CERTFILE, ANONYMCP_TLS_KEYFILE
mTLS通过证书验证客户端身份ANONYMCP_TLS_CA_CERTS
API密钥应用程序级访问控制ANONYMCP_REQUIRE_AUTH, ANONYMCP_API_KEYS
RBAC按键角色作用域(读取与管理)中的角色标记 ANONYMCP_API_KEYS
策略引擎控制编辑的内容和方式ANONYMCP_POLICY_PATH
审计日志记录每一项治理行动ANONYMCP_AUDIT_ENABLED

stdio传输(Claude Desktop,本地开发)不需要任何这些,因为流量永远不会到达网络。

有关完整的威胁模型、强化指南和已知限制,请参阅 安全.md.

______________________________________________________________________

MCP工具

工具说明
analyze_text使用置信度分数检测和定位PII实体
anonymize_text使用可配置的运算符(替换、编校、掩码、哈希、加密)对PII进行匿名化
classify_sensitivity将文本分类为公共/内部/机密/受限
scan_and_protect在一次通话中全面检测、分类和匿名化管道
get_audit_log使用过滤器查询审计记录(操作、分类、时间范围)
manage_policy查看、列出实体类型或热交换活动治理策略

______________________________________________________________________

治理政策

策略是控制AnonyMCP如何分类、匿名和警报的YAML文件。看 policies/default.yaml 对于完整的模式。

entity_sensitivity:
  HIGH: [US_SSN, CREDIT_CARD, IBAN_CODE, US_BANK_NUMBER]
  MEDIUM: [EMAIL_ADDRESS, PHONE_NUMBER, PERSON, US_PASSPORT]
  LOW: [URL, DATE_TIME, IP_ADDRESS]

anonymization:
  HIGH:
    operator: redact
  MEDIUM:
    operator: replace
    params:
      new_value: "[{entity_type}]"
  LOW:
    operator: mask
    params:
      masking_char: "*"
      chars_to_mask: 4
      from_end: false

______________________________________________________________________

配置

变量默认值描述
ANONYMCP_TRANSPORTstdiostdiostreamable-http
ANONYMCP_POLICY_PATH./policies/default.yaml治理政策之路
ANONYMCP_SCORE_THRESHOLD0.4最低PII检测置信度
ANONYMCP_AUDIT_ENABLEDtrue启用审核日志记录
ANONYMCP_HOST0.0.0.0HTTP服务器绑定地址
ANONYMCP_PORT8100HTTP服务器端口
ANONYMCP_TLS_CERTFILEnoneTLS证书的路径(启用HTTPS)
ANONYMCP_TLS_KEYFILEnoneTLS私钥的路径
ANONYMCP_TLS_CA_CERTSnoneCA证书用于双向TLS(客户端验证)
ANONYMCP_REQUIRE_AUTHfalseHTTP请求需要API密钥
ANONYMCP_API_KEYSnone逗号分隔的有效API密钥

______________________________________________________________________

这是给谁的?

法律和合规团队

每个检测、分类和匿名操作都会记录时间戳、实体类型、分类级别和策略版本。这是你的证据线索。治理策略是在人类可读的YAML中定义的,因此法律部门可以在不要求工程部门翻译的情况下审查和批准规则。分类级别(从公开到限制)直接映射到您已经用于GDPR、HIPAA和PCI-DSS的标准数据分类框架。

面向首席信息安全官和安全领导者

AnonyMCP是一种安全控制,位于数据路径中并执行敏感策略 *之前* 数据到达LLM或下游系统。警报规则在高严重性分类或实体计数阈值时触发,并通过webhooks推送到您现有的事件响应。 完全自我托管。没有数据离开您的基础设施。 策略引擎支持热交换,因此无需重新启动服务即可更新治理规则。

面向隐私工程师和开发人员

插入MCP服务器,您可以在几分钟内连接到任何AI工作流。将微软Presidio(基于NLP的行业标准PII引擎)包裹在一个干净的工具界面后面,该界面有六个可组合的操作。使用 scan_and_protect 对于单调用管道或链 analyze_text 然后 classify_sensitivity 然后 anonymize_text 用于粒度控制。自定义识别器、每个实体运算符覆盖和YAML策略文件为您提供了完全的灵活性,而无需触及核心代码。

______________________________________________________________________

发展

# Install dev dependencies
uv sync --dev

# Run tests (67 tests)
uv run pytest tests/ -v

# Lint
uv run ruff check src/ tests/

# Type check
uv run mypy src/anonymcp/

______________________________________________________________________

路线图

  • \[\]多语言PII检测
  • \[\]图像和文档PII编辑(OCR管道)
  • \[\]结构化数据扫描(JSON、CSV、数据库)
  • \[\]合规预设政策(HIPAA、PCI-DSS、GDPR)
  • \[\]普罗米修斯指标和OpenTetry导出器
  • \[\]自定义识别器插件系统
  • \[\]用于审计日志可视化的Web仪表板
  • \[\]大文档集的批处理模式

______________________________________________________________________

贡献

欢迎捐款。先打开一个问题,讨论你想改变什么。看 贡献.md 作为指导方针。

许可证

Apache 2.0。看 许可证.

______________________________________________________________________

Built by Frank Kyazze

目录标签

目录标签

PythonClaude安全数据隐私本地部署AI治理合规审计PII检测匿名化

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

token

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

6

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiotoken部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP