微软-MCP-入门笔记-全-

微软 MCP 入门笔记(全)

001:模型上下文协议(MCP)简介 🧠

在本节课中,我们将要学习模型上下文协议(Model Context Protocol,简称MCP)的基础知识。MCP是一个开放标准接口,旨在帮助大型语言模型等AI模型与外部世界进行通信和交互。通过本教程,你将理解MCP的核心价值、工作原理以及它能解决的实际问题。

如果你曾尝试构建一个超越简单聊天的生成式AI应用,可能会遇到一些挑战。例如,如何将其连接到实时数据,如何调用计算器或搜索引擎等工具,以及如何保持整个系统的可扩展性和可维护性。这正是MCP发挥作用的地方。

模型上下文协议是一个开放、标准化的接口,它帮助AI模型(如大型语言模型)与外部世界进行通信。你可以将其理解为连接模型与API、工具、数据源的统一架构,让它们能够协同工作。MCP使你的模型不仅能智能地响应,还能执行具体操作。

随着AI应用日益复杂,定制化的集成方案难以扩展。这通常会导致一次性解决方案、脆弱的流程管道,以及任何变更都可能引发故障的代码。MCP通过提供一个通用层来解决这个问题,使你的模型能够以一致的方式与任何工具或资源交互。

这种标准化真正令人兴奋之处在于,它为构建更智能、更具自主性的系统打开了大门。你可以一次性接入工具,然后在多个模型中复用它们。这使得后续的功能扩展也变得容易得多。

以下是MCP带来的一些关键优势:

  • 互操作性:可以在不同的供应商和平台之间工作。
  • 一致性:模型与任何工具交互时行为一致。
  • 可复用性:构建一次工具,即可在任何地方使用。
  • 更快的开发:无需每次都从头开始。

在高层架构上,MCP遵循客户端-服务器模型。它包括:

  • MCP主机:运行AI模型。
  • MCP客户端:你的应用程序,负责发送请求。
  • MCP服务器:提供模型可能需要的工具、资源和上下文。

MCP服务器负责管理诸如工具注册、身份验证以及格式化响应以便模型理解等事务。当模型需要帮助时,例如想要搜索网络或运行计算,它会与服务器通信,由服务器处理其余部分。

以下是其工作流程:

  1. 客户端将用户提示发送给模型。
  2. 模型意识到需要外部帮助。
  3. 模型通过MCP向服务器发送请求。
  4. 服务器执行工具并返回结果。
  5. 模型完成其响应。

这个过程简单、清晰且可扩展。如果你准备亲自尝试,好消息是已有Java、JavaScript、Python和C#等语言的MCP服务器实现,你可以用自己熟悉的编程语言开始构建自己的MCP服务器。

MCP的应用场景令人兴奋,包括:

  • 企业数据集成:将模型与内部工具和CRM系统连接。
  • 自主AI系统:模型自主决定使用哪些工具。
  • 多模态应用:结合文本、图像和音频工具。
  • 实时数据访问:确保响应始终基于最新信息。


可以将MCP视为AI领域的“USB-C”——一个通用连接器。正如USB-C统一了设备充电标准,MCP统一了模型访问工具和数据的方式。一旦某个东西支持MCP,你的智能体无需定制指令即可使用它。

这也意味着你可以实现“一个模型,多个服务器”的扩展模式,每个服务器具备不同的能力。添加一个新服务器后,智能体会自动知道有哪些工具可用,无需额外配置。对于更高级的设置,客户端和服务器都可以拥有自己的大语言模型,从而实现更智能的功能协商和更丰富的交互。这类似于Visual Studio Code与其扩展之间协商能力的方式,MCP提供了这种级别的灵活性。

MCP不仅仅关乎构建更好的应用,更关乎构建面向未来的应用。通过它,你可以通过将模型基于真实数据来减少“幻觉”现象,可以保护敏感信息安全,还可以赋予模型其训练时从未具备的能力。

本节课中我们一起学习了模型上下文协议(MCP)的基础知识。总结来说,MCP是AI模型使用工具和访问上下文的标准接口。它使你的应用程序更具可扩展性、更一致且更易于维护。你可以充满信心地进行扩展,添加新工具或服务器而不会破坏现有功能。

思考一下你想要构建的AI应用,哪些工具或数据能增强它,以及MCP如何帮助你更可靠地接入这些资源。本章内容到此结束。在下一个视频中,我们将开始探索MCP的核心概念,剖析其运作机制和各部分如何协同工作。别忘了查看GitHub上的SDK,并开始构想你能用MCP构建什么。我们下个视频见。

002:MCP核心概念 🧩

在本章节中,我们将深入探讨模型上下文协议(MCP)的核心。如果你曾好奇AI工具如何与外部API或数据库通信,那么你来对地方了。MCP正是实现这一功能并使其强大的关键。

MCP代表模型上下文协议。它是一种标准化的方式,让语言模型能够与工具、数据源和外部应用程序进行交互。你可以把它想象成你的AI模型与整个数字生态系统之间的翻译官。

MCP的独特之处在于其架构。它是模块化的、灵活的,并且设计成可以与任何编程语言协同工作,无论是Python、Java、JavaScript还是.NET。

工作原理:客户端-服务器架构

MCP采用客户端-服务器架构,包含三个主要角色。

  • 主机:例如VS Code或云端桌面,是用户进行交互的地方。
  • 客户端:位于主机内部,负责与服务器通信。
  • 服务器:提供模型可以使用的工具、数据或提示。

