Skip to main content
Glama
gong8

Sentinel

by gong8

Sentinel

一个自托管的 MCP 服务器治理层。 Sentinel 位于你的 AI 代理与它们调用的工具之间,根据你的策略评估每个请求,并记录所发生事件的审计轨迹。

完全运行在你自己的机器上。Postgres 是唯一的硬依赖——无需 API 密钥,无需云账户,无需回传数据。

agent ──▶ Sentinel proxy ──▶ policy engine ──▶ MCP server
                                   │
                                   └──▶ audit log

为什么存在

如果你给代理一组 MCP 工具,你就赋予了它行动的能力。大多数设置无法回答三个问题:

  • 这个代理在什么条件下允许调用哪些工具?

  • 它实际做了什么?

  • 谁批准了触及生产环境的操作?

Sentinel 通过一个策略引擎(按调用评估条件)、一个带有前后快照的仅追加审计日志,以及一个针对你标记为敏感的任何操作的审批工作流,回答了这三个问题。

Related MCP server: AISentinel

包含内容

策略引擎

带有条件树的 ALLOW/DENY 规则。DENY 始终优先——它不能被后续的 ALLOW 覆盖

条件

两种模式:SIMPLE(扁平数组)和 ADVANCED(嵌套 AND/OR 表达式树)

MCP 代理

多传输:HTTP、STDIO、WebSocket、SSE

审计日志

每次工具调用、策略更改、认证事件和管理操作,均带有前后快照

多租户

组织 → 工作区 → 成员,在查询层进行范围限定

审批

将工具标记为敏感;调用在等待人工批准时被阻止

凭据

上游服务器凭据在静态时使用 AES-256-GCM 加密

管理 MCP 服务器

40 个工具,使代理能够自行管理 Sentinel

A2A 代理

代理到代理协议支持

Web 界面

完整的管理员和用户控制台

快速开始

需要 Node 20+、pnpm 和 Postgres。

git clone https://github.com/gong8/sentinel-oss.git
cd sentinel-oss
cp .env.example .env        # generate secrets, point DATABASE_URL at your Postgres
pnpm setup                  # install, generate client, push schema, seed
pnpm dev

需要 Postgres?docker compose up -d postgres 会启动一个。

这样你会得到:

种子数据会创建一个 Acme Corporation 组织,包含三个用户,并打印他们的访问令牌。随时运行 pnpm db:creds 可再次打印它们。

将代理指向它

将代理添加到你的 MCP 客户端配置中:

{
  "mcpServers": {
    "sentinel": {
      "url": "http://localhost:3001/mcp",
      "headers": { "Authorization": "Bearer YOUR_ACCESS_TOKEN" }
    }
  }
}

在 Web 控制台中注册上游服务器,针对它们的工具编写策略,现在每次调用都会通过策略引擎路由。

可选:代理功能

Sentinel 内置了一个管理代理(通过聊天完成配置)。它需要 LLM,并支持多种提供商——包括完全本地的提供商,因此你永远不必购买 API 密钥:

  • Ollama 或任何 OpenAI 兼容 端点(LM Studio、llama.cpp、vLLM)——本地、免费

  • Anthropic、OpenAI 或 Gemini——如果你更愿意自带密钥

Sentinel 中的其他所有功能在未配置 LLM 的情况下也能正常工作。

架构

一个 pnpm + Turborepo 单体仓库。

包

行数

功能

api

~72k

tRPC API——服务、路由、策略评估、审计

web

~73k

React 管理员 + 用户控制台

docs

~11k

文档站点

shared

~6k

共享类型、条件评估、管理工具定义

mcp

~4.7k

MCP 代理服务器(HTTP、STDIO、WebSocket、SSE)

db

~3.3k

Prisma 模式——67 个模型

a2a

~2.5k

代理到代理协议代理

mcp-admin

~1.7k

管理 MCP 服务器(40 个工具)

大约 177k 行源代码 和 163k 行测试,分布在 218 个测试文件 中。

最可复用的部分是 packages/api/src/services/policyCondition.ts——一个约 1,300 行的条件树评估器,除了 Zod 和日志记录器外没有其他依赖。它不了解 MCP、Prisma 或 Sentinel,可以提取到任何需要策略表达式的项目中。

更深入的文档位于 docs/——从 docs/README.md 开始。

测试

pnpm test:unit          # no database needed
pnpm test:integration   # requires TEST_DATABASE_URL
pnpm test:security      # tenant isolation, DENY precedence
pnpm test:e2e           # Playwright
pnpm check              # format, lint, types, tests

项目约定

这个代码库对自己有一些不可妥协的规则,由 lint 配置和 .claude/hooks/ 中的 git 钩子强制执行:

  • 不允许 as 类型断言(除了 as const)、不允许 any、不允许 @ts-ignore、不允许 eslint-disable

  • 每个数据库查询都限定在 organizationId 范围内

  • 所有输入都通过 Zod 验证

  • 凭据在存储前加密

  • 敏感操作记录审计日志,管理操作带有前后快照

  • DENY 策略不能被绕过,并且这一点已明确测试

参见 CLAUDE.md 获取完整的开发指南。

贡献

参见 CONTRIBUTING.md。安全问题:SECURITY.md。

许可证

GNU AGPL-3.0。如果你将修改后的 Sentinel 作为网络服务运行,你必须让你的修改对其用户可用。

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    A local-first control plane for AI agent tools, providing policy enforcement, spend caps, rate limiting, and audit trails for MCP servers.
    1
    Apache 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    An open-source MCP server that protects AI agents at runtime by evaluating every tool call against YAML policies and generating audit trails.
    1
    Apache 2.0
  • F
    license
    A
    quality
    B
    maintenance
    A governance layer for MCP servers that classifies tools by risk, enforces agent permissions, lets safe tools earn autonomy through a track record, and keeps an audit trail. Requires human approval for irreversible actions and provides blast radius context.
    14
    -