图书简介:
第1章 认识AI智能体与MCP 1
1.1 走进AI智能体时代 1
1.1.1 智能体的起源 1
1.1.2 大模型时代的智能体 2
1.1.3 两种类型的智能体系统 4
1.1.4 智能体的挑战与趋势 6
1.2 初步认识MCP 7
1.2.1 智能体时代AI应用集成的挑战 7
1.2.2 MCP:一种新的AI应用集成标准 9
1.2.3 基于MCP的集成架构 11
1.3 从第一个MCP示例开始 14
1.3.1 开发环境与设置 14
1.3.2 第一个MCP示例 17
第2章 揭秘MCP规范与原理 22
2.1 总体架构 23
2.2 消息规范:互操作的基础 24
2.2.1 什么是JSON-RPC 2.0 24
2.2.2 理解基于JSON-RPC 2.0的远程调用 26
2.3 通信机制:基于HTTP的远程通信 28
2.3.1 无状态HTTP Post的不足 28
2.3.2 详解MCP的SSE通信机制 30
2.4 通信机制:基于stdio的本地通信 38
2.4.1 stdio通信的基本原理 39
2.4.2 模拟实现stdio模式的服务端 39
2.5 MCP架构下的会话生命周期 41
2.5.1 连接与初始化 41
2.5.2 交互与调用 43
2.5.3 连接关闭 44
2.6 服务端功能 44
2.6.1 工具(Tools):可执行的复杂逻辑 45
2.6.2 资源(Resources):动态的上下文信息 51
2.6.3 提示(Prompts):预置的模板 57
2.7 MCP客户端功能 62
2.7.1 Roots:控制服务端的访问范围 62
2.7.2 Sampling:控制LLM的安全使用 65
2.8 MCP规范总结客户端 69
第3章 基于SDK开发服务端 71
3.1 认识MCP SDK 71
3.1.1 关于MCP SDK及准备 71
3.1.2 了解MCP SDK的层次结构 72
3.2 使用FastMCP开发服务端 74
3.2.1 创建FastMCP Server实例 74
3.2.2 开发工具(Tools)功能 75
3.2.3 开发资源(Resources)功能 80
3.2.4 开发提示(Prompts)功能 82
3.2.5 启动服务端 85
3.3 服务端的调试、跟踪与部署 89
3.3.1 调试与跟踪服务端 89
3.3.2 部署MCP远程服务端 99
第4章 基于SDK开发客户端 106
4.1 用Python库模拟客户端 106
4.1.1 模拟远程模式(HTTP)客户端 107
4.1.2 模拟本地模式(stdio)客户端 116
4.2 基于SDK开发客户端 120
4.2.1 实战准备 - 通用的MCP测试客户端 120
4.2.2 远程连接与初始化 121
4.2.3 本地连接与初始化 123
4.2.4 工具的发现与调用 124
4.2.5 资源的发现与调用 127
4.2.6 提示(Prompts)的发现与调用 130
4.2.7 优化 - 缓存服务端功能列表 132
4.3 MCP SDK开发小结 135
第5章 MCP高级开发技巧 136
5.1 基于低层SDK开发服务端 136
5.1.1 创建低层Server实例 137
5.1.2 开发与注册服务端功能 137
5.1.3 启动低层Server实例 141
5.2 使用生命周期管理器lifespan 145
5.2.1 预备知识:上下文管理器 145
5.2.2 生命周期管理器 147
5.2.3 在Server实例中使用lifespan 148
5.2.4 在Starlette实例中使用lifespan(SSE模式) 153
5.3 实现应用层的ping机制 155
5.3.1 预备知识:服务端的ServerSession 155
5.3.2 ping请求的消息格式 157
5.3.3 实现ServerSession的ping任务 157
5.3.4 验证ping机制 162
5.4. 服务端通知(Notification)的应用 164
5.4.1 认识通知 164
5.4.2 常见的通知类型 165
5.4.3 实现列表变更通知 166
5.4.4 实现服务端任务的“进度条” 175
5.5 实现服务端的工具调用缓存 181
5.5.1 实现服务端的工具缓存类 182
5.5.2 用装饰器给工具增加缓存 186
5.5.3 测试服务端工具缓存 189
5.6 切换WebSocket的传输层 191
5.6.1 服务端WebSocket传输的实现 191
5.6.2 客户端WebSocket连接的实现 193
5.6.3 测试WebSocket传输模式 194
5.7 客户端功能(Sampling等)的应用 195
5.7.1 实现客户端Roots与Sampling功能 196
1.Roots回调函数 196
5.7.2 服务端调用客户端Sampling功能 199
5.7.3 测试客户端Sampling的调用 201
5.8 服务端的安全机制 203
5.8.1 基于安全Token的认证 204
5.8.2 基于OAuth的安全授权 205
第6章 基于MCP开发智能体系统 206
6.1 发现与配置社区MCP服务 206
6.1.1 发现社区共享的MCP服务 207
6.1.2 如何获取、安装与运行 208
6.1.3 在客户端配置与使用 210
6.2 集成大模型与MCP服务 213
6.2.1 准备:多MCP服务端连接管理组件 214
6.2.2 集成函数调用(Function Calling)与MCP服务 219
6.3 集成智能体开发框架与MCP服务 226
6.3.1 集成LangGraph与MCP服务 227
6.3.2 其他主流的智能体框架与MCP集成 233
6.4 实战:基于MCP架构的多文档Agentic RAG系统 239
6.4.1 整体架构设计 239
6.4.2 实现服务端 241
6.4.3 实现客户端的智能体 248
6.4.4 效果测试 253
6.4.5 后续优化空间 258
6.5 实战:基于MCP架构的多智能体系统 259
6.5.1 整体架构设计 260
6.5.2 MCP服务端准备 261
6.5.3 智能体准备 264
6.5.4 构建多智能体工作流 268
6.5.5 客户端(支持API模式) 274
6.5.6 效果测试 276
6.5.7 后续优化空间 280
第7章 解读新版MCP规范与未来展望 282
7.1 新的Streamable HTTP远程传输模式 282
7.2 引入基于OAuth 2.1的授权框架 286
7.3 支持JSON-RPC批处理 290
7.4 增加工具注解信息 292
7.5 增强其他方面的功能 295
7.5.1 在进度通知中增加message描述字段 295
7.5.2 新增音频数据类型支持 296
7.5.3 新增自动补全能力标识 297
7.6 对MCP的未来展望 298
展开
AI(Artificial Intelligence,人工智能)技术的快速演进正在深刻地改变着我们的世界,而MCP(Model Context Protocol,模型上下文协议)正在成为这一变革中的核心角色之一。作为一种连接大语言模型(LLM)与外部世界(包括各种工具、资源与数据)的开放协议,MCP被认为是为未来AI应用特别是为智能体系统提供标准化、模块化与可扩展架构的基石。随着MCP迅速走红,越来越多的开发者、架构师、企业开始关注它。MCP因此成为当下AI技术人员无法绕开的必修课,这正是本书诞生的动机。
本书不仅是为MCP初学者设计的入门手册,还是帮助读者深入理解MCP背后原理并实战应用的进阶指南。我始终认为,学习一项新技术不能只停留在知其然,更要知其所以然。你只有愿意探寻“引擎盖下的秘密”,深入理解协议背后的设计动机与原理,了解更多SDK的内部细节,才能更自如地开发出高效、健壮、可扩展的系统,轻松地应对更复杂而真实的应用场景。毕竟在AI应用领域,从原型到真正的生产应用,往往还存在“十万八千里”的差距。
本书在介绍MCP、SDK开发的基础步骤与方法的同时,也用较大篇幅介绍了更深的内容,一方面对官方SDK开发指南做了大量补充,另一方面介绍了在实际应用中,特别是在企业级场景中需要的MCP高级开发技巧。另外,本书还重点介绍了集成主流智能体开发框架于MCP服务端的多个端到端实战案例,帮助读者将理论转化为应用能力。
本书的所有代码和开发示例都基于Python语言,采用2025-03-26修订版本的MCP规范的Python SDK和主流的大模型应用开发框架(如LangGraph等)。需要提醒的是,虽然MCP规范和SDK都会不断演进与更新版本,但其核心设计理念和机制相对稳定,因此本书的内容在未来相当长的时间内都具有参考价值。受到篇幅限制,对本书的有些代码只展示并讲解了核心部分,但完整的源代码与延伸材料会在读者群中提供,供读者参考、实践与验证。
技术潮流奔涌向前,AI的脚步日新月异。我衷心希望本书能够帮助你系统化地理解MCP,从入门到精通、从原理到实践,能够成为你探索、掌握、驾驭MCP和AI 智能体开发的重要起点,陪伴你一路成长,紧跟时代步伐,共同掀开AI技术的新篇章。
展开