如果你曾使用过能够查找文档、调用天气API或生成代码模板的AI智能体,那么它很可能在底层使用了类似MCP的技术。

以下是各角色的具体职责:

  • 主机:用户提示的发起地。它管理用户界面、权限并连接到服务器。
  • 客户端:处理通信。它将提示发送给服务器,并返回模型的响应。
  • 服务器:通过暴露资源、工具和提示来执行实际工作。

服务器提供的功能

服务器可以提供三种主要功能。

  • 资源:例如本地文件、数据库条目或外部API。
  • 提示:指导AI行为的模板。
  • 工具:模型可以调用的可执行函数,例如Git操作或获取天气。

这正是MCP真正大放异彩的地方。工具就像是AI的插件。你可以定义它们,控制它们的访问权限,并用它们让你的智能体变得更聪明、更有帮助。

以下是一个简单的Python工具定义示例:

def get_weather(location):
    # 在实际应用中,这里会调用天气API
    return {"location": location, "forecast": "Sunny", "temperature": 22}

这个名为 get_weather 的工具接收一个地点参数,并返回一个模拟的天气预报。在现实世界中,它可能会调用天气API并将结构化的JSON数据返回给模型。

通信流程与协议

现在,让我们看看这些部分是如何通信的。当用户发出请求时,主机会发起连接。客户端和服务器会协商能力,确定有哪些工具或数据可用。模型可能会请求一个工具或资源,服务器执行它并返回结果。最后,客户端将所有内容整合到模型的响应中,用户就能看到结果。

所有这些通信都使用一种名为JSON-RPC的结构化消息格式。它确保了组件之间清晰、可预测的通信,无论你使用的是WebSocket、标准输入/输出还是服务与事件。

MCP在JSON-RPC的基础上,增加了以下关键特性:

  • 能力协商
  • 工具调用与结果处理
  • 请求取消与进度跟踪
  • 身份验证与速率限制
  • 最重要的是:用户同意与控制

安全性是内置的。每一次工具调用、每一次数据访问都必须获得批准。这意味着用户可以控制共享什么、执行什么以及向模型暴露什么。

构建你自己的MCP服务器

如果你想构建自己的MCP服务器,我们的课程提供了.NET、Java、Python和JavaScript的示例。无论你使用哪种技术栈,你都可以定义工具、提供服务并参与到MCP生态系统中。

本章总结

总而言之,MCP是连接AI与你数字世界其余部分的桥梁。它是模块化的、安全的,专为现实世界的集成而构建。无论你是在VS Code中调试,还是在构建自定义智能体,MCP都能帮助你的模型作用于世界,而不仅仅是谈论它。

课后挑战

设计一个你希望用MCP构建的工具。它叫什么名字?需要什么输入?会返回什么输出?模型会如何使用它?

本章内容到此结束。在下一章中,我们将讨论安全性。我们将涵盖权限、工具安全以及如何保护你的数据。下节课见!

003:MCP安全最佳实践 🔒

在本章中,我们将讨论AI开发中最重要的主题之一:安全性。使用MCP进行构建时,目标不仅是让系统变得智能,更要确保其安全。MCP引入了一些传统软件中不存在的全新安全挑战。因此,我们将探讨这些挑战以及如何防御它们。

模型上下文协议通过允许AI系统与工具、API和数据交互,解锁了强大的能力。但随之而来的是新的风险,例如提示词注入、工具投毒和动态工具修改。这些威胁可能导致数据泄露、隐私侵犯,甚至AI系统执行非预期的操作,而这一切可能仅仅源于提示词中隐藏的恶意内容。好消息是,你完全可以防御这些攻击,但前提是理解它们。接下来,我们将逐一剖析最常见的风险。

身份验证与令牌管理

上一节我们介绍了MCP带来的新风险,本节中我们来看看身份验证的具体挑战。早期的MCP规范假设开发者会自行搭建OAuth 2.0认证服务器,这对大多数开发者而言并不理想。截至2025年4月,MCP服务器现在可以将身份验证委托给外部身份提供商,例如Microsoft Entra ID,这是一个巨大的改进。

然而,即使有了这项更新,令牌管理不当仍然是一个现实问题。有些人可能倾向于让客户端将其令牌直接传递给下游资源,这被称为令牌透传。这在MCP规范中是明确禁止的,因为它会引入一系列问题:客户端可能绕过关键的安全控制、混淆审计追踪,并破坏服务间的信任边界。核心原则是:只接受专门为MCP服务器颁发的令牌

如果你使用Azure,以下工具和指南将帮助你遵循最佳实践:

  • API管理
  • Microsoft Entra ID
  • 官方MCP安全指南

权限与访问控制

在理解了身份验证后,权限管理是下一个关键环节。MCP服务器通常能访问敏感数据,但如果不加注意,它们可能会获得过多权限。例如,如果你的MCP服务器旨在访问销售数据,它就不应该能够读取你所有的企业文件。

请坚持最小权限原则。以下是具体做法:

  • 使用基于角色的访问控制
  • 定期审计角色权限
  • 定期审查权限设置

AI特有的威胁:间接提示词注入与工具投毒

除了传统的安全挑战,MCP还面临一些AI特有的威胁。间接提示词注入就是其中之一。当恶意指令隐藏在外部上下文(如电子邮件、网页或PDF)中时,就会发生这种情况。AI在读取该内容时,会解释这些隐藏的指令,从而导致非预期操作、数据泄露和潜在的有害内容。

