# MCP Server 上线前配置检查清单

版本：1.0.0  
更新：2026-07-29  
适用：stdio、SSE、Streamable HTTP 类型 MCP Server

## 1. 传输方式

- [ ] 客户端与服务端使用相同传输方式。
- [ ] stdio 模式没有把日志写入 stdout；诊断日志写入 stderr。
- [ ] Streamable HTTP 的 URL、路径、端口和反向代理规则一致。
- [ ] 没有继续依赖已经废弃或准备移除的会话行为。

## 2. 启动命令

- [ ] `command` 指向当前系统真实存在的可执行文件。
- [ ] `args` 中的脚本路径使用绝对路径，或已经验证工作目录。
- [ ] Node.js、Python、uv、bun 等运行时版本符合项目要求。
- [ ] 在脱离 IDE 的终端环境中执行同一命令可以启动。

## 3. 环境变量与密钥

- [ ] 必需环境变量有明确清单。
- [ ] API Key、数据库密码和 Token 没有写进公开仓库。
- [ ] 客户端配置示例使用占位符，不包含真实密钥。
- [ ] 缺失环境变量时服务端返回明确错误，而不是静默退出。

## 4. Tools、Resources 与 Prompts

- [ ] Tool 名称稳定、唯一，并且不包含难以兼容的特殊字符。
- [ ] 输入 Schema 能被 JSON Schema 校验器验证。
- [ ] 必填字段、枚举、默认值和错误信息清楚。
- [ ] Resource URI 不允许目录穿越或越权读取。
- [ ] Prompt 参数与实际模板变量一一对应。

## 5. 权限与安全

- [ ] 文件系统访问限制在允许目录内。
- [ ] 网络请求存在域名或目标范围限制。
- [ ] 高风险 Tool 需要用户确认或授权门禁。
- [ ] 日志不会记录完整密钥、Cookie、Authorization Header 或私人文档。
- [ ] 服务端对输入长度、文件大小和请求频率设置限制。

## 6. 错误与可观测性

- [ ] JSON-RPC 错误包含稳定错误码和可读信息。
- [ ] Tool 超时、取消和重试行为已经测试。
- [ ] 每次调用可以关联 request_id 或 trace_id。
- [ ] 日志能区分启动失败、协议错误、Tool 错误和下游错误。

## 7. 发布验证

- [ ] 使用 MCP Inspector 完成连接测试。
- [ ] 至少验证一个成功调用、一个参数错误和一个下游失败。
- [ ] 在目标客户端中重新测试，而不只在本地脚本中测试。
- [ ] 配置变更有版本号、变更记录和回滚方案。

> 这份清单用于预检，不替代 MCP Inspector、正式安全审计或目标客户端测试。
