Appearance
37. MCP 服务器开发流程是什么?
难度 P1 高频 · 岗位 应用 · 频率 ★★★ · 预计阅读 5 min
本题阅读地图
- 💡 简要回答
- 📝 详细解析
- 🎯 面试总结
👔面试官:MCP 服务器开发流程是什么?
🙋♂️我:定义工具,实现逻辑,启动服务。
👔面试官:太简单了。完整流程:明确能力边界 → 定义 schema → 选传输方式 → 实现服务端 → 补齐治理(鉴权、日志、超时)。而且最容易忽略的是能力边界和错误处理。你能展开吗?
🙋♂️我:MCP Server 不是简单套壳,要设计成适合模型消费的接口?
👔面试官:对。不要把现有 API 直接暴露,要考虑模型怎么理解、怎么调用、出错怎么处理。schema 设计、描述质量、错误信息都很关键。
💡 简要回答
MCP Server 开发五步:
- 明确能力边界:是 Tool、Resource 还是 Prompt?
- 定义 schema:输入输出、错误处理、描述质量
- 选传输方式:stdio(本地)vs HTTP(远程)
- 实现服务端:业务逻辑 + 鉴权 + 日志 + 超时
- 客户端联调:注册、发现、调用、测试
关键注意:
- MCP Server 不是简单 API 套壳
- 要设计成适合模型消费的接口
- 最容易忽略:能力边界和错误处理
📝 详细解析
第一步:明确能力边界
决策:暴露成什么类型?
- Tool:模型主动调用(搜索、计算)
- Resource:应用读取(文件内容、配置)
- Prompt:用户选择(模板)
范围:
- 原子能力 vs 组合能力
- 同步 vs 异步
- 有状态 vs 无状态
第二步:定义 schema
输入 schema:
json
{
"type": "object",
"properties": {
"query": {"type": "string", "description": "搜索关键词"},
"limit": {"type": "integer", "default": 10}
},
"required": ["query"]
}描述质量:
- 清晰说明能力边界
- 给出参数示例
- 说明返回值格式
第三步:选传输方式
| 方式 | 适用 | 场景 |
|---|---|---|
| stdio | 本地进程 | 文件系统、本地命令 |
| HTTP | 远程服务 | 云 API、数据库 |
| Streamable HTTP | 流式响应 | 长任务、进度推送 |
第四步:实现服务端
业务逻辑:实现具体功能
治理补齐:
- 鉴权:API Key、OAuth、JWT
- 日志:请求、响应、错误记录
- 超时:防止长时间挂起
- 限流:保护下游服务
- 错误处理:友好错误信息
第五步:客户端联调
- 在 Host 中注册 MCP Server
- 验证能力发现
- 测试调用链路
- 检查错误处理
🎯 面试总结
五步开发:明确边界 → 定义 schema → 选传输 → 实现服务 → 联调测试。关键是设计适合模型消费的接口,不是简单套壳。