一种相关的攻击是工具投毒,即篡改MCP工具的元数据。由于大语言模型依赖这些元数据来决定调用哪些工具,攻击者可以通过工具描述或参数潜入危险行为。这在托管环境中尤其危险,因为工具可能在用户批准后被更改,这种策略被称为“撤地毯”。

防御措施:提示词防护盾

面对上述威胁,微软提供了一种解决方案:提示词防护盾。这是一个改变游戏规则的工具。提示词防护盾可以防御直接和间接的提示词注入攻击,它包括以下功能:

  • 检测与过滤:在文档和电子邮件中发现恶意输入。
  • 高亮显示:帮助模型区分系统指令和外部文本。
  • 数据标记中的分隔符:明确标记哪些数据是可信的或不可信的。
  • 微软的持续更新:保持防护能力与时俱进。
  • 与Azure内容安全集成:提供更全面的安全保护。

供应链安全与通用最佳实践

我们不应忘记构建AI应用时的供应链安全。你的供应链不仅包括代码,还包括模型、嵌入、API和上下文提供者。在集成任何组件之前,请验证其来源。

以下是确保供应链安全的关键步骤:

  • 使用安全的部署流水线。
  • 扫描漏洞。
  • 持续监控变更。

像GitHub Advanced Security、Azure DevOps和CodeQL这样的工具是此处的关键盟友。请记住,MCP继承了你的环境现有的安全状况。因此,你的整体设置越强大,你的MCP实现就越安全。

以下是需要包含的几个基本安全实践:

  • 采用安全编码实践:参考OWASP Top 10和OWASP for LLMs。
  • 强化你的服务器
  • 使用多因素认证并定期打补丁
  • 启用日志记录和监控
  • 设计时考虑零信任架构

总结与下章预告

本节课中我们一起学习了MCP安全的核心内容。MCP引入了新颖且独特的安全风险,但其中大多数都可以通过正确的控制措施和强大的安全态势来解决。像提示词防护盾、Azure内容安全和GitHub高级安全这样的工具,有助于更轻松地负责任地进行构建。

在下一章,我们将转换方向,进行实际操作,从头到尾讲解创建MCP服务器直至部署的完整流程。我们下一章见。

004:构建你的第一个MCP服务器 🚀

在本章节中,我们将从零开始构建你的第一个MCP项目。无论你是MCP的新手,还是希望提升技能的开发者,这里都是你旅程的起点。我们将学习如何搭建开发环境、创建代理、连接客户端以及实现实时响应流。通过本章的学习,你将掌握构建和部署基础MCP服务器的核心技能。

开发环境准备 🛠️

在开始编码之前,我们需要准备好开发环境。这是确保后续步骤顺利进行的基础。

以下是需要准备的事项:

  • 一个集成开发环境或代码编辑器,例如 VS CodeIntelliJPyCharm
  • 与你所选编程语言对应的包管理器。
  • 你的应用程序将要连接的AI服务所需的任何API密钥。

我们将全程提供链接和指导,帮助你顺利完成所有设置。

本章内容概览 📋

上一节我们介绍了环境准备,本节中我们来看看本章将要完成的具体任务。每一步都建立在前一步的基础上,帮助你逐步掌握实用的MCP技能。

以下是本章的学习路线:

  1. 创建并检查你的第一个MCP服务器:你将构建首个MCP服务器,并使用内置的检查工具来查看其状态。
  2. 编写客户端连接服务器:你将编写一个客户端程序,与刚创建的服务器建立连接。
  3. 集成LLM使客户端更智能:你将为大语言模型添加功能,使客户端能够与服务器进行协商,而不仅仅是发送命令。
  4. 在VS Code中运行一切:学习如何在VS Code环境中运行整个项目,包括使用GitHub Copilot的代理模式。
  5. 引入服务器发送事件流:学习使用服务器发送事件来实现流式传输。
  6. 实现HTTP流式传输:探索适用于可扩展实时应用程序的HTTP流式传输。
  7. 使用AI工具包进行测试:利用Visual Studio Code的AI工具包来快速测试和迭代你的项目。
  8. 进行全面测试:当然,我们会展示如何对一切进行彻底的测试。
  9. 部署你的MCP解决方案:最后,你将学习如何在本地或云端部署你的MTP解决方案。

语言选择与官方SDK 💻

我们支持多种编程语言,你可以在C#JavaJavaScriptTypeScriptPython中找到示例代码。你将使用每种语言对应的官方MCP SDK进行开发。

这些SDK由公式 SDK = 协议抽象层 + 工具函数 构成,它们处理了大量的繁重工作,使你能够专注于构建服务功能,而无需担心协议细节。是的,它们都是开源的。

实践项目与学习资源 📚

每种语言都附带一个简单的计算器代理示例帮助你练习。这些不仅仅是“Hello World”示例,每个都能让你亲身体验工具、提示和资源的使用。

如果你在学习过程中遇到困难,我们提供了丰富的资源,包括示例应用程序、官方文档,甚至在Microsoft Learn上的完整教程。

章节总结与展望 🎯

本节课中我们一起学习了构建第一个MCP服务器的完整路线图。到本章结束时,你将能够构建和测试自己的MCP服务器,连接带或不带LLM的客户端,实现从服务器到客户端的内容流式传输,并将项目部署到云端。内容很多,但这是后续所有学习的基础。

至此,你应该对MCP是什么、它的结构以及如何为成功做好准备有了清晰的认识。在下一章中,我们将从环境搭建转向实际应用,探讨MCP如何应用于实际场景,以及用它构建有用程序所需的知识。我们下一章见。

