英语轻松读发新版了,欢迎下载、更新

MCP的友好介绍,AI的USB

2025-04-21 12:31:00 英文原文

动手获得大型语言模型实际做有用的事情通常意味着将它们与外部数据,工具或API进行接线。问题是,没有标准的方法可以做到这一点。

拟人化认为它有一个答案:MCP,一种开放协议,有望成为AI的USB-C。因此,我们旋转了一下,看看什么有效。

开源模型上下文协议于去年下半年引入(MCP)项目发达克劳德(Claude)的模型构建者是“将AI系统与数据源连接的通用,开放标准”。

这不仅是数据库之类的数据库。MCP服务器可以将各种工具和资源公开到AI模型,从而启用功能,例如查询数据库,启动Docker容器或与Slack或Slack或Discord(例如Slack或Discord)进行交互。

如果MCP听起来很熟悉,那是因为最近几个月它引起了很多关注。官方MCP服务器Github仓库现在,仅凭Grafana,Heroku和Elastisearch在内的主要软件供应商以及200多个社区和演示服务器,就可以计算数十个官方集成。

如果要将LLM连接到SQL数据库,管理Kubernetes群集或Automate Jira,则很有可能已经可以使用MCP服务器了。实际上,MCP引起了很多关注,Openai和Google现在正在将自己的体重抛在该项目之后。

在本动手指南中,我们将仔细研究MCP在实践中的运作方式,您可以处理的事情,它面临的一些挑战以及如何与Claude Desktop或您自己的模型与Open WebUI一起部署和集成MCP服务器。

MCP的快速概述

在我们跳入如何旋转MCP服务器之前,让我们快速了解引擎盖下发生的事情。

在高级别上,MCP使用典型的客户端服务器体系结构,其中包含三个关键组件:主机,客户端和服务器。

Here's a high-level look at MCP's architecture. Credit: modelcontextprotocol.io

这是MCP的体系结构的高级外观...信用:ModelContextProtocol.io。点击放大任何图像

  • 主持人通常是用户可访问的前端,例如Claude Desktop或Cursor等IDE,并且负责管理一个或多个MCP客户端。 
  • 每个客户使用服务器通过MCP协议维护一对一的连接。客户端和服务器之间的所有消息均使用JSON-RPC交换,但是传输层将根据当前支持的STDIO,HTTP和SERVER-SENT EVETS(SSE)的特定实现而有所不同。
  • MCP服务器本身会向客户介绍特定的功能,这使主机以标准化的方式可以访问它们。这就是为什么文档中将MCP描述为像AI的USB-C一样。

就像USB在很大程度上消除了不同接口与外围设备和存储设备交互的需求一样,MCP旨在允许模型使用通用语言与数据和工具进行交谈。

取决于资源是本地的,例如SQLITE数据库还是遥控器(例如S3存储桶),MCP服务器将直接访问资源或充当中继API调用的桥梁。在后一种情况下,USB-C类比特别适合,因为许多MCP服务器有效地用作适配器,将特定于供应商的接口转换为标准化的格式,语言模型可以更容易与之相互作用。

但是,重要的一点是,这些资源的暴露方式和响应的返回方式是一致的。

MCP更有趣的细微差别之一是双方都起作用。主机应用程序请求数据不仅可以从服务器中进行数据,而且服务器还可以通过采样/创建请求向客户端与LLM通信。不幸的是,此功能尚未得到普遍支持,但是它可以打开一些有趣的代理工作流程的大门。

既然我们已经对MCP是什么是什么是什么以及它的工作方式有了更好的了解,那么让我们深入研究如何使用它们。

用Claude Desktop测试MCP

Claude Desktop is one of the easiest ways to try out MCP

Claude Desktop是尝试MCP的最简单方法之一

鉴于拟人化的MCP,毫不奇怪的是,使用Claude Desktop,最简单的方法之一是使您的手弄脏。

如果您宁愿不使用外部LLM提供商,例如Anthropic,那么在下一部分中,我们将探讨如何将MCP服务器连接到本地模型和流行的开放式WebUI接口。

首先,除Claude桌面外,我们还需要一些依赖项,因为MCP服务器可以在许多不同的环境中运行。为了进行此演示,您需要安装Node.js,Python 3和Python的UVX软件包管理器。

安装依赖项后,请启动Claude Desktop并使用您的人类帐户登录。接下来,导航到应用程序设置,然后到“开发人员”选项卡。

From the Claude Desktop settings, open the "Developer" tab and click "Edit Config" to generate a new MCP config file.

在Claude桌面设置中,打开“开发人员”选项卡并单击“编辑配置”以生成新的MCP配置文件

