SMCP:安全MCP凭证协议
一种在启动时通过stdin/stdout将凭据安全注入MCP服务器的最低协议。
问题
MCP服务器通常通过以下方式接收凭据:
- 环境变量→ 可见于 `/proc/
/environ, docker inspect`
- CLI参数→ 可见于
ps aux - 配置文件→ 持久化到磁盘
所有这些都会泄露凭据。
解决方案
SMCP定义了一个简单的握手,其中父进程(可以访问MSI、Vault等)在启动时将凭据注入子MCP服务器。凭据仅存在于进程内存中。
Child → Parent: +READY
Parent → Child: {"DB_PASS":"secret","API_KEY":"sk-123"}
Child → Parent: +OK
── MCP JSON-RPC begins ──特性
- 简单: 3条消息,可在\<10行内实现
- 安全: 无环境变量、无CLI参数、无磁盘
- 通用: 使用内置的JSON解析器(每种语言都有一个)
- 可审计: 家长控制凭据分发
规格
看 规格.md 以获取完整的协议规范。
参考实现
牧羊人 是一个MCP服务器,它实现了用于生成子MCP服务器的SMCP。它通过托管身份从Azure密钥库加载配置,然后将凭据注入符合SMCP的子服务器——环境、CLI参数或文件中没有凭据。
shepherd --config msi --kv my-vault许可证
麻省理工学院