005:使用真实工具和工作流构建、测试、部署MCP应用程序

在本节课中,我们将学习如何将模型上下文协议的核心概念付诸实践。我们将探索如何在实际场景中构建、测试和部署MCP应用程序。无论你是希望将AI集成到工作流中的企业开发者,还是正在构建自己智能助手的个人开发者,本节内容都将提供实用的指导。

MCP的真正力量不仅在于理解其工作原理,更在于应用它。本章将弥合理论与实践之间的差距,为你提供在多编程语言中实现MCP的工具。

官方SDK与构建模块

上一节我们介绍了MCP的核心概念,本节中我们来看看如何利用官方工具进行开发。

MCP提供了针对多种编程语言的官方SDK,包括C#、Java、TypeScript、JavaScript和Python。每个SDK都提供了你所需的构建模块,例如简单的MCP客户端、功能齐全的服务器,以及对工具、提示词和资源等关键MCP特性的支持。

你可以在MCP示例目录中找到示例项目和入门模板,无需从零开始。

MCP服务器的核心功能

现在,让我们谈谈你实际要构建的内容。每个MCP实现的核心都是服务器,服务器配备了三个核心功能:资源、提示词和工具。

以下是这三个核心功能的详细说明:

  • 资源:提供上下文,例如文档、结构化数据或文件。可以将其视为模型所知道的内容。
  • 提示词:塑造交互,通过模板或工作流引导模型。可以将其视为模型被提问的方式。
  • 工具:让模型能够执行操作,例如调用函数、访问API或执行计算。可以将其视为模型能做的事情。

各语言SDK示例

MCP SDK仓库为你喜欢的语言提供了示例实现。

以下是各语言SDK的特点:

  • C#:包含基础和高级服务器设置,包括ASP.NET集成和工具模式。
  • Java:提供支持Spring框架的构建,包含响应式编程和类型安全的错误处理。
  • JavaScript:SDK同时支持Node.js和浏览器环境,内置WebSocket和流式传输支持。
  • Python:原生支持异步,可与FastAPI或Flask集成,并能自然地与机器学习工具结合。

测试、调试与部署

一旦你的服务器开始运行,下一步就是测试和调试。

MCP Inspector 是你检查服务器实时行为的首选工具。部署服务器后,只需通过API端点连接,列出可用工具并实时运行它们。它就像是你的智能体的实时控制台。

准备上线时,MCP服务器可以部署到Azure Functions上。更好的做法是,你可以在MCP服务器前添加Azure API管理,以处理速率限制和令牌授权、监控性能、平衡负载,并通过Microsoft Entra ID使用OAuth保护你的端点。

使用AZDU命令行工具,只需几条命令,你就可以自动部署所有内容,包括函数应用、API管理和所有依赖项。

如果你想知道是否可以在发布前进行本地测试,答案是肯定的。这些示例设计为既可在本地运行,也可在云端运行,因此你可以快速迭代,后续再扩展。

远程MCP函数示例展示了如何在C#、Python或TypeScript中实现安全、可用于生产的服务器,包括网络隔离、OAuth支持以及对GitHub Copilot代理模式的支持。

本章总结

在本节课中,我们一起学习了MCP应用的实践开发流程。

以下是几个关键要点:

  • 官方SDK让你能够轻松使用你选择的语言构建MCP应用。
  • 工具、提示词和资源是任何MCP服务器的构建模块。
  • MCP Inspector和Azure API管理帮助你测试和保护你的部署。
  • Azure Functions让你仅用几条CLI命令即可扩展你的解决方案。
  • 设计优秀的工作流,这正是发挥你创造力的地方。

现在轮到你了。在本章的练习中,你需要勾勒出自己的工作流,选择所需的工具,并使用你选择的SDK实现其中一个工具。在下一章,我们将探索模型上下文协议实现中更高级的主题。

006:高级MCP - 安全、可扩展和多模态AI代理

在本章中,我们将学习如何将MCP项目提升至生产级别。我们将探讨多模态集成、可扩展性技术、安全最佳实践,以及如何与企业系统(如Azure和Microsoft AI Foundry)集成。这些知识对于构建能够在企业环境中大规模运行的健壮AI应用至关重要。

多模态能力集成 🖼️🎵

上一节我们介绍了MCP的基础,本节中我们来看看如何超越纯文本交互。当您希望MCP服务器能够理解图像、处理音频或生成视频摘要时,就需要集成多模态能力。

以下是多模态支持的核心价值:

  • 实现更丰富的用户交互和更广泛的应用场景。
  • 无论是集成SerERP API等工具,还是启用实时流式响应,多模态支持正成为必备功能。

构建可扩展的架构 📈

MCP服务器不仅用于本地测试,更需要部署在高需求环境中。这意味着您的架构必须支持水平扩展、容器编排和负载均衡策略。

以下是实现可扩展性的关键点:

  • 探索在云环境中扩展MCP服务的模式。
  • 学习如何针对性能和成本进行优化。

企业级安全实践 🔒

当然,随着规模的扩大,责任也随之而来,尤其是在保护MCP服务器安全方面。MCP协议本身内置了安全机制,但实际部署需要更多措施。

以下是本章涵盖的安全主题:

  • 用于资源和授权服务器的OAuth 2.0流程。
  • 保护端点并颁发安全令牌。
  • 使用Microsoft Entra ID对用户进行身份验证。
  • 与API管理层集成。

当您的MCP服务器是受监管或敏感系统的一部分时,这些不仅是建议,更是核心要求。

企业系统集成 🏢