到达那里后,单击“编辑配置”按钮。这将自动生成一个空的claude_desktop_config.json档案下的文件〜/Library/应用程序支持/Claude/Mac上的文件夹或%appdata%\ claude \Windows上的文件夹。在这里,我们将添加MCP客户端配置。为了测试内容,我们将使用系统时间和文件系统MCP服务器。

打开claude_desktop_config.json在您首选的文本编辑器或IDE中的文件 - 我们使用的是VSCODIUM,并将其内容替换为以下时间服务器配置。随意适应您的首选时区。

{“ McPservers”:{“时间”: {“命令”:“ uvx”,“ args”:[“ mcp-server time”,“  -  local-timezone = utc”]}}}

保存文件并重新启动Claude桌面。重新启动时,您应该在聊天框中注意到一个新图标,指示该工具可用于使用。

然后,我们可以通过提出一个简单的问题来对其进行测试,例如:“纽约几点钟了?”克劳德本身不知道当地时间,但是现在可以查询您的时间服务器来弄清楚它。

Claude on its own does know what time it is at any given point, but given access the MCP time server, now it can now tell time.

Claude本身不知道在任何给定点几点钟,但是给定对MCP时间服务器的访问,现在可以告诉时间

现在,我们将通过更新来尝试文件系统MCP服务器claude_desktop_config.json文件以下文件:

