安全凭证注入协议

SMCP是一种通过标准输入/输出安全地将凭证注入MCP服务器的轻量协议,适用于需要避免凭证泄露的启动场景。

  • by sshoecraft
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 sshoecraft/smcp

使用说明

SMCP:安全MCP凭证协议

一种在启动时通过stdin/stdout将凭据安全注入MCP服务器的最低协议。

问题

MCP服务器通常通过以下方式接收凭据:

  • 环境变量→ 可见于 /proc/<pid>/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

许可证

麻省理工学院