企业集成是另一个重要主题。您将学习如何将MCP服务器与Azure OpenAI和Microsoft AI Foundry等企业级工具连接。

这些集成解锁了强大的功能:

  • 工具编排。
  • 实时网络搜索。
  • 外部API连接。
  • 强大的身份和访问管理。

如果您正在构建在企业生态系统中运行的智能体,这些课程将帮助您构建面向未来的方案。

实践与挑战 💻

本章包含大量实践示例,从路由和采样策略到实时流式传输,甚至与Azure容器应用集成。

如果您准备好迎接挑战,还有一个练习将引导您为特定用例设计一个企业级的MCP实现。这是应用所学所有知识的绝佳方式。

本章总结 📝

让我们总结一下本章的几个关键要点。

以下是构建高级MCP应用的核心收获:

  • 多模态MCP系统允许更丰富的用户交互。
  • 可扩展性需要周密的架构和资源管理。
  • 在企业环境中,安全性不容忽视。
  • 企业集成使MCP与现实世界的AI工作流程保持一致。
  • 优化确保您的MCP服务器能够可靠地大规模运行。

本节课中我们一起学习了如何构建安全、可扩展且支持多模态的企业级MCP应用。无论您是在进行第一个企业项目,还是仅仅对MCP的可能性感到好奇,这些高级主题都将为您提供自信构建的工具。在下一章,我们将探讨如何参与MCP社区并为MCP生态系统做出贡献。

007:如何为MCP做出贡献

在本节课中,我们将要学习如何参与到Model Context Protocol的生态系统中。无论你是想修复第一个问题、分享自己的工具,还是成为核心贡献者,本章都将帮助你理解如何参与MCP社区,以及你的贡献为何重要。

MCP社区不仅仅是维护者和文档,它是一个由开发者、组织、工具构建者和用户共同组成的、不断壮大的网络。所有人都在共同努力,塑造智能应用程序如何与核心模型进行交互。在这个社区中,你会发现:

  • 核心协议维护者:如微软等组织,负责演进协议规范。
  • 工具开发者:创建可复用的软件包和实用程序。
  • 集成提供商:使用MCP来增强自身平台的公司。
  • 终端用户:构建由MCP驱动的应用程序的开发者。
  • 贡献者:像你一样帮助改进生态系统的社区成员。

社区聚集地

上一节我们介绍了MCP社区的构成,本节中我们来看看社区聚集在哪些地方。官方社区主要活跃在以下几个关键平台:

  • MCP GitHub组织:这是核心的代码和协作中心。
  • 协议规范网站:查阅官方文档和标准的地方。
  • GitHub讨论区、议题和拉取请求:进行具体问题讨论和代码贡献的场所。

此外,还有许多社区驱动的渠道,例如教程、博客文章、特定语言的SDK和开放论坛。如果你想分享见解或寻找合作者,这些都是很好的起点。

贡献的多种方式

了解了社区在哪里之后,你可能会问:具体如何为MCP做贡献呢?你不需要为了第一次尝试就编写一个全新的协议扩展。贡献有多种形式,无论是贡献文档、回答社区问题,还是修复漏洞。以下是几种常见的贡献路径:

  • 贡献核心协议代码:例如,在C#中添加对二进制数据流的支持。这可能意味着定义新的接口、处理流元数据,并以一致且可测试的方式返回结果。
  • 提升后端可靠性:例如,修复Java验证器中的一个错误,或改进嵌套模式的处理方式。
  • 构建实用工具:如果你喜欢构建工具,Python是一个很好的起点。例如,可以创建一个类似CSV Pro的工具,它能根据模型的请求来过滤、转换和汇总数据。
  • 非代码类贡献:即使你不是软件工程师也没关系。一些最有价值的贡献是文档、教程、翻译和测试。创建示例应用程序或改进错误信息,都能帮助整个社区成长。

创建并分享你的工具

假设你有一个很棒的工具创意,无论是获取股票报价、翻译文本还是获取天气预报,你都可以创建一个可复用的MCP工具。将其打包供他人使用,然后发布到软件包注册表,就像处理任何其他开源库一样。

以下是几种可能的实现方式:

  • .NET 中,可能是一个NuGet包,例如 MCP.FinanceTools
  • Java 中,可能是一个Maven构件,例如 MCP.WeatherTools
  • Python 中,可能是一个PyPI包,例如 MCP.NLPTools

每个工具都定义了其名称、参数、模式和行为,并且可以被注册、复用,甚至通过社区构建的注册中心被发现。

构建社区基础设施

说到注册中心,想象一下为社区贡献一个完整的服务来帮助大家发现工具。这个基于FastAPI的MCP工具注册中心就是一个例子,展示了开发者们如何围绕协议构建基础设施,而不仅仅是在协议内部进行开发。

优秀贡献的准则

那么,什么样的贡献是好的贡献呢?它始于从小处着手:修复一个拼写错误、编写一个测试、回答一个GitHub讨论区的问题。在此基础上,遵循项目的风格指南,记录你的更改,并提交专注的拉取请求。

请记住,协作不仅仅是关于代码,更是关于沟通。无论你是开启一个拉取请求还是评审他人的请求,都应优先考虑清晰性、正确性和完整性。仔细考虑版本兼容性,并且始终记录破坏性变更。MCP仍在不断发展,你的反馈将塑造这个协议。

总结与行动号召

事实上,任何人都可以为MCP做出贡献,而当你这样做时,每个人都会受益。如果你已准备好留下自己的印记,请前往GitHub仓库,探索开放的议题,并找到一种既符合你的技能又符合你兴趣的参与方式。

