Sentinel
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 会启动一个。
这样你会得到:
服务 | URL |
Web 控制台 | |
文档站点 | |
API | |
MCP 代理 | |
管理 MCP |
种子数据会创建一个 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 单体仓库。
包 | 行数 | 功能 |
| ~72k | tRPC API——服务、路由、策略评估、审计 |
| ~73k | React 管理员 + 用户控制台 |
| ~11k | 文档站点 |
| ~6k | 共享类型、条件评估、管理工具定义 |
| ~4.7k | MCP 代理服务器(HTTP、STDIO、WebSocket、SSE) |
| ~3.3k | Prisma 模式——67 个模型 |
| ~2.5k | 代理到代理协议代理 |
| ~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 作为网络服务运行,你必须让你的修改对其用户可用。
This server cannot be installed
Maintenance
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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