关于 rail-score
rail-score 是托管式远程 MCP 服务,为 Agent 提供内容评估、安全护栏和印度 DPDP 合规工具。它通过网关调用现有 REST API,并支持策略阈值、提示词注入检测、PII 扫描及工具调用判定。
主要功能
- 01按 RAIL 维度评估内容并执行策略
- 02检查多项法规合规性
- 03检测提示词注入及工具调用风险
- 04扫描并遮蔽 PII 与注入内容
- 05提供印度 DPDP 扫描与处理关卡
- 06暴露免费只读框架资源
适用场景
- 01在 Agent 处理不可信输入前检查注入
- 02执行工具前允许、警告或阻止调用
- 03扫描工具结果并遮蔽敏感信息
- 04检查印度部署中的 DPDP 处理流程
MCP 相关
该远程 MCP 服务通过单一 HTTP 端点向 MCP 客户端提供 9 个工具和 3 个只读资源。连接需要 RAIL API 密钥,也可自行托管服务。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://mcp.responsibleailabs.ai/mcpclaude mcp add --transport http ai-responsibleailabs-rail-score https://mcp.responsibleailabs.ai/mcp{"mcpServers":{"ai-responsibleailabs-rail-score":{"type":"http","url":"https://mcp.responsibleailabs.ai/mcp"}}}在 Cursor 中打开{"servers":{"ai-responsibleailabs-rail-score":{"type":"http","url":"https://mcp.responsibleailabs.ai/mcp"}}}在 VS Code 中打开{"mcpServers":{"ai-responsibleailabs-rail-score":{"type":"http","url":"https://mcp.responsibleailabs.ai/mcp"}}}{"mcpServers":{"ai-responsibleailabs-rail-score":{"serverUrl":"https://mcp.responsibleailabs.ai/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
RAIL Score MCP Server
通过一个 URL 为任意 Agent 添加负责任 AI 安全层。
一个远程托管的 Model Context Protocol 服务,将 RAIL Score 的评估、Agent 护栏和印度 DPDP 合规功能开放给任何 MCP 客户端——Claude、ChatGPT、Cursor、Copilot、Replit Agent、LangGraph、CrewAI 或自定义技术栈——无需集成 SDK。
https://mcp.responsibleailabs.ai/mcp
该服务是现有 REST API api.responsibleailabs.ai/railscore/v1/ 前方一个轻量、加固的网关。它不会重新实现任何评分逻辑:它会验证调用方,为 Agent 使用场景优化请求和响应格式,然后转发给引擎。通过 MCP 和 REST 使用时,额度、租户隔离和速率限制完全一致。
快速开始
你需要从控制面板获取一个 RAIL API 密钥(rail_...)。
Claude Code
claude mcp add --transport http rail https://mcp.responsibleailabs.ai/mcp \
--header "Authorization: Bearer ${RAIL_API_KEY}"
Cursor / Windsurf(.cursor/mcp.json)
{
"mcpServers": {
"rail": {
"url": "https://mcp.responsibleailabs.ai/mcp",
"headers": { "Authorization": "Bearer rail_YOUR_KEY" }
}
}
}
Claude.ai / Desktop — 前往 Settings → Connectors → Add custom connector → 输入 URL
https://mcp.responsibleailabs.ai/mcp,然后粘贴你的 rail_ 密钥。
更多客户端(OpenAI Responses API、LangGraph、Replit)的文档请参阅 docs.responsibleailabs.ai/mcp。
工具
共 9 个工具,名称均以 rail_ 开头。描述中会说明开销、延迟以及不适用的场景,因为 Agent 仅根据描述来选择工具。
| 工具 | 用途 | 额度 |
|---|---|---|
rail_evaluate | 对内容进行评分,涵盖 8 个 RAIL 维度(可选执行 policy) | 基础版 1.0 / 深度版 3.0 |
rail_check_compliance | 根据 gdpr、ccpa、hipaa、eu_ai_act、india_dpdp、india_ai_gov 检查合规性 | 5–10 |
rail_detect_injection | 检测不可信文本中的提示词注入 | 0.5 |
rail_evaluate_tool_call | 在工具调用执行前允许、警告或阻止该调用 | 1.5–3.0 |
rail_scan_tool_result | 扫描工具输出中的 PII 和注入,并返回已脱敏文本 | 0.5–1.0 |
rail_safe_regenerate | 反复重新生成内容,直到通过检查(速度较慢) | 1–9 |
rail_dpdp_scan | 根据《2023 年 DPDP 法案》扫描印度个人数据 | 0.5 |
rail_dpdp_gate | 实时 DPDP 处理关卡(允许/阻止/要求采取操作) | 0.3 |
rail_dpdp_compliance | DPDP 工作流:发出、要求、取证、会话、计时器 | 不定 |
三个只读资源(免费,不消耗额度):rail://framework/dimensions、
rail://account/capabilities 和 rail://framework/policy-schema(policy 参数的 JSON
Schema)。
策略执行
rail_evaluate 接受可选的 policy,其中包含按维度设置的阈值规则,并返回 policy_outcome。当某个维度的分数低于其阈值时,规则就会触发;action 是已触发规则中严重程度最高的操作(block > flag > warn >
allow),与 rail-score-sdk 的 Policy/Rule 结构一致。
{ "rules": [
{ "dimension": "safety", "threshold": 7.0, "action": "block" },
{ "dimension": "fairness", "threshold": 6.0, "action": "flag" }
] }
优先级:如果 API 密钥所属的应用已在控制面板中启用策略,则以该策略为准(policy_outcome.source: "application");否则,网关会应用请求中的 policy(source: "request")。不额外消耗额度。
受保护的 Agent 循环
典型用法是端到端包裹 Agent 的推理过程:
- 在处理不可信输入前调用
rail_detect_injection检测提示词注入 - 执行任何工具调用前调用
rail_evaluate_tool_call(block = 硬性阻止) - 对工具输出调用
rail_scan_tool_result(优先使用已脱敏文本) - 对草稿答案调用
rail_evaluate(deep),或调用rail_safe_regenerate修正答案 - 在印度部署中,对任何要离开边界的内容调用
rail_dpdp_scan(mask)
安全模型
安全产品本身不安全,会损害产品的可信度。发布阻断项(强制执行并通过回归测试):
- 判定结果是结构化数据,绝不是 Agent 可以忽略的建议性文字。
- 不回显分析内容。 工具只返回判定结果、分数、片段和脱敏摘录,绝不返回原始分析文本(二阶注入)。
- 不返回原始个人身份信息(PII)。 检测只返回脱敏值和偏移量。
- 从设计上实现租户隔离。 身份来自认证中间件验证过的密钥,绝不来自工具参数。
- 第 2 阶段不透传令牌:客户端令牌会经过验证后丢弃;下游调用使用网关的服务凭证。第 1 阶段中,Bearer
rail_密钥就是客户的 RAIL 凭证,因此会转发到上游,以保留每个租户的额度和隔离。 - 输入上限、超时、速率限制和审计日志(不记录内容正文)。
参见 tests/test_no_reflection.py 和 tests/test_pii_masking.py —— 这些测试是 CI 的强制门禁。
架构
- 传输: 仅支持 Streamable HTTP,使用单一
/mcp端点(SSE 已弃用)。 - 状态:
stateless_http=True、json_response=True—— 可在普通负载均衡器后水平扩展;符合 MCP 2026-07-28 无状态核心规范。 - 认证(第 1 阶段): 通过
Authorization: Bearer rail_...或X-API-Key: rail_...提供rail_密钥(后者对网关更友好,无需 Bearer 前缀);由auth.RailKeyMiddleware对POST /verify验证一次(缓存 5 分钟),然后绑定到请求上下文。 - 发现:
GET /.well-known/mcp/server-card.json(公开)允许在认证墙后进行扫描的注册表(例如 Smithery)无需密钥即可枚举工具。 - 认证(第 2 阶段): 通过 SDK 的
TokenVerifier实现 OAuth 2.1 资源服务器(RFC 9728 元数据、RFC 8707 受众绑定)。
rail_client.py thin httpx client to api.responsibleailabs.ai (forwards key, propagates X-Request-ID)
auth.py RailKeyMiddleware: validate rail_ keys, bind tenant
request_context.py per-request ContextVars (key, tenant, request id)
server.py FastMCP app: 9 tools + 3 resources + landing (/) + /health + server-card
server.json official MCP registry manifest (ai.responsibleailabs/rail-score)
本地开发
python -m venv .venv && source .venv/bin/activate
pip install -r requirements-dev.txt
ruff check . && pytest # unit + safety regression tests
RAIL_API_BASE=https://api.responsibleailabs.ai python server.py # serves on :8080
针对运行中的服务进行协议冒烟测试(需要真实密钥):
npx @modelcontextprotocol/inspector --cli \
http://localhost:8080/mcp --method tools/list \
--header "Authorization: Bearer ${RAIL_API_KEY}"
配置
| 环境变量 | 默认值 | 用途 |
|---|---|---|
RAIL_API_BASE | https://api.responsibleailabs.ai | 上游 REST API |
MCP_PORT | 8080 | 绑定端口 |
RAIL_UPSTREAM_TIMEOUT | 60 | 上游调用超时(秒) |
RAIL_KEY_CACHE_TTL | 300 | 已验证密钥的缓存 TTL(秒) |
托管
Responsible AI Labs 在 https://mcp.responsibleailabs.ai/mcp 托管服务——对几乎所有用户而言,只需连接到该 URL 即可;无需运行任何内容。
如需自托管,请构建镜像,并在任何提供 HTTP 服务的环境中运行;使用 RAIL_API_BASE(默认值)将其指向公共 REST API。无需提供任何密钥:每次请求都会携带客户的 RAIL 密钥。
docker build -t rail-score-mcp .
docker run -p 8080:8080 -e RAIL_API_BASE=https://api.responsibleailabs.ai rail-score-mcp
注册表
通过 server.json 和 mcp-publisher CLI 发布到官方 MCP 注册表,名称为 ai.responsibleailabs/rail-score(通过 DNS 验证 responsibleailabs.ai 命名空间);带标签的 GitHub 版本发布会自动运行 publish-registry 作业。
第三方目录(Smithery、Glama、PulseMCP、mcp.so)会分别为代码仓库和官方注册表建立索引。每个目录都需单独认领并刷新,而不会自动同步,因此列表可能会晚于版本发布更新。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。