来源:腾讯云培训认证中心 · CodeBuddy 架构师认证课程 · ch7
第 七 章 · Chapter 7
MCP 集成与工具开发
本 章 学 什 么
-
理解信息孤岛问题,搞懂 MCP 的定义、核心角色和工作流程
-
掌握 SQLite / GitHub / 搜索三类常用 MCP Server 的配置与验证
-
跑通"读元数据 → 生成代码 → 验证"的元数据驱动开发闭环
-
建立 MCP Server 设计的安全意识:单一职责、最小权限、审计日志
让 AI 帮你写数据库相关代码,但它不知道你的表结构,只能靠你一个字段一个字段地"喂"——这就是信息孤岛问题。MCP 就是给 AI 装上感官的协议——AI 直接查你的数据库结构、读 GitHub Issue、搜网页,生成的代码和真实系统完全对齐。
从你手动喂上下文,升级到 AI 自己连接上下文。
7.1 MCP 基本概念
信息孤岛 · AI 做不到的
没有 MCP 时,AI 能读项目文件、改代码、跑终端命令、搜项目代码——基本都在本地文件系统打转。但很多真实开发信息根本不在当前文件里:查数据库、调第三方 API、读实时数据、看 GitHub Issue、读 Figma 设计稿、查生产日志、看 Slack 讨论、搜团队知识库——这些都需要外部连接。
MCP 定义
Model Context Protocol(MCP,模型上下文协议)——Anthropic 提出的开放标准,专门用来连接 AI 和外部数据源、外部工具。目标:打破信息孤岛,让 AI 用统一的方式访问外部服务。
两层意思:MCP 是协议,不是某一个工具;MCP 连的是外部数据源和工具,目的是把真实世界的信息拉进 AI 的上下文。
核心角色 · 八个术语
| 角色 | 说明 | 类比 |
|---|---|---|
| Host | AI 应用本身(CodeBuddy),发起请求方 | 浏览器 |
| Client | Host 内部,负责跟 Server 建立连接和通信 | 网页里的 JS 脚本 |
| Server | 提供工具和数据的服务程序(SQLite Server、GitHub Server) | Web 服务器 |
| Tool | Server 暴露给 AI 的具体能力(读表结构、执行 SQL、创建 Issue) | API 接口 |
| Resource | Server 提供的数据(表结构、文件内容、知识库条目) | 网页内容 |
| Prompt | Server 提供的可复用模板 | 固定流程模板 |
| Sampling | Server 反过来请求模型生成内容 | 双向协作 |
| Transport | Client 和 Server 之间的通信方式(本地 stdio / 远程 HTTP/SSE) | 通信通道 |
工作流程六步
-
用户提需求
-
AI 发现需要外部信息
-
AI 调 MCP Client
-
Client 请求 MCP Server
-
Server 连外部服务拿到数据
-
AI 基于真实数据生成代码
MCP 不是让 AI 直接随便访问外部系统,而是通过 Host / Client / Server / Tool / Resource 这些角色,按协议完成受控访问——这是考点。
7.2 常用 Server 与对比
三类常用 MCP Server
| 类别 | 代表 Server | 典型用途 |
|---|---|---|
| 数据库类 | SQLite / PostgreSQL / MySQL | 元数据驱动开发——读表结构、生 Prisma Schema、写 CRUD 接口、统计查询 |
| 平台集成 | GitHub / Slack / Puppeteer / Fetch / Memory | 让 AI 进入真实研发协作系统——读 issue、看团队讨论、抓网页、跨对话记忆 |
| 搜索与知识 | Brave Search / DuckDuckGo / Filesystem / 知识库 MCP | 解决"知识更新"和"组织知识沉淀"——搜实时信息、连企业知识库 |
很多 Server 即插即用——npx 一行命令就能启动;也有远程 Server 通过 HTTP/SSE 连接。不管本地还是远程,核心都一样:让 AI 通过统一协议访问外部能力。
什么场景适合 MCP / 什么场景不适合 · 考点
适合用 MCP:实时查公司内部知识库(每次拿最新数据)/ 在对话中创建或更新工单(动态写操作)/ 连 CI/CD 系统查最新构建状态(实时只读)/ 读数据库表结构生成代码(元数据驱动)。
不适合用 MCP:引用一份不怎么更新的静态 API 文档(用 @ 引用文件就行)/ 告诉用户"怎么手动操作某系统"(讲解不是动手)/ 一次性的批量数据导入(写脚本就够)/ 引用项目里固定的配置文件(用 @Files)。
判断口诀:需要"动态、实时、有状态、跨系统"用 MCP;"静态、一次性、可直接引用"用 @ 引用就够。
MCP vs 传统 API · 四维度对比
| 维度 | 传统 API | MCP |
|---|---|---|
| 调用者 | 人类写代码调用,要知道 API 细节 | AI 自己判断,通过 Tool 描述自动理解 |
| 交互方式 | 程序化、固定流程,写死在代码里 | 对话式、灵活路由,AI 根据上下文动态选工具 |
| 集成成本 | 每个服务单独对接,读文档写适配 | 统一协议、即插即用,配 JSON 文件就搞定 |
| 认知层 | 开发者要知道 endpoint、参数、返回格式 | AI 通过 Tool 的 description 和 schema 自动理解 |
高 频 考 点
Tool 的 description 非常重要——AI 不是靠猜工具名来调工具,而是通过 description 和 schema 来理解这个工具适合什么场景、要什么参数、会返回什么。
7.3 配置实操
SQLite MCP · 最轻量的入门示例
四步搞定:建库 → 配置 → 重启 → 验证。
Step 1 · 让 Agent 创建测试数据库
data/app.db 包含 users / products / orders / order_items 四张表,每张 10-20 条测试数据
Step 2 · 配置 ~/.codebuddy/mcp.json
{ "mcpServers": { "sqlite": { "command": "npx", "args": ["-y", "mcp-server-sqlite", "data/app.db"] } } }
Step 3 · 重新加载 CodeBuddy
Step 4 · 验证
对话框输入:请列出当前数据库中的所有表及其字段结构复制
mcp.json 关键字段:command 启动命令,args 参数数组,可选 env 放环境变量。多个 Server 可并排配在同一文件。本地用 command + args 启动子进程;远程用 URL + 鉴权 + 传输方式。
路径写错是最常见的连接失败原因——配置时一定要确认当前工作目录和数据库文件的实际位置对得上。
GitHub MCP · 平台集成
先去拿 GitHub Token:Settings → Developer settings → Personal access tokens,勾上 repo / issues / pull_requests 权限。配置用 @teolin/mcp-github,env 里放 GITHUB_TOKEN。
安 全 提 醒
GitHub Token 是敏感凭证——别写进代码、别提交 Git、别给超出任务需要的权限。只需要读 issue 就别给 write 权限。
使用示例:"帮我查看 GitHub 仓库 my-org/my-project 最近 5 个 open issues,然后根据 issue 描述创建任务列表"——AI 通过 MCP 调 GitHub API 拿真实数据。
搜索 MCP · 实时外部信息
DuckDuckGo Search:command 写 npx,args 写 ["-y", "@anthropic/mcp-server-duckduckgo-search"]——不需要 API Key。
使用示例:"我遇到了这个错误:[错误信息],帮我搜一下最新的解决方案,然后修复"——AI 搜互联网找方案后结合项目代码修。
常见问题排查
| 问题 | 排查 |
|---|---|
| 看配了哪些 MCP | "我的 MCP" 面板显示所有 Server 列表和状态——绿色已连接,红色失败 |
| 配置出错 | 到 "我的 MCP" 看错误日志,复制日志丢给 CodeBuddy 修。常见:JSON 格式错、路径不对、依赖没下下来、Token 过期、网络不通 |
| 开关 MCP 服务 | 点 Server 右边的按钮——不用的先关掉省资源 |
| 连接失败 | 正确顺序:先终端手动跑 npx 命令看报错 → 再查路径、Token、网络。本地查命令和文件路径,远程查 URL / 网络 / 鉴权 / 传输方式 |
安 全 提 醒
MCP Server 暴露的能力就是 AI 可能调用的能力。别把生产数据库的高权限账号随便接给 AI,也别把删除、发送、转账这类高风险操作设计成"无确认即可执行"。
7.4 实战场景
传统 vs MCP 流程对比
| 方式 | 流程 |
|---|---|
| 传统 | 打开数据库客户端 → 查表结构 → 手动复制到文档 → 喂给 AI → 写代码 → 发现漏了再回去查 |
| MCP | 你说"写个用户订单查询接口" → AI 自己查数据库表结构 → 基于真实结构写代码 → 一步到位 |
三类典型场景
**① 生成 Prisma Schema。**AI 通过 MCP 读完整表结构生成 Prisma Schema:*正确识别外键关系、加中文注释、写 @@index 和 @@map 注解,输出"字段来源证据"*说明来自哪张表。字段来源证据帮你验证:AI 生成的字段是真实数据库来的,不是它自己编的。
**② 自动生成 CRUD。**读 users 表结构生成完整 CRUD:GET 列表(分页+搜索)、GET 详情、POST 创建、PUT 更新、DELETE 删除——用 Prisma ORM、类型安全、错误处理。
③ 智能查询 + 数据库变更同步。"统计每个分类下的商品数量、平均价格、总销售额"——AI 先查相关表结构确认字段名和关联关系,再生成 Prisma 查询。多表关联时先查结构特别关键。 数据库加字段时,AI 通过 MCP 发现表结构变了,自动同步更新 Prisma Schema、TypeScript 类型、API 接口、前端表单,输出"变更影响清单 + 回归检查项"。
真实系统里,数据库结构、Issue 状态、知识库文档这些外部信息才是最权威的上下文。
最佳实践:永远让 AI 先通过 MCP 确认真实数据再写代码——别凭记忆告诉 AI 表结构,让它自己查。
7.5 练习与自测
-
SQLite 配置(必做)——建至少 4 张表的 SQLite 数据库 → 配 SQLite MCP Server → 让 AI 通过 MCP 读表结构 → 基于真实结构生成 Prisma Schema。验收重点不是 Schema 写出来了,而是要证明 Schema 确实来自 MCP 读取的真实结构
-
CRUD 生成(必做)——基于练习 1 的数据库,让 AI 通过 MCP 自动生成完整 CRUD 接口并验证能跑。验收:接口完整、字段正确、分页搜索能用、类型安全、错误处理合理、没引用不存在字段
-
自定义 Server(进阶)——自己写一个 MCP Server,提供以下能力之一:读项目 Git 历史 / 分析项目依赖树 / 读 ESLint 检查结果。重点在工具定义(name / description / schema / 返回结构)和调试
7.6 核心收获
MCP Server 设计规范 · 考点
单一职责原则
一个 MCP Server 只负责一个业务领域——对的:database-server / github-server / search-server 各管各的;错的:一个 Server 又管数据库又管 GitHub 又管搜索。好处:职责清晰、权限最小化、出问题好定位、可按需开关。
不可逆操作的安全设计
发消息、转账、删数据等高风险操作,要做三件事:
① description 标清楚——"此操作不可逆,执行前请确认目标"
② 二次确认——参数加 confirm: true 确认字段,AI 必须显式传入才能执行
③ 审计日志——记录每次工具调用的时间、参数、调用者
金融转账、删生产数据这类,光在 description 标注不够——Server 端必须再加身份与权限校验、操作审计日志。AI 这边靠 description 做"调用前提示",Server 那边靠权限校验做"调用时拦截",再加审计日志做"调用后追溯"。
最小权限原则——能只读就别给写权限,能限目录就别开放整个文件系统,能用测试库就别直接连生产库。
本章小结
-
打破孤岛——MCP 让 AI 从封闭空间连出去,访问数据库、GitHub、Slack、搜索引擎、知识库
-
统一协议——一个 JSON 配置文件就能即插即用,比传统 API 集成成本低一个量级
-
元数据驱动——AI 通过 MCP 读真实表结构生成代码,一步到位少走弯路
-
感官延伸——看到数据库、触摸 GitHub、搜索互联网,从助手变成 Agent
-
能力体系——Rules 管风格 / 上下文工程管视野 / Skills 管流程 / MCP 管连接
下一模块进入**「CodeBuddy Agent SDK」**——从手动用 CodeBuddy,升级到用代码编排 CodeBuddy,把 AI 能力直接写进你的程序里。