内容
Seal
**您的代理程序只需一个工具调用即可无法撤销的操作。** Seal 是一个 MCP 原生的网关,它在之前会暂停风险较高的工具调用,并具有声明式策略、关闭时的默认设置和篡改证据审计日志。
它位于您的代理程序和 MCP 服务器之间。您的代理程序代码不会改变。
```bash
npx @seal-dev/mcp-proxy --config seal.config.ts
```
无需账户,无需网络,无需信用卡。
## 为什么使用Seal
代理程序获得了生产环境的写入权限:退款、电子邮件、部署、`DELETE`。通常的解决方案是“全部批准”(速度慢,人们会停止阅读)或“完全不批准”(代理程序只是一个演示)。Seal 提供了第三种选择:代理程序独立运行,策略决定人类需要查看的少数调用。
当出现问题时证明哪些操作被批准、谁批准的以及他们究竟看到了什么。
## 工作原理
```
代理程序 ──工具/调用──> Seal 代理 ──> 策略引擎
│ ├─ 允许 → 转发
│ ├─ 拒绝 → 阻止
│ └─ 需要批准 → 暂停
│
│ 人工决定
└──────────── 审计链) ─────────>
```
在任何地方都适用: **关闭时默认拒绝。知、缺失或格式错误的输入会否决结果。超时时,拒绝。
- **仅追加审计。** 每次状态更改都会写入一个事件,其哈希值前一个事件。篡目会破坏链条,` 会说明这一点。
- **不信任上游。** 来自 MCP 服务器的工具描述是敌对输入,在人类读取之前会进行净化。
## 配置
```ts
import { defineConfig } from "@seal-dev/mcp-proxy";
export default defineConfig({
mode: "local",
upstreams: [
{
name: "stripe",
transport: "stdio",
command: "npx",
args: ["-y", "@stripe/mcp"],
policyKey: {
default: "read-only",
overrides: { create_refund: "needs-approval" },
},
},
],
});
```
策略与工具及其参数相匹配,并返回 `allow`、`deny` 或 `require_approval`。任何未匹配的请求都会被要求批准。
## 从代码中使用
如果您不通过 MCP,SDK 会控制任何函数调用:
```ts
import { createGate } from "@seal";
const gate = createGate({ apiKey: process.env.SEAL_API_KEY });
const decision = await gate.require({
action: "refund.issue",
policyKey: "refunds",
payload: { customerId, amountCents },
});
if (decision.status === "approved") await issueRefund(decision.payload);
```
## 软件包
| 软件包 | 安装 | 它是什么 |
| --------------------- | ------------------------- | ----------------------------------- |
| `@seal-dev/mcp-proxy` | `npx @seal-dev/mcp-proxy` | 网关。在本地或云端运行 |
|al-dev/sdk` | i @seal-dev/sdk` | 从您自己的代码中控制调用 |
两者都是 Apache-2.0 许可证。支持 Node 22+ 和 pnpm 10+。
```bash
pnpm install
pnpm test
```
## 当本地模式不够用时
本地模式适用于单个开发人员在一台机器上,并且是完整的:策略、批准、审计、验证。它没有服务器,因此在结构上无法完成某些事情 — 第二个人批准、在 CI 中运行代理程序而终端上没有人、审计员需要的不止一个 JSONL 文件在您的笔记本电脑上。
托管产品的作用:[useseal.dev](https://usese)。迁移只需要一行配置;此存储库中的任何内容都关闭。
## 安全
请按照 [SECURITY.md](./SECURITY 报告漏洞 — 请勿公开问题。代理程序永远不会存储、转发或记录第三方凭证,默认绑定到 `127.0.0.1` 并具有 DNS 重新绑定保护,并且不会发送任何遥测数据。
## 贡献
阅 [CONTRIBUTING.mdTRIBUTING.md)。代码、注释、提交和文档均为英文。采用严格的 TypeScript,无 ` 类型,每个错误修复都会附带回归测试。