{“ McPservers”:{“时间”: {“命令”:“ uvx”,“ args”:[“ mcp-server time”,“  -  local-timezone = utc”]},,“文件系统”:{“命令”:“ npx”,“ args”:[[“ -y”,“@ModelContextProtocol/Server-Filesystem”,“/用户/用户名/桌面”,“/路径/到/其他/允许/dir”这是给出的}}}

确保您更新/用户/用户名/桌面/路径/到/其他/允许/dir使用文件系统上的目录,您想在保存之前访问模型。

重新启动Claude Desktop,您应该注意到您现在可以使用比以前更多的工具了。具体而言,文件系统MCP服务器允许模型执行各种文件系统功能,包括:

  • 读写文件
  • 编辑文件
  • 创建或列出目录
  • 移动或搜索文件
  • 检索大小或创建日期之类的文件信息
  • 列出它可以访问哪些目录

在这种情况下,我们为Claude访问了我们的桌面。所以我们问这样的事情:

  • 迅速的:“我的桌面上有什么”
  • 迅速的:“你能整理我的桌面吗?”
  • 迅速的:“重命名file.txt到doc.md”

秃鹰技术文档办公桌的一些观察:

  • 我们确实使用较长任务的文件系统MCP服务器观察到一些片状,因此您的里程可能会有所不同。
  • 如果您喜欢使用PIP或DOCKER,则可以找到MCP时间和文件服务器服务器的替代配置这里

将MCP与您自己的型号一起使用并打开WebUI

As of version v0.6.0 Open WebUI supports MCP servers via an OpenAPI bridge

从版本v0.6.0开始,Open WebUI通过OpenAPI桥支持MCP服务器 - 单击以放大

如果您想尝试使用我们自己的自托模型尝试MCP,请最近打开WebUI合并通过兼容兼容的代理支持协议。

如果您不熟悉Open WebUI,它是一个流行的开源Web界面,类似于Chatgpt,它与Ollama,Llama.CPP,VLLM或真正与OpenAI兼容的API Endpoint等推理服务器集成在一起。

先决条件

  • 本指南假定您熟悉本地运行模型。如果您需要帮助,我们将获得有关在几分钟内几乎所有硬件上部署本地LLM的指南就在这里
  • 您还需要在Docker中部署和配置打开的WebUI。我们有一个详细的指南这里
  • 说到Docker,我们将使用容器运行时也可以旋转MCP服务器。

一旦您通过本地托管的型号开放并运行了WebUI,使用Docker,扩展MCP工具支持就非常容易。

如前所述,Open WebUI通过OpenAPI代理服务器支持MCP,该服务器将其视为标准的Res​​tful API。根据开发人员的说法,这有一些好处,包括更好的安全性,更广泛的兼容性和错误处理,同时保持简单。

因此,配置MCP服务器可以说是简单的。但这确实需要将Claude桌面使用的JSON配置转换为标准可执行的字符串。

例如,如果我们想旋转勇敢搜索MCP服务器,它将根据您的输入提示查询勇敢的搜索,我们将配置分解为简单Docker Run命令。

config.json:

{“ McPservers”:{“勇敢搜索”:{“命令”:“ npx”,“ args”:[[“ -y”,“@ModelContextProtocol/Server-Brave-Search”],,“ env”:{“ brave_api_key”:“ your_api_key_here”}}}}

Docker Run命令:

Docker Run -p 8001:8000 -name mcp-brave-search -e brave_api_key = your_api_key_here ghcr.io/open-webui/mcpo:main -api-key-api-key“ top-secret”  -  top-secret“  -

如果您还没有勇敢的搜索API键,则可以免费获得一个这里并用它代替your_api_key_here。另外,更改绝密API键,是独特,私人和安全的东西;以后需要。

提示:如果要在后台运行此服务器,请附加-d跑步。然后,您可以通过运行检查服务器日志Docker日志MCP-Brave-Search

如果您想在Docker中旋转多个MCP服务器,则可以再次运行此命令:

  • 更换8001对于另一个开放端口
  • 更新 - 姓名价值
  • 并相应调整服务器命令

将服务器连接到打开WebUI

MCP服务器启动并运行后,我们可以在用户或系统级别上连接到它。后者需要附加的访问控制列表(ACL)配置,以使该模型可用于用户和型号。为了使事情变得简单,我们将介绍如何在单个用户级别上连接到MCP服务器。

从打开的WebUI仪表板中,导航到用户设置并打开“工具”选项卡。从那里,创建一个新连接,然后输入URL通常类似http:// your_ip_address_here:8001绝密您之前设置的API密钥。

Under user setting, add your MCP server under the "Tools" tab.

在用户设置下,在“工具”选项卡下添加您的MCP服务器

如果一切正常,您应该在右上角收到几条绿色的消息,并且您应该看到一个新图标,指示聊天框旁边的模型可用多少工具。

现在询问您本地安装的模型,并询问不知道的东西;它可以自动触发搜索查询并返回结果。

Once enabled, the model will perfom a a Brave search if you ask it a question it wouldn't otherwise know, such as when the International Supercomputing Conference kicks off.

启用后,如果您提出一个问题,该模型将进行勇敢的搜索,例如,国际超级计算会议今年开始

请注意,此特定的MCP服务器仅包括搜索API,并且实际上没有刮擦页面。为此,您想查看诸如Puppeteer MCP服务器之类的内容,或者利用Open WebUI的内置Web搜索和爬网功能,我们以前探索过这些功能我们的抹布教程

关于本机函数在打开webui中调用的单词

默认情况下,打开WebUI在内部处理工具,确定每次发送新消息时呼叫的适当工具。不利的一面是,每次交换只能调用工具一次。

这种方法的优点是它几乎与任何模型一起使用,并且执行通常是一致的。但是,如果模型需要多次访问工具以满足用户的请求,则可以引入挑战。例如,如果模型正在访问SQL数据库,则可能需要检索其模式以找出如何格式化实际查询。

为了解决这个问题,您可以利用该模型的本机工具称呼功能,该功能可以访问推理操作(React)样式调用中的工具。

棘手的一点是,尽管许多模型都在宣传本机工具支持,但许多较小的工具并不那么可靠。话虽如此,我们很幸运QWEN 2.5在奥尔马(Ollama)运行的模特家族。

在打开的webUI中启用本机函数呼叫相对容易,可以从打开webUI右上角的“控件”菜单上切入。请注意,当启用本机函数调用时,许多推理服务器(例如Ollama,禁用令牌流媒体),因此,如果消息开始一次开始出现而不是像往常一样流式传输,请不要感到惊讶。

You can enable native function calling in Open WebUI from the Chat Controls menu (Little hamburger menu in top right)

您可以从聊天控件菜单(右上角的Little Hamburger菜单)中启用本机函数在打开webUI中调用

现在,当您触发工具调用时,您会注意到一个不同的工具提示,指示使用了哪个工具并下拉以查看返回哪些信息(如果有)。

除了使集成现有的MCP服务器相对容易之外,开发人员还竭尽全力使其易于构建。

他们为多种语言提供SDK,包括Python,TypeScript,Java,Kotlin和C#,以便更容易地调整现有代码以在MCP服务器中使用。

为了测试这一点,我们使用Python在大约五分钟内嘲笑了这款简单的计算器MCP服务器例子模板。

calculator_server.py

来自mcp.server.fastmcp import fastmcpmcp = fastmcp(“ Mathsupport”)@mcp.tool()def计算器(方程:str) - > str:”“”计算方程式的答案。”“”尝试:结果= eval(方程)返回f“ {equation} = {结果}”除例外为E:打印(E)返回“无效方程式”

从那里开始,将其连接到打开WebUI就像在Docker中旋转另一台MCP代理服务器一样简单。

Docker Run -P 8002:8000 -NAME MCP-CALCULATOR -V〜/calculator/calculator.py:/calculator.py ghcr.io/open-webui/mcpo:main -api-key“ top-secret”  -  top-secret  -  uv run-uv run-with mcp [cli] mcp [cli] cli] mcp run/calcalcalculculaterratorater _servy.py。

或者,如果您喜欢Claude桌面:

{“ McPservers”:{“ Mathsupport”:{“命令”:“ uv”,“ args”:[[“跑步”,“ - 和”,“ MCP [CLI]”,“ MCP”,“跑步”,“/path_to_python_script_here/calculator_server.py”这是给出的}}}

显然,这甚至没有刮擦MCP支持的所有功能和功能的表面,但是至少它可以使您了解如何适应代码以与协议一起使用。

MCP远非完美

MCP拥有数千台可用的服务器,以及现在的OpenAI和Google支持开源协议,可以成为AI集成的事实上的标准。

但是,尽管该协议在首次亮相以来的几个月中已设法引起了广泛的关注,但并不是每个人都对其当前的实施感到满意,尤其是在安全性,复杂性和可扩展性方面。

安全仍然是MCP最大的批评之一。除非有适当的审查,保障措施和沙盒,否则这些服务器的易于部署这些服务器,加上许多这些服务器执行任意代码的能力。

我们已经看到了至少一个实例,其中可以利用MCP服务器泄露WhatsApp中的消息历史记录。

除了明显的安全问题外,还有一个问题是,尽管MCP可以极大地简化服务和数据的集成,但它仍然依赖于LLM来利用它们。虽然大多数现代生成模型声称某种工具称呼功能,但快速浏览伯克利功能呼叫排行榜揭示有些比其他更好。

这就是为什么打开WebUI默认为其集成的,尽管是基本功能的功能,因为它仍然比许多模型的内置工具呼叫功能更可靠。

当然,从可管理性的角度来看,即使他们需要的工作要少于更多的成熟的AI集成以构建或部署的功能,也可以使数十个MCP服务器扭转数十个MCP服务器。

话虽如此,对于不到六个月前宣布的一个项目,这将是预期的,其中许多问题将随着其成熟而解决。或者我们希望。谁说我们不是乐观主义者?

其他资源

如果您有兴趣使用更多MCP服务器,建议您查看官员项目页面在Github以及Frank Fiegel的开源MCP服务器上目录截至编写时,其中包括3500多个服务器。

同时,如果您在构建自己的MCP服务器或客户方面很有趣,我们建议您查看官员MCP文档有关更多信息和示例代码。

寄存器旨在在不久的将来为您带来更多类似的本地AI内容,因此请务必在评论部分分享您的燃烧问题,并让我们知道您要看到的内容。®

关于《MCP的友好介绍,AI的USB》的评论


暂无评论

发表评论

摘要

本文讨论了模型 - 客户协议(MCP),这是一种有希望但有争议的方法,用于将各种服务和数据整合到语言模型中。这是关键点的摘要:1。**概述**:-MCP是一种开源协议,允许将外部工具,服务或数据库与AI模型集成。 - 自六个月前首次亮相以来,它已经获得了巨大的吸引力。2。**优势**: - 简化集成:简化将不同的服务和数据源连接到语言模型的过程。 - 广泛采用:在OpenAI和Google等主要参与者的支持下,有可能成为AI集成的事实上的标准。3。**缺点**: - **安全问题**:除非有适当的保障措施,否则在服务器上的部署轻松和潜在执行任意代码会引发安全问题。 - 示例:发现允许消息历史记录通过MCP服务器从WhatsApp泄漏的漏洞。 - **可靠性问题**:与集成功能调用相比,LLMS的内置工具称呼功能可能是不可靠的。 - **操作复杂性**:尽管简单地构建或部署了这些挑战,但管理多个MCP服务器仍增加了操作挑战。4。**实施和用法**: - 轻松部署:使用docker容器(例如docker run'命令)来设置代理服务器。-SDK可用:Python,TypeScript,Java,Kotlin,C#,以帮助开发人员构建自定义MCP服务。 - 使用Python提供了简单的计算器服务的示例。5。**未来的前景**: - 由于项目相对较新且仍在成熟,因此改进的空间。 - 期望通过社区贡献和更新来解决随着时间的推移的当前限制。6。**资源**: - GitHub项目页面:官方MCP存储库,以获取更多信息,问题和讨论。 - 弗兰克·菲格尔(Frank Fiegel)的目录:超过3500多个开源MCP服务器,被列为参考点。 - 官方MCP文档:提供有关建立和部署MCP服务的指南的文件。本文结论是,尽管存在缺点,但MCP在简化AI集成方面表现出了希望,但需要进一步的开发以解决安全性和可靠性问题。