Declaw 实战指南:用 Firecracker 沙箱给 MCP 服务器穿上防弹衣
痛点:MCP 服务器的安全隐患
如果你在用 Claude Desktop、Cursor、Windsurf 或任何 MCP 客户端,你的每一条 MCP 服务器配置大概长这样:
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_..." }
}
}
}
这看起来很安全,但问题在于:MCP 服务器以子进程运行,拥有宿主机完全访问权限。没有沙箱,没有权限模型。你的 GitHub token 被明文传给了一个从 npm 安装的包,这个包可以读你硬盘上任何文件,可以访问任何网络地址。
这不是危言耸听。2026 年初 Claude Desktop Extensions 被爆出零点击 RCE 漏洞(CVSS 10/10),Cursor 也曾有 CurXecute(CVE-2025-54135,CVSS 9.8)和 MCPoison(CVE-2025-54136,CVSS 8.8)等高危漏洞。
Declaw 正是为了解决这个问题而生的开源工具——它在你的 MCP 服务器外面套一层 Firecracker 微 VM 沙箱,让每个 MCP 服务器运行在硬件隔离环境中。
Declaw 是什么?
Declaw 是一个面向 AI Agent 的安全沙箱运行时,基于 AWS 开源的 Firecracker microVM 技术。核心思想很简单:把 MCP 服务器关进一个迷你虚拟机里运行,通过硬件虚拟化实现真正的隔离。
用 Declaw 前后的对比一目了然:
// Before — MCP 直接运行,完全不受限
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_..." }
}
}
}
// After — MCP 运行在 Firecracker VM 中
{
"mcpServers": {
"github": {
"command": "declaw",
"args": [
"mcp", "--env", "GITHUB_PERSONAL_ACCESS_TOKEN",
"--network-allow", "registry.npmjs.org,api.github.com,github.com",
"--", "npx", "-y", "@modelcontextprotocol/server-github"
],
"env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_..." }
}
}
}
仅仅在命令前加上 declaw mcp,整个 MCP 服务器就被装进了一个微 VM。网络默认全部拒绝(deny-all),只有你用 --network-allow 显式允许的主机才能被访问。
快速上手
安装
Declaw CLI 有多种安装方式:
chmod +x declaw-linux-amd64 sudo mv declaw-linux-amd64 /usr/local/bin/declaw curl -fsSL https://raw.githubusercontent.com/declaw-ai/declaw-cli/main/install.sh | sh go install github.com/declaw-ai/declaw-cli/cmd/declaw@latest
安装后注册账户并登录:
declaw auth login
配置 MCP 客户端
Claude Desktop(macOS 配置文件路径 ~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"github": {
"command": "declaw",
"args": [
"mcp", "--env", "GITHUB_PERSONAL_ACCESS_TOKEN",
"--network-allow", "api.github.com,github.com",
"--", "npx", "-y", "@modelcontextprotocol/server-github"
],
"env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_..." }
}
}
}
Cursor(配置文件 ~/.cursor/mcp.json):
{
"mcpServers": {
"github": {
"command": "declaw",
"args": [
"mcp", "--env", "GITHUB_PERSONAL_ACCESS_TOKEN",
"--network-allow", "api.github.com,github.com",
"--", "npx", "-y", "@modelcontextprotocol/server-github"
],
"env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_..." }
}
}
}
Claude Code:
claude mcp add github \ -e GITHUB_PERSONAL_ACCESS_TOKEN=*** -- \ declaw mcp --env GITHUB_PERSONAL_ACCESS_TOKEN \ --network-allow api.github.com,github.com \ -- npx -y @modelcontextprotocol/server-github
核心参数说明
| 参数 | 默认值 | 说明 |
|---|---|---|
--network-allow | deny-all | 出站网络白名单(逗号分隔) |
--template | mcp-server | 沙箱模板(内置 Node.js + Python) |
--timeout | 3600 | 沙箱超时时间(默认 1 小时) |
--env KEY | — | 转发环境变量(可重复,KEY 从宿主机读,KEY=VAL 直接设值) |
--file LOCAL:REMOTE | — | 上传本地文件到沙箱(可重复) |
最关键的设计是 网络默认拒绝所有出站连接。MCP 服务器如果要连接外部 API(GitHub、Slack、Brave Search 等),必须在 --network-allow 中显式列出目标主机。这意味着即使 MCP 服务器的代码被投毒,攻击者也无法将数据外传到未授权的服务器。
进阶用法
自定义沙箱模板
默认的 mcp-server 模板包含 Node.js 和 Python,覆盖了大多数 MCP 服务器。但如果你的 MCP 服务器需要额外的系统包(如 ffmpeg、chromium、原生库),可以构建自定义模板:
echo 'FROM declaw/mcp-server:latest RUN apt-get update && apt-get install -y ffmpeg' > Dockerfile declaw template build --dockerfile Dockerfile declaw mcp --template <模板ID> -- your-server-command
编程 SDK 集成
Declaw 不仅提供 CLI,还提供了 Python、TypeScript 和 Go 的 SDK,适合在代码中直接创建和管理沙箱:
npm install @declaw/sdk
import { Sandbox } from '@declaw/sdk';
const sandbox = await Sandbox.create({
apiKey: 'your-api-key',
template: 'base',
timeout: 60,
});
// 执行命令
const result = await sandbox.commands.run('echo "Hello from a secure sandbox"');
console.log(result.stdout);
// 操作文件
await sandbox.files.write('/tmp/hello.txt', 'Hello World');
const content = await sandbox.files.read('/tmp/hello.txt');
// 清理
await sandbox.kill();
SDK 还内置了完善的安全护栏——PII 扫描(SSN、信用卡、API Key 自动脱敏)、提示注入防御、内容毒性过滤,都可以通过配置开启:
const sandbox = await Sandbox.create({
security: SecurityPolicy.from({
pii: {
enabled: true,
types: ['ssn', 'credit_card', 'email', 'phone', 'api_key'],
action: 'redact',
},
injectionDefense: {
enabled: true,
action: 'block',
threshold: 0.85,
},
}),
network: { allowOut: ['api.openai.com', 'api.anthropic.com'] },
});
完整沙箱管理命令
Declaw CLI 提供了一套完整的沙箱生命周期管理命令:
declaw sandbox create|list|info|kill # 管理沙箱 declaw sandbox exec|connect|files # 交互沙箱 declaw sandbox pause|resume # 生命周期管理 declaw template list|build|info|delete # 管理模板 declaw volume create|list|get|delete # 管理卷 declaw account info|usage|api-keys # 账户管理 declaw auth login|logout|status # 认证
所有列表和详情命令都支持 --json 参数输出机器可读格式,方便集成到 CI/CD 流水线中。
适用场景
- Claude Desktop / Cursor 用户:你的 MCP 服务器现在有了硬件级隔离,不再裸奔
- 团队共享 MCP 配置:多人共用一套配置,任何人安装了不安全的 MCP 服务器都不会影响他人的环境
- CI/CD 流水线:在自动化的 Agent 工作流中运行不可信代码时,Declaw 提供了一层可靠的安全屏障
- 安全合规:金融机构或处理敏感数据的企业,需要对 Agent 操作进行网络隔离和审计日志记录
总结
Declaw 解决了 AI Agent 生态中一个被忽视的安全问题:MCP 服务器运行在无沙箱的裸环境中。一条 declaw mcp 命令的改动,就能让你的所有 MCP 服务器运行在 Firecracker 微 VM 中,实现网络隔离、凭证保护和运行时监控。
Declaw CLI 以 Apache-2.0 协议开源,SDK 支持 Python、TypeScript、Go 三种语言,社区版提供免费额度,适合个人开发者和团队评估使用。在 AI Agent 越来越多地接入外部工具和服务的今天,给自己的 MCP 服务器加上一层沙箱保护,是个值得投入的工程实践。
相关链接