在本节课中,我们一起学习了如何参与到MCP社区,了解了社区的构成、聚集地以及多种贡献方式,从代码开发到文档撰写。我们还探讨了如何创建和分享自己的工具,以及优秀贡献者应遵循的准则。MCP是一个充满活力的生态系统,你的参与对其成长至关重要。

008:MCP早期采用者的经验教训 📖

在本章节中,我们将探讨早期采用者如何在现实世界中使用模型上下文协议。这已不仅仅是理论,MCP正在帮助解决金融、医疗保健、企业自动化乃至浏览器自动化等领域的实际问题。让我们一同了解那些将MCP投入生产的先行者们所获得的经验。

概述

在本节课中,我们将学习MCP协议在多个行业中的实际应用案例,了解其带来的具体效益。我们还将介绍几个可供动手实践的项目,并展望MCP的未来发展趋势。

MCP的实际应用案例

上一节我们了解了MCP的基本概念,本节中我们来看看它在真实场景中如何发挥作用。从客户支持机器人到诊断辅助,企业正在使用MCP来标准化AI模型、工具和数据之间的协作方式。MCP创建了一个统一的接口,可以连接多个语言模型,统一安全策略,并在复杂系统中保持行为的一致性。

以下是几个具体的案例研究:

  • 全球企业的客户支持:一家全球性企业使用MCP统一了其客户支持体验。他们构建了一个基于Python的MCP服务器来处理支持请求,该服务器具备资源注册、提示词管理和工单工具等功能。结果是:创建了连接多个LLM的单一接口、集中化的提示词模板以及强大的安全控制。这带来了模型成本降低30%一致性提升45% 的效果。
  • 医疗保健领域的诊断辅助:一家医疗服务提供商利用MCP整合了通用模型和专科模型,同时完全符合HIPAA合规要求。他们使用一个C# MCP客户端,实施了严格的加密、审计以及与电子健康记录系统的无缝集成。结果是:获得了更好的诊断效果、减少了上下文切换,并赢得了医生更多的信任。
  • 金融机构的风险模型标准化:一家金融机构使用MCP来标准化跨部门的风险模型。他们基于Java构建的服务器具备SOC合规的访问控制、版本控制、PII信息脱敏和审计日志功能。他们见证了模型部署周期缩短了40%

动手实践项目

如果你在想:“很酷,但我该如何构建一个这样的系统呢?”不用担心,我们为你准备了一些可以立即尝试的实践项目。

以下是三个可以让你亲自动手体验MCP的途径:

  1. 多提供商MCP服务器:构建一个根据元数据将请求路由到不同模型提供商的服务器。可以设想将OpenAI、Anthropic和本地模型全部整合在一个屋檐下。
  2. 企业提示词管理:设计一个系统,用于在组织范围内对提示词模板进行版本控制、审批和部署。
  3. 内容生成平台:使用MCP来生成风格一致的博客、社交媒体帖子和营销内容,并附带跟踪和审核工作流。

这些项目中的每一个都将教你关键的MCP技能,从路由逻辑、缓存到提示词版本控制和API设计。

MCP的未来趋势

MCP正在快速发展,以下是它未来的方向:

  • 多模态支持:支持图像、音频和视频。
  • 联邦式基础设施:用于安全地共享模型。
  • 边缘计算支持:以及用于模板和工具的市场。

这些趋势正在塑造MCP的未来,它将为从微型物联网设备到企业AI市场的所有领域提供动力。

开源项目与工具

有一个不断增长的开源项目列表可供探索:

  • Playwright MCP Server:让AI智能体能够控制浏览器。
  • Azure MCP:一个完全托管的企业级MCP服务器。
  • Foundry MCP Playground:非常适合原型设计和实验。
  • NLweb:这类工具可以将网站转化为AI助手的自然语言端点。

每一个项目都从不同角度展示了MCP的能力,以及它如何被用来推动创新。

总结

本节课中,我们一起学习了MCP早期采用者的实践经验。他们证明MCP不仅仅是一个协议,更是构建可扩展、安全且一致的AI系统的基础。如果你正在基于大语言模型进行构建,无需重复造轮子。MCP为你提供了正确的结构,而现在你也看到了其他人是如何做到这一点的。

009:MCP开发最佳实践 🏗️

在本章节中,我们将探讨构建健壮、可扩展且可维护的MCP服务器的最佳实践。无论你是创建工具还是部署到生产环境,这些实践都能帮助你确保你的实现是可靠、安全且易于长期维护的。

架构设计原则

上一节我们介绍了MCP的基本概念,本节中我们来看看构建服务器时应该遵循的核心架构原则。

单一职责原则是其中最重要的原则之一。每个工具应专注于做好一件事。这能使你的代码更清晰、API更可预测,并且工具更易于测试和维护。

例如,与其创建一个试图处理天气预报、警报、历史记录等所有功能的“巨型”工具,不如将其拆分为多个专注的小型组件。这使你的工具更具模块化,并能跨工作流复用。

接下来,优先考虑依赖注入。工具应通过其构造函数接收服务,如数据库客户端、API或缓存。这使它们更易于测试,并能针对不同环境进行配置。

你还需要让你的工具具有可组合性。这意味着设计能够相互连接以创建更复杂工作流的工具,将它们视为服务器构建的“乐高积木”。

清晰的模式定义

一个设计良好的模式对于模型和用户都大有裨益。

