动手获得大型语言模型实际做有用的事情通常意味着将它们与外部数据,工具或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使用典型的客户端服务器体系结构,其中包含三个关键组件:主机,客户端和服务器。
就像USB在很大程度上消除了不同接口与外围设备和存储设备交互的需求一样,MCP旨在允许模型使用通用语言与数据和工具进行交谈。
取决于资源是本地的,例如SQLITE数据库还是遥控器(例如S3存储桶),MCP服务器将直接访问资源或充当中继API调用的桥梁。在后一种情况下,USB-C类比特别适合,因为许多MCP服务器有效地用作适配器,将特定于供应商的接口转换为标准化的格式,语言模型可以更容易与之相互作用。
但是,重要的一点是,这些资源的暴露方式和响应的返回方式是一致的。
MCP更有趣的细微差别之一是双方都起作用。主机应用程序请求数据不仅可以从服务器中进行数据,而且服务器还可以通过采样/创建请求向客户端与LLM通信。不幸的是,此功能尚未得到普遍支持,但是它可以打开一些有趣的代理工作流程的大门。
既然我们已经对MCP是什么是什么是什么以及它的工作方式有了更好的了解,那么让我们深入研究如何使用它们。
鉴于拟人化的MCP,毫不奇怪的是,使用Claude Desktop,最简单的方法之一是使您的手弄脏。
如果您宁愿不使用外部LLM提供商,例如Anthropic,那么在下一部分中,我们将探讨如何将MCP服务器连接到本地模型和流行的开放式WebUI接口。
首先,除Claude桌面外,我们还需要一些依赖项,因为MCP服务器可以在许多不同的环境中运行。为了进行此演示,您需要安装Node.js,Python 3和Python的UVX软件包管理器。
安装依赖项后,请启动Claude Desktop并使用您的人类帐户登录。接下来,导航到应用程序设置,然后到“开发人员”选项卡。
到达那里后,单击“编辑配置”按钮。这将自动生成一个空的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桌面。重新启动时,您应该在聊天框中注意到一个新图标,指示该工具可用于使用。
然后,我们可以通过提出一个简单的问题来对其进行测试,例如:“纽约几点钟了?”克劳德本身不知道当地时间,但是现在可以查询您的时间服务器来弄清楚它。
现在,我们将通过更新来尝试文件系统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访问了我们的桌面。所以我们问这样的事情:
秃鹰技术文档办公桌的一些观察:
如果您想尝试使用我们自己的自托模型尝试MCP,请最近打开WebUI合并通过兼容兼容的代理支持协议。
如果您不熟悉Open WebUI,它是一个流行的开源Web界面,类似于Chatgpt,它与Ollama,Llama.CPP,VLLM或真正与OpenAI兼容的API Endpoint等推理服务器集成在一起。
一旦您通过本地托管的型号开放并运行了WebUI,使用Docker,扩展MCP工具支持就非常容易。
如前所述,Open WebUI通过OpenAPI代理服务器支持MCP,该服务器将其视为标准的Restful 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
对于另一个开放端口 - 姓名
价值MCP服务器启动并运行后,我们可以在用户或系统级别上连接到它。后者需要附加的访问控制列表(ACL)配置,以使该模型可用于用户和型号。为了使事情变得简单,我们将介绍如何在单个用户级别上连接到MCP服务器。
从打开的WebUI仪表板中,导航到用户设置并打开“工具”选项卡。从那里,创建一个新连接,然后输入URL通常类似http:// your_ip_address_here:8001
和绝密
您之前设置的API密钥。
如果一切正常,您应该在右上角收到几条绿色的消息,并且您应该看到一个新图标,指示聊天框旁边的模型可用多少工具。
现在询问您本地安装的模型,并询问不知道的东西;它可以自动触发搜索查询并返回结果。
请注意,此特定的MCP服务器仅包括搜索API,并且实际上没有刮擦页面。为此,您想查看诸如Puppeteer MCP服务器之类的内容,或者利用Open WebUI的内置Web搜索和爬网功能,我们以前探索过这些功能我们的抹布教程。
默认情况下,打开WebUI在内部处理工具,确定每次发送新消息时呼叫的适当工具。不利的一面是,每次交换只能调用工具一次。
这种方法的优点是它几乎与任何模型一起使用,并且执行通常是一致的。但是,如果模型需要多次访问工具以满足用户的请求,则可以引入挑战。例如,如果模型正在访问SQL数据库,则可能需要检索其模式以找出如何格式化实际查询。
为了解决这个问题,您可以利用该模型的本机工具称呼功能,该功能可以访问推理操作(React)样式调用中的工具。
棘手的一点是,尽管许多模型都在宣传本机工具支持,但许多较小的工具并不那么可靠。话虽如此,我们很幸运QWEN 2.5在奥尔马(Ollama)运行的模特家族。
在打开的webUI中启用本机函数呼叫相对容易,可以从打开webUI右上角的“控件”菜单上切入。请注意,当启用本机函数调用时,许多推理服务器(例如Ollama,禁用令牌流媒体),因此,如果消息开始一次开始出现而不是像往常一样流式传输,请不要感到惊讶。
现在,当您触发工具调用时,您会注意到一个不同的工具提示,指示使用了哪个工具并下拉以查看返回哪些信息(如果有)。
除了使集成现有的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拥有数千台可用的服务器,以及现在的OpenAI和Google支持开源协议,可以成为AI集成的事实上的标准。
但是,尽管该协议在首次亮相以来的几个月中已设法引起了广泛的关注,但并不是每个人都对其当前的实施感到满意,尤其是在安全性,复杂性和可扩展性方面。
安全仍然是MCP最大的批评之一。除非有适当的审查,保障措施和沙盒,否则这些服务器的易于部署这些服务器,加上许多这些服务器执行任意代码的能力。
我们已经看到了至少一个实例,其中可以利用MCP服务器泄露WhatsApp中的消息历史记录。
除了明显的安全问题外,还有一个问题是,尽管MCP可以极大地简化服务和数据的集成,但它仍然依赖于LLM来利用它们。虽然大多数现代生成模型声称某种工具称呼功能,但快速浏览伯克利功能呼叫排行榜揭示有些比其他更好。
这就是为什么打开WebUI默认为其集成的,尽管是基本功能的功能,因为它仍然比许多模型的内置工具呼叫功能更可靠。
当然,从可管理性的角度来看,即使他们需要的工作要少于更多的成熟的AI集成以构建或部署的功能,也可以使数十个MCP服务器扭转数十个MCP服务器。
话虽如此,对于不到六个月前宣布的一个项目,这将是预期的,其中许多问题将随着其成熟而解决。或者我们希望。谁说我们不是乐观主义者?
如果您有兴趣使用更多MCP服务器,建议您查看官员项目页面在Github以及Frank Fiegel的开源MCP服务器上目录截至编写时,其中包括3500多个服务器。
同时,如果您在构建自己的MCP服务器或客户方面很有趣,我们建议您查看官员MCP文档有关更多信息和示例代码。
寄存器旨在在不久的将来为您带来更多类似的本地AI内容,因此请务必在评论部分分享您的燃烧问题,并让我们知道您要看到的内容。®