CodeBuddy · 腾讯云课程资料

MCP 集成与工具开发

面向开发者的 AI 编程、上下文工程与多 Agent 协作。

来源:腾讯云培训认证中心 · 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 能力直接写进你的程序里。