以下是定义模式时的关键点:

  • 始终为参数提供清晰的描述。
  • 定义约束,如最小/最大值或允许的格式。
  • 保持返回结构的一致性。

这有助于模型理解如何正确使用工具,并减少调用工具时出现意外错误的可能性。

错误处理

错误处理需要深思熟虑并分层进行。

在适当的层级捕获异常,并提供带有有意义错误信息的结构化响应。避免在第一个问题出现时就崩溃。清晰地说明出了什么问题,最好还能说明如何修复。

对于超时或临时服务故障等暂时性问题,你可以使用指数退避模式实现重试逻辑。

性能优化

性能在生产环境中至关重要。

使用缓存来避免重复的昂贵操作。对于输入/输出密集型任务,采用异步模式。对工具使用进行节流,以防止系统过载。这对于调用外部API或处理大型数据集的工具尤其关键。一点优化就能带来很大改善。

安全性

安全性不容妥协。

验证所有输入。检查空字符串,强制长度限制,并防范注入攻击。确保用户在访问受保护资源之前已获得授权。如果一个工具可能暴露敏感数据,默认情况下应进行脱敏处理,除非用户明确请求且已获得授权。

测试策略

现在,让我们谈谈测试。每个MCP服务器都应包含以下测试:

以下是推荐的测试类型:

  • 针对每个工具和资源处理程序的单元测试
  • 针对完整请求-响应生命周期的集成测试
  • 模拟真实模型到工具工作流的端到端测试
  • 评估服务器在负载下行为的性能测试

不要只测试“快乐路径”,还要测试边界情况、错误场景、速率限制等。

设计模式

在设计工具时,可以借鉴一些成熟的模式。

以下是几种有用的设计模式:

  • 工具链:一个工具的输出作为下一个工具的输入。
  • 分发器:将请求路由到专门的工具。
  • 并行处理:同时运行多个工具以提高速度。
  • 错误恢复:在主工具失败时尝试备用方案。
  • 组合:将较小的工作流组合成更大的工作流。

这些模式增加了灵活性,帮助你构建能够优雅扩展和恢复的工作流。

总结

本节课中我们一起学习了MCP开发的核心最佳实践。让我们回顾一下要点:

  • 设计每个工具时,遵循单一、专注的职责。
  • 使用依赖注入来提高可测试性。
  • 编写具有强验证的清晰模式。
  • 优雅地处理错误并记录有意义的信息。
  • 通过缓存、异步模式和节流来优化性能。
  • 通过严格的验证和授权来保护你的工具。
  • 进行所有层级的测试:单元、集成、端到端和负载测试。
  • 最后,使用常见的工作流模式来组织复杂的行为。

正如你所看到的,遵循MCP最佳实践意味着需要从架构、安全性、性能、测试和用户体验等方面进行整体思考。在下一章,我们将探索真实世界的案例研究,展示MCP在各种企业场景中的实际应用。我们下章见。

010:实际应用-真实世界案例研究 🧪

在本章中,我们将探讨一些不同的内容。我们不会引入新的概念或图表,而是将深入探究当MCP协议真正投入使用时会发生什么。本章汇集了多个真实世界的案例研究,旨在展示模型上下文协议在企业环境中的多功能性和强大能力。

那么,为什么要研究案例呢?因为理论只能带你走这么远。一旦你理解了MCP的基础知识,看看其他团队如何应用这些原则、解决实际业务问题、简化工作流程以及将AI连接到现实世界,将非常有帮助。

Azure AI旅行助手参考实现 ✈️

让我们从Azure AI旅行助手参考实现开始。这个案例完全关于多智能体编排。它是一个完整的旅行规划应用程序,其中每个AI智能体扮演特定角色,例如搜索目的地、比较航班和推荐酒店。它结合了Azure OpenAI、Azure AI搜索和MCP,以创建一个安全、可扩展且企业级的体验。你可以将此视为构建跨数据和工具协同工作的协调AI系统的蓝图。

工作流自动化场景 🔄

接下来是一个工作流自动化场景:根据YouTube数据更新Azure DevOps工作项。这听起来简单,但功能强大。通过使用MCP,此设置可以从视频中提取元数据,并自动更新Azure DevOps中的工作项。关键启示是:即使是轻量级的MCP实现,也能消除重复性任务,并确保跨平台的数据一致性。

通过终端访问实时文档 📖

实时文档检索示例展示了Python客户端如何连接到MCP服务器,以在控制台中实时流式传输相关的Microsoft文档。这对于偏爱命令行、并希望在不离开开发环境的情况下获得上下文答案的开发者来说非常棒。

交互式Web学习计划器 📚

现在来看一个交互式案例:一个由Chainlit和MCP驱动的基于Web的学习计划器。用户输入一个主题和时间范围,例如“AI-900认证,八周内”,应用程序会实时构建个性化的每周学习计划,并提供对话式响应。这是一个很好的例子,展示了MCP如何在浏览器中实现自适应学习体验。

VS Code编辑器内文档集成 💻

如果你是VS Code用户,你会喜欢这个案例。编辑器内文档案例研究展示了MCP如何将Microsoft Learn文档直接带入你的代码编辑器。你无需切换标签页,即可搜索、引用文档并将其插入Markdown。当与GitHub Copilot配对使用时,它能在你的编辑器内创建一个无缝的AI驱动文档工作流。

API管理MCP服务器演练 🛠️

