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

包含内容

策略引擎

带有条件树的 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 作为网络服务运行,你必须让你的修改对其用户可用。

-
license - not tested
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • See, price, and control every tool call your AI agents make: policy checks, cost, and audit tools.

  • MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.

  • Hosted MCP server for agent governance: MCP config audits, injection scans, scope-policy checks.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/gong8/sentinel-oss'

If you have feedback or need assistance with the MCP directory API, please join our Discord server