🚀 安全强化版 Chrome MCP 服务器
专为人工智能代理提供企业级 Chrome 自动化,并具备合规日志记录功能
企业特性 • 合规日志记录 • 安全特性 • 快速开始 • Docker 部署
✨ 主要特性
企业适用
专为安全、合规和可审计性至关重要的企业环境而设计。
| 需求 |
解决方案 |
| 审计跟踪 |
具有篡改检测功能的哈希链审计日志 |
| SIEM 集成 |
CEF(Splunk、ArcSight、QRadar)+ Syslog(RFC 5424) |
| 凭证安全 |
后量子加密(ML-KEM-768 + ChaCha20-Poly1305) |
| 数据保护 |
自动对截图和日志中的个人身份信息进行脱敏处理 |
| 会话控制 |
可配置的超时时间、自动过期、无活动锁定 |
| 访问控制 |
基于令牌的身份验证,具备暴力破解防护功能 |
| 合规日志记录 |
符合 OWASP 标准的事件类别、关联 ID |
合规标准支持
| 标准 |
覆盖范围 |
| SOC 2 Type II |
审计日志、访问控制、静态数据加密 |
| GDPR |
数据最小化、数据删除权、审计跟踪 |
| PCI DSS |
凭证保护、访问日志记录、加密 |
| HIPAA |
审计控制、访问管理、加密 |
📦 安装指南
一键设置(推荐)
Linux / macOS:
git clone https://github.com/Pantheon-Security/chrome-mcp-secure.git
cd chrome-mcp-secure
./setup.sh
Windows(PowerShell):
git clone https://github.com/Pantheon-Security/chrome-mcp-secure.git
cd chrome-mcp-secure
.\setup.ps1
此操作将完成以下步骤:
- 安装依赖项并构建项目
- 向 Claude Code 注册 MCP 服务器
- 启动具有远程调试功能的 Chrome
- 创建一个隔离的 Chrome 配置文件
手动设置
npm install && npm run build
claude mcp add chrome-mcp-secure --scope user -- node /path/to/chrome-mcp-secure/dist/index.js
google-chrome --remote-debugging-port=9222 --user-data-dir=~/.chrome-mcp-profile
特定平台注意事项
| 平台 |
设置脚本 |
Chrome 配置文件位置 |
| Linux |
./setup.sh |
~/.chrome-mcp-profile |
| macOS |
./setup.sh |
~/.chrome-mcp-profile |
| Windows |
.\setup.ps1 |
%USERPROFILE%\.chrome-mcp-profile |
💻 使用示例
快速开始
1. 启动具有调试功能的 Chrome
./setup.sh --start-chrome
2. 在 Claude Code 中使用
"Check Chrome connection with health tool"
"Navigate to https://example.com"
"Take a screenshot"
3. 安全登录流程
"Store a credential for my GitHub account"
"Navigate to github.com/login"
"Use secure_login with the stored credential"
可用工具
浏览器自动化工具(15 个)
| 工具 |
描述 |
health |
检查 Chrome 连接和版本 |
navigate |
导航到指定 URL |
get_tabs |
列出所有 Chrome 标签页 |
click_element |
通过 CSS 选择器点击元素 |
click |
在指定坐标处点击 |
type |
在光标处输入文本 |
get_text |
从元素中提取文本 |
get_page_info |
获取 URL、标题、交互式元素 |
get_page_state |
获取滚动位置、视口大小 |
scroll |
滚动到指定坐标 |
screenshot |
捕获页面截图 |
wait_for_element |
等待元素出现 |
evaluate |
执行 JavaScript 代码 |
fill |
填充表单字段 |
bypass_cert_and_navigate |
绕过 HTTPS 证书验证并导航 |
安全凭证工具(7 个)
| 工具 |
描述 |
store_credential |
存储加密的登录凭证 |
list_credentials |
列出存储的凭证(不显示密码) |
get_credential |
获取凭证元数据 |
delete_credential |
删除存储的凭证 |
update_credential |
更新现有凭证 |
secure_login |
使用存储的凭证进行安全登录 |
get_vault_status |
检查凭证库的加密状态 |
安全凭证使用
存储凭证
"Store a credential for my Google account"
"Name: Google Work"
"Type: google"
"Email: me@example.com"
"Password: mypassword123"
"Domain: google.com"
使用凭证登录
"Navigate to https://accounts.google.com"
"Use secure_login with the stored credential"
secure_login 工具将执行以下操作:
- 从凭证库中检索并解密凭证
- 自动填充用户名/电子邮件字段
- 自动填充密码字段
- 点击提交按钮
- 使用后自动从内存中清除凭证
📚 详细文档
合规日志记录
支持以行业标准格式进行 SIEM 就绪日志记录,记录每个工具执行、凭证访问和安全事件。
输出格式
| 格式 |
使用场景 |
示例 |
| CEF |
Splunk、ArcSight、QRadar |
CEF:0|Pantheon-Security|Chrome-MCP-Secure|2.3.0|... |
| Syslog |
集中式日志记录(RFC 5424) |
<134>1 2025-12-16T10:30:00Z ... |
| JSONL |
Elastic、自定义管道 |
{"timestamp":"...","category":"audit",...} |
事件类别(符合 OWASP 标准)
authentication - 登录尝试、会话创建
authorization - 访问控制决策
credential - 凭证库操作(存储、检索、删除)
audit - 带有时间记录的工具执行
security - 速率限制、注入尝试、异常情况
data_access - 敏感数据检索
快速配置
COMPLIANCE_LOG_FORMAT=cef
COMPLIANCE_LOG_DIR=./logs/compliance
SYSLOG_HOST=siem.company.com
SYSLOG_PORT=514
示例 CEF 输出
CEF:0|Pantheon-Security|Chrome-MCP-Secure|2.3.0|audit:tool:navigate|tool:navigate|3|rt=1702732800000 outcome=success msg=Tool navigate executed: success request=https://internal.company.com cn1=1702732800-abc123 cn1Label=correlationId
Docker 部署
推荐用于生产环境。
部署步骤
git clone https://github.com/Pantheon-Security/chrome-mcp-secure.git
cd chrome-mcp-secure
docker-compose up -d
生产配置
cp env.example .env
vim .env
docker-compose up -d
关键环境变量
COMPLIANCE_LOG_FORMAT=cef
SYSLOG_HOST=siem.company.com
SYSLOG_PORT=514
CHROME_MCP_ENCRYPTION_KEY=$(openssl rand -base64 32)
CHROME_MCP_SESSION_MAX_LIFETIME=28800000
CHROME_MCP_SESSION_INACTIVITY=1800000
日志收集
日志将以所选格式写入 ./logs/compliance/。
tail -f logs/compliance/compliance-2025-12-16.cef
docker-compose logs chrome-mcp | nc -u siem.company.com 514
配置
环境变量
CHROME_HOST=localhost
CHROME_PORT=9222
CHROME_PROFILE_DIR=~/.chrome-mcp-profile
CHROME_MCP_ENCRYPTION_KEY=<base64-32-bytes>
CHROME_MCP_USE_POST_QUANTUM=true
CHROME_MCP_CONFIG_DIR=~/.chrome-mcp
CHROME_MCP_CREDENTIAL_TTL=300000
LOG_LEVEL=info
AUDIT_LOGGING=true
生成强加密密钥
openssl rand -base64 32
完整的配置参考请见 SECURITY.md。
安全架构
加密
┌─────────────────────────────────────┐
│ ML-KEM-768 Key Pair │
│ (Post-Quantum Key Encapsulation) │
└─────────────────┬───────────────────┘
│
┌─────────────────┴───────────────────┐
│ ChaCha20-Poly1305 │
│ (Symmetric AEAD Encryption) │
└─────────────────┬───────────────────┘
│
┌─────────────────┴───────────────────┐
│ Encrypted Credential Files │
│ ~/.chrome-mcp/credentials/*.pqenc │
└─────────────────────────────────────┘
内存保护
- SecureCredential 类:在 TTL(默认 5 分钟)后自动清除凭证
- 零填充缓冲区:随机覆盖 + 零填充,防止内存转储
- 无凭证日志记录:自动屏蔽敏感字段名称
为什么选择 ChaCha20-Poly1305 而非 AES-GCM?
| 属性 |
ChaCha20-Poly1305 |
AES-GCM |
| 时序攻击 |
免疫(恒定时间) |
若无 AES-NI 则易受攻击 |
| 软件速度 |
各处均快速 |
无硬件支持时较慢 |
| 复杂度 |
简单 |
复杂(GCM 模式) |
| 采用情况 |
Google、Cloudflare TLS |
传统系统 |
管理命令
./setup.sh
./setup.sh --check
./setup.sh --uninstall
./setup.sh --start-chrome
./setup.sh --stop-chrome
架构
┌─────────────┐ ┌──────────────────┐ ┌─────────────┐
│ Claude/ │────▶│ MCP Server │────▶│ Chrome │
│ AI Agent │ │ (This Fork) │ │ (CDP) │
└─────────────┘ └──────────────────┘ └─────────────┘
│
┌──────┴──────┐
│ Security │
│ Layers │
└─────────────┘
• PQ Encryption
• Credential Vault
• Memory Wipe
• Audit Logs
• Rate Limits
• Input Validation
文件结构
chrome-mcp-secure/
├── src/
│ ├── index.ts # MCP 服务器入口点
│ ├── cdp-client.ts # 持久化 CDP WebSocket 客户端
│ ├── tools.ts # 浏览器自动化工具
│ │
│ │── # Core Security (v2.1.0)
│ ├── credential-vault.ts # 加密的凭证存储
│ ├── credential-tools.ts # 凭证 MCP 工具
│ ├── crypto.ts # 后量子加密(ML-KEM-768 + ChaCha20)
│ ├── secure-memory.ts # 内存保护实用工具
│ ├── security.ts # 输入验证、速率限制
│ ├── logger.ts # 自动屏蔽的日志记录
│ ├── errors.ts # 类型化错误类
│ │
│ │── # Advanced Security Modules (v2.2.0+)
│ ├── secrets-scanner.ts # 凭证泄漏检测(25+ 模式)
│ ├── response-validator.ts # 提示注入检测
│ ├── session-manager.ts # 会话生命周期管理
│ ├── mcp-auth.ts # 基于令牌的 MCP 身份验证
│ ├── cert-pinning.ts # 敏感域名的证书固定
│ ├── screenshot-redaction.ts # 自动脱敏敏感字段
│ └── file-permissions.ts # 跨平台安全文件权限
│
├── dist/ # 编译后的 JavaScript
├── setup.sh # Linux/macOS 设置
├── setup.ps1 # Windows 设置
├── SECURITY.md # 安全文档
├── CHANGELOG.md # 版本历史
├── CLAUDE.md # Claude Code 集成指南
└── README.md
与原始版本的比较
| 特性 |
lxe/chrome-mcp |
此分支 |
| Chrome 自动化 |
✅ |
✅ |
| 持久化 WebSocket |
✅ |
✅ |
| 跨平台 |
✅ |
✅ |
| 后量子加密 |
❌ |
✅ |
| 安全凭证库 |
❌ |
✅ |
| 内存清理 |
❌ |
✅ |
| 审计日志记录 |
❌ |
✅ |
| 自动日志屏蔽 |
❌ |
✅ |
| 配置文件隔离 |
❌ |
✅ |
| 秘密扫描器 |
❌ |
✅ |
| 提示注入检测 |
❌ |
✅ |
| 会话管理 |
❌ |
✅ |
| MCP 身份验证 |
❌ |
✅ |
| 证书固定 |
❌ |
✅ |
| 截图脱敏 |
❌ |
✅ |
v2.2.x 版本新增内容
v2.2.1 - 跨平台文件权限
- 所有文件操作使用集中式
file-permissions.ts
- 通过
icacls 提供适当的 Windows ACL 支持
- 在 Unix 上保持一致的 0o700/0o600 权限
v2.2.0 - 高级安全模块
六个新的安全模块,总计 3000+ 行 安全强化代码:
- 秘密扫描器 - 使用 TruffleHog、GitLeaks 和 MEDUSA 的模式检测页面内容中的泄漏凭证
- 响应验证器 - 阻止抓取内容中的提示注入攻击
- 会话管理器 - 在可配置的超时时间后自动过期凭证会话
- MCP 身份验证 - 使用基于令牌的身份验证保护 MCP 服务器本身
- 证书固定 - 验证敏感域名的 TLS 证书
- 截图脱敏 - 在截图前覆盖敏感字段
完整的版本历史请见 CHANGELOG.md。
故障排除
Chrome 无法访问
curl http://localhost:9222/json
./setup.sh --start-chrome
凭证解密失败
- 检查是否更换了机器(机器派生密钥将失效)
- 将
CHROME_MCP_ENCRYPTION_KEY 设置为用于加密的相同密钥
- 如果密钥丢失,可能需要重新存储凭证
元素未找到
使用 get_page_info 查看可用元素
使用 wait_for_element 处理动态内容
开发
npm install
npm run dev
npm run typecheck
npm run build
npm start
报告漏洞
如果发现安全问题,请 不要公开在 GitHub 上创建问题。
请发送电子邮件至:support@pantheonsecurity.io
致谢
许可证
MIT - 与原始版本相同。