最后是API管理MCP服务器演练。这个案例研究展示了如何使用Azure API管理来构建和配置一个MCP服务器。你将看到如何将API作为MCP工具公开、设置速率限制、应用策略,甚至直接从VS Code测试你的设置。如果你想开始使用Azure基础设施托管自己的MCP服务器,这是一个很好的切入点。

案例总结与关键启示 🎯

那么,所有这些例子有什么共同点呢?它们证明了MCP不仅仅是一个框架,更是一个用于构建真实、可扩展AI解决方案的工具包。无论你是在创建多智能体旅行助手,还是将文档流式传输到你的终端,MCP都是连接你的模型、数据和工具的纽带。

这些案例研究旨在启发你,并帮助你识别可以应用于自己项目的模式。以下是关键启示:

  • MCP适用于广泛的场景,从简单的自动化到复杂的多智能体系统。
  • 它能与Azure工具、OpenAI模型以及Web或桌面环境无缝集成。
  • 可重用组件和架构最佳实践可以帮助你更快地推进项目。
  • 最后,你不需要一个庞大的项目就可以开始,即使是轻量级的用例也能快速显示出投资回报。

本章总结

好了,既然你已经看到了MCP在现实世界中的应用,是时候再次动手实践了。下一章将向你介绍一个由四部分组成的实验,该实验将提供动手练习,指导你使用AI工具包将智能体连接到现有的或自定义的MCP服务器。我们下一章见。

在本节课中,我们一起学习了MCP协议在多个真实场景下的应用案例,包括多智能体编排、工作流自动化、文档检索、交互式Web应用、IDE集成以及服务器构建。这些案例展示了MCP如何作为连接AI模型、数据和工具的通用桥梁,为解决实际问题提供了强大而灵活的解决方案。

011:在VS Code中构建AI代理 - 4个结合MCP与AI工具包的实践实验

在本节课中,我们将学习如何在Visual Studio Code中,利用AI工具包扩展和模型上下文协议(MCP)来构建功能强大的AI代理。我们将通过四个循序渐进的模块,从熟悉工具到开发自定义MCP服务器,最终实现一个实用的自动化项目。

模块一:熟悉VS Code中的AI工具包扩展 🛠️

上一节我们介绍了课程概览,本节中我们来看看第一个模块。模块一的目标是让您熟悉VS Code中的AI工具包扩展。安装此扩展后,您可以直接在编辑器内访问一个完整的AI开发环境。

以下是您将开始探索的核心功能:

  • 模型目录:您可以浏览超过100个模型,从OpenAI到GitHub托管的模型。无论是创意写作、代码生成还是数据分析,都有适合各种用例的模型。
  • Playground:这是您测试提示词和调整参数的地方。您可以修改如temperatureMax tokenstop P等参数,这有助于您理解不同模型的行为。
  • 代理构建器:您将使用代理构建器来创建自己的自定义代理。您可以定义其角色、个性、参数,甚至是它可以使用的工具。

模块二:引入模型上下文协议(MCP) 🔌

掌握了基础知识后,模块二将引入模型上下文协议。您可以将MCP视为AI领域的“USB-C”接口。MCP允许您以标准化的方式将您的代理连接到外部工具和服务。

您将动手实践微软自己的MCP服务器生态系统,其中包括与Azure、Dataverse、Playwright等的集成。本模块的亮点是,您将构建一个由Playwright MCP服务器驱动的浏览器自动化代理。

以下是该代理可以执行的操作:

  • 打开网页
  • 点击按钮
  • 提取内容
  • 截取屏幕截图
  • 仅通过描述您希望它做什么,就能运行完整的测试流程

您将直接从代理构建器中配置所有这些功能,从MCP目录中选择Playwright,分配工具能力,并设计驱动Web自动化任务的智能提示词。

模块三:开发自定义MCP服务器 🧑‍💻

现在您的代理已经可以使用外部工具,是时候提升一个等级了。模块三将深入探讨自定义MCP服务器开发的细节。

在模块三中,您将使用AI工具包的Python模板,从零开始构建自己的MCP服务器。您的项目是一个天气MCP服务器,它可以响应自然语言问题,例如“西雅图的天气怎么样?”。

以下是您将学习的关键开发步骤:

  • 使用最新的MCP SDK。
  • 使用MCP检查器配置高级调试。
  • 在VS Code中让您的服务器与代理一起实时运行。
  • 学习如何构建一个MCP服务器项目。
  • 升级依赖项。
  • 设置启动配置和后台任务。
  • 使用代理构建器和检查器测试您的服务器。

这是一个专业级的开发工作流程,为您创建和调试代理可能需要的任何类型的自定义工具做好准备。

模块四:综合实践 - 构建GitHub克隆MCP服务器 🚀

最后,在模块四中,我们将通过一个真实世界的用例将所有知识融会贯通。您将构建一个GitHub克隆MCP服务器,它自动化了开发者经常需要手动执行的步骤。

这个项目包含以下特性:

  • 智能验证和错误处理:确保操作的可靠性。
  • 操作系统逻辑:用于启动VS Code或VS Code Insiders。
  • 与GitHub协作和代理模式的集成:提升团队协作效率。
  • 完全通过自然语言提示驱动的简洁用户体验:这是您在日常工作中真正可以使用的智能开发工具。

总结

本节课中,我们一起学习了如何利用VS Code的AI工具包和MCP协议构建智能代理。通过四个模块的实践,您从安装AI工具包开始,最终能够构建可用于生产环境的MCP服务器,从而使您的代理真正变得强大。我们期待看到您的创作成果。

posted @ 2026-03-26 13:19  布客飞龙V  阅读(1)  评论(0)    收藏  举报