模型上下文协议工具集

MCP是一个用于AI应用与外部系统间通信和上下文共享的协议,提供工具、资源和提示等核心功能,适用于动态工具调用和AI集成场景。

  • by Alaa-Arbi
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Alaa-Arbi/MCP-Tutorial

使用说明

MCP教程

这是一个代码仓库,我在其中跟踪我用来学习模型上下文协议的代码

MCP架构的主要参与者是:

  • MCP主机:协调和管理一个或多个MCP客户端的AI应用程序
  • MCP客户端:一个与MCP服务器保持连接并从MCP服务器获取上下文以供MCP主机使用的组件
  • MCP服务器:为MCP客户端提供上下文的程序

MCP由两层组成:

  • 数据层:定义基于JSON-RPC的协议
  • 传输层:定义通信机制(本地服务器的Stdio传输和远程服务器的Streamable HTTP传输)

MCP原语是MCP中最重要的概念。它们定义了客户端和服务器可以互相提供什么。这些原语指定了可以与AI应用程序共享的上下文信息的类型以及可以执行的操作范围。

MCP服务器原语:

  • 工具:人工智能应用程序可以调用以执行操作的可执行函数(例如,文件操作、API调用、数据库查询)
  • 资源:为人工智能应用程序提供上下文信息的数据源(例如,文件内容、数据库记录、API响应)
  • 提示:可重用的模板,有助于构建与语言模型的交互(例如,系统提示、少数镜头示例)

作为一个具体的例子,考虑一个提供数据库上下文的MCP服务器。它可以公开用于查询数据库的工具、包含数据库模式的资源以及包含少量与工具交互的快照示例的提示。

MCP客户端原语:这些原语允许MCP服务器作者构建更丰富的交互。

  • 采样:允许服务器从客户端的AI应用程序请求语言模型完成。当服务器的作者想要访问语言模型,但希望保持模型独立性,并且不在其MCP服务器中包含语言模型SDK时,这很有用。他们可以使用采样/完成方法向客户端的AI应用程序请求语言模型完成。
  • 吸引:允许服务器向用户请求其他信息。当服务器的作者想要从用户那里获取更多信息或要求确认某个操作时,这很有用。他们可以使用启发/请求方法向用户请求其他信息。
  • 日志记录:使服务器能够向客户端发送日志消息,以进行调试和监控。

使用MCP进行实践学习

MCP客户端

这 mcp_client.py 该脚本演示了如何实现MCP客户端。主要特征包括:

  • 连接到MCP服务器:客户端连接到服务器脚本(例如。, mcp_server.py)使用Stdio传输层。
  • 工具发现:客户端列出服务器提供的可用工具并动态使用它们。
  • OpenAI集成客户端使用OpenAI的GPT-4o模型来处理查询并与服务器公开的工具进行交互。
  • 诱导处理:客户端处理来自服务器的启发请求,允许用户确认或取消操作。
  • 交互式聊天循环:客户端为用户输入查询和接收响应提供了一个交互式循环。

MCP服务器

这 mcp_server.py 该脚本演示了如何实现MCP服务器。主要特征包括:

  • 工具实施:服务器提供以下工具 get_alerts (获取天气警报)和 get_forecast (获取某个地点的天气预报)。
  • 资源暴露:服务器公开气象站信息和ID等资源。
  • 快速定义:服务器定义提示,例如 weather_summary_prompt,以构建与客户端的交互。
  • 征集请求:服务器在执行工具之前使用启发来确认用户操作。
  • 与外部API集成:服务器从美国国家气象局(NWS)API获取数据,以提供实时天气信息。

关键要点

  • MCP架构:实践实施突出了MCP客户端和服务器之间的交互,展示了工具、资源和提示的使用。
  • 动态工具使用客户端动态发现并调用服务器提供的工具,展示了MCP的灵活性。
  • 用户交互:Elicitation支持丰富的用户交互,允许服务器请求其他信息或确认。
  • AI集成OpenAI的GPT-4o模型在客户端的集成展示了AI如何增强基于MCP的应用程序。

这种实践经验加深了人们对MCP如何促进人工智能应用程序和外部系统之间的通信和上下文共享的理解。