启动和运行 Mcp 所需的一切 – Anthropic 的 USB-C for AI

发布时间:2025年4月21日    来源:szf
启动和运行 Mcp 所需的一切 – Anthropic 的 USB-C for AI

快速阅读: 据《The Register》最新报道,MCP是一种开放协议,旨在让大型语言模型连接外部数据和工具。本文介绍了如何使用Claude Desktop和Open WebUI测试MCP,并探讨了其优缺点。尽管MCP受到关注,但在安全性、复杂性和可扩展性方面仍有改进空间。

动手指南:让大型语言模型真正发挥作用通常意味着要将其连接到外部数据、工具或API。问题是,目前还没有统一的标准方法来实现这一点。

Anthropic认为它找到了答案:MCP,这是一个开放协议,旨在成为AI的USB-C。所以我们试了一下,看看它是如何工作的。

去年年底推出的开源模型上下文协议(MCP)项目由Claude的模型构建者开发,旨在成为“连接人工智能系统与数据源的通用开放标准”。

这不仅仅限于数据库这样的数据存储。MCP服务器可以向AI模型暴露各种工具和资源,从而实现查询数据库、启动Docker容器或与Slack或Discord等消息平台交互等功能。

如果你觉得MCP听起来有点熟悉,那是因为它在最近几个月引起了广泛关注。官方MCP服务器的GitHub仓库现在已经有数十个与主要软件供应商的官方集成,包括Grafana、Heroku和Elasticsearch,以及超过200个社区和演示服务器。

如果你想将LLM连接到SQL数据库、管理你的Kubernetes集群或自动化Jira,很可能已经有一个可用的MCP服务器可以完成这些任务。事实上,MCP引起了如此多的关注,以至于OpenAI和Google现在也开始支持这个项目。

在本实践指南中,我们将更详细地探讨MCP的实际工作方式、你可以用它做什么、它面临的一些挑战,以及如何在Claude Desktop或你自己的模型与Open WebUI之间部署和集成MCP服务器。

### MCP快速概述

在我们深入探讨如何启动一个MCP服务器之前,先简单了解一下背后的工作原理。

从高层次来看,MCP使用典型的客户端-服务器架构,具有三个关键组件:主机、客户端和服务端。

以下是MCP架构的高层次视图……图片来源:modelcontextprotocol.io。点击放大任何图像

主机通常是用户可访问的前端,例如Claude Desktop或类似Cursor的IDE,并负责管理一个或多个MCP客户端。

每个客户端通过MCP协议与服务端保持一对一的连接。客户端和服务端之间的所有消息都使用JSON-RPC进行交换,但传输层会根据具体实现而有所不同,目前支持Stdio、HTTP和服务器发送事件(SSE)。

MCP服务端本身向客户端暴露特定的功能,使它们以标准化的方式对主机可用。这就是为什么文档中将MCP描述为AI的USB-C。

就像USB基本上消除了不同接口与外围设备和存储设备交互的需求一样,MCP旨在让模型使用一种通用语言与数据和工具进行通信。

根据资源是本地的还是远程的,例如SQLite数据库或S3桶,MCP服务端要么直接访问资源,要么充当桥接器来转发API调用。在后一种情况下,USB-C的类比尤为贴切,因为许多MCP服务端实际上充当适配器,将供应商特定的接口转换为语言模型更容易交互的标准格式。

遗憾的是,这些资源的暴露方式和返回给模型的响应是一致的。

MCP的一个有趣之处在于它是双向的。不仅主机应用程序可以从服务端请求数据,而且服务端也可以通过采样/创建消息请求与LLM进行通信。遗憾的是,这种双向功能目前还未广泛支持,但它可能为自主工作流开辟新途径。

现在我们对MCP是什么以及它是如何工作的有了更好的理解,让我们深入了解如何使用它们。

### 使用Claude Desktop测试MCP

使用Claude Desktop测试MCP是最简单的方法之一

### 使用Claude Desktop测试MCP

鉴于Anthropic推出了MCP,最简单的方法之一就是使用Claude Desktop。

### 使用Claude Desktop测试MCP

你需要准备:

– 一台Windows 10或更高版本的PC,或者macOS 11或更高版本的Mac(查看这里)
– Claude Desktop
– Python 3(Mac用户已预装)
– UVX
– Node.JS

如果你不想使用外部LLM提供商,如Anthropic,在下一节中我们将探讨如何将MCP服务器连接到本地模型和流行的Open WebUI界面。

为了开始使用,我们需要安装一些依赖项,除了Claude Desktop之外,因为MCP服务器可以在多种环境中运行。在这个演示中,你需要安装Node.js、Python 3以及Python的UVX包管理器。

安装好依赖项后,启动Claude Desktop并使用你的Anthropic账户登录。接下来,导航到应用程序设置,然后进入“开发者”选项卡。

从Claude Desktop设置中,打开“开发者”选项卡并点击“编辑配置”以生成新的MCP配置文件。

在那里,点击“编辑配置”按钮。这将在Mac上的~/Library/Application Support/Claude/文件夹或Windows上的%APPDATA%\Claude\文件夹下自动生成一个空的claude_desktop_config.json文件。这就是我们将添加我们的MCP客户端配置的地方。为了测试一下,我们将使用系统时间和文件系统MCP服务器。

在你喜欢的文本编辑器或IDE中打开claude_desktop_config.json文件——我们使用的是VSCodium——并将其中的内容替换为以下时间服务器配置。请随意调整为你喜欢的时区。

“`json
{“mcpServers”: {
“time”: {
“command”: “uvx”,
“args”: [“mcp-server-time”, “–local-timezone=UTC”]
}
}}
“`

保存文件并重新启动Claude Desktop。当它重新启动时,你应该会在聊天框中注意到一个新的图标,表示该工具可供使用。

然后我们可以试着问一个简单的问题,比如:“纽约现在几点了?”Claude本身不知道当地时间,但现在它可以查询你的时间服务器来找出答案。

Claude本身不知道任何时刻的时间,但有了MCP时间服务器的访问权限,现在它可以报时了。

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

“`json
{
“mcpServers”: {
“time”: {
“command”: “uvx”,
“args”: [“mcp-server-time”, “–local-timezone=UTC”]
},
“filesystem”: {
“command”: “npx”,
“args”: [
“-y”,
“@modelcontextprotocol/server-filesystem”,
“/Users/username/Desktop”,
“/path/to/other/allowed/dir”
]
}
}
}
“`

确保在保存前更新/Users/username/Desktop和/path/to/other/allowed/dir为你希望模型访问的文件系统中的目录。在保存前,请将您希望授予模型访问的文件系统目录替换到相应位置。重新启动Claude Desktop后,您会发现现在可以使用更多工具。具体而言,文件系统MCP服务器让模型能够执行多种文件系统操作,例如:

– 读取和写入文件内容
– 修改文件内容
– 创建或列出文件夹
– 移动或查找文件
– 获取文件信息,比如大小或创建时间
– 列出其有权访问的文件夹

在这种情况下,我们给Claude授予了访问桌面的权限。因此,我们可以向Claude提出类似以下的问题:

**问题示例:**
‘我的桌面上有什么?’

**问题示例:**
‘你能帮我整理一下桌面吗?’

**问题示例:**
‘我的桌面上有什么?’

**问题示例:**
‘请把file.txt重命名为doc.md’

根据秃鹰技术文档组的观察:我们注意到文件系统MCP服务器在处理长时间任务时存在一定的不稳定现象,因此不同用户的使用体验可能会有所差异。如果您倾向于使用PIP或Docker,可以在此处找到MCP时间和文件服务器的其他配置方案。

截至v0.6.0版本,Open WebUI通过OpenAPI桥接支持MCP服务器。如果您更倾向于使用自托管模型的MCP,Open WebUI最近通过与OpenAPI兼容的代理合并了对该协议的支持。它是一个类似于ChatGPT的热门开源网络界面,可与Ollama、Llama.cpp、vLLM或任何OpenAI兼容的API端点等推理服务器集成。

本指南假定您熟悉本地运行模型。如果您需要帮助,我们有一份关于在几分钟内于几乎所有硬件上部署本地LLM的指南,就在下面的链接。

您还需要在Docker中部署和配置Open WebUI。我们有一份详细的设置说明。

正如之前所述,Open WebUI通过OpenAPI代理服务器支持MCP,该服务器将其作为标准RESTful API暴露。

开发者表示,这样做有以下几个优点:更高的安全性、更广泛的兼容性以及更好的错误处理,同时保持简洁。但确实需要将Claude Desktop使用的JSON配置转换为标准可执行字符串。

例如,若要启动一个Brave搜索MCP服务器,它会根据您的输入提示从Brave搜索引擎获取信息,可以将配置分解为一个简单的`docker run`命令。

`config.json`:
“`json
{
“mcpServers”: {
“brave-search”: {
“command”: “npx”,
“args”: [
“-y”,
“@modelcontextprotocol/server-brave-search”
],
“env”: {
“BRAVE_API_KEY”: “您的API密钥”
}
}
}
}
“`

`Docker运行命令`:
“`bash
docker run -p 8001:8000 –name MCP-Brave-Search -e BRAVE_API_KEY=您的API密钥 ghcr.io/open-webui/mcpo:main –api-key “top-secret” — npx -y @modelcontextprotocol/server-brave-search
“`

如果您还没有Brave搜索API密钥,可以在此处免费获取一个,并将其替换为您的API密钥。

此外,将`top-secret`API密钥更改为唯一的、私有的且安全的内容;稍后将会用到。

提示:如果要在后台运行此服务器,在`run`命令后添加`-d`。然后可通过运行`docker logs MCP-Brave-Search`查看服务器日志。

如果您想在Docker中启动多个MCP服务器,可以通过以下方式再次运行该命令:将`8001`替换为另一个空闲端口,更新`–name`参数值,并相应地修改服务器命令。

一旦您的MCP服务器启动并运行,我们可以在用户层面或系统层面连接到它。后者需要额外的访问控制列表(ACL)设置,以便模型可供用户和其他模型使用。为了简化操作,我们将介绍如何在单个用户层面连接到MCP服务器。

从Open WebUI仪表板导航至用户设置并打开‘工具’选项卡。在那里,创建新的连接并输入URL(通常类似于http://您的IP地址:8001),以及之前设置的`top-secret`API密钥。

在用户设置下,在‘工具’选项卡中添加您的MCP服务器。如果一切正常,您将在右上角看到几个绿色通知消息,并会看到一个新的图标,指示聊天框旁有多少工具可用。

一旦启用,当您向模型提出原本不知道的问题(例如今年国际超算大会什么时候开始),模型可以自动触发搜索查询并返回结果。

请注意,此MCP服务器仅包含搜索API,并不会实际抓取网页内容。对此,您可以考虑使用类似Puppeteer MCP服务器的工具,或者利用Open WebUI内置的网页搜索和爬虫功能,我们在之前的RAG教程中已探讨过这些功能。

#### 关于Open WebUI中原生函数调用的一句话

默认情况下,Open WebUI内部处理工具调用,每次发送新消息时都会确定合适的工具进行调用。缺点是每个对话中工具只能调用一次。这种方法的优点在于几乎适用于所有模型,并且执行过程通常一致。

然而,如果模型需要多次访问工具以满足用户的需求,这可能会带来挑战。例如,如果模型正在访问SQL数据库,它可能需要检索数据库模式以弄清楚如何格式化实际查询。

为了解决这个问题,您可以利用模型的原生工具调用功能,以推理-行动(ReACT)方式进行调用。尽管许多模型声称支持原生工具调用,但许多小型模型并不十分可靠。

话虽如此,我们在Ollama上运行的Qwen 2.5系列模型表现良好。

在Open WebUI中启用原生函数调用相对简单,并可从Open WebUI右上角的‘控制’菜单中切换。

请注意,启用原生函数调用时,许多推理服务器(如Ollama)会禁用标记流式传输,因此不要惊讶于消息不是逐字显示。

你可以在Open WebUI的聊天控制菜单(右上角的小汉堡图标)中启用原生功能调用。

现在,当你触发工具调用时,你会看到一个不同的工具提示,显示所使用的工具名称,并且可以通过下拉菜单查看返回的信息。

### MCP软件开发工具包(SDKs)

想要其他MCP服务器开发工具包?请查看以下链接:

– MCP TypeScript SDK
– MCP Java SDK
– MCP Kotlin SDK
– MCP C# SDK

除了相对容易集成现有的MCP服务器外,开发者们还努力使构建MCP服务器变得简单。为了测试这一点,我们使用Python示例模板在大约五分钟内创建了一个简单的计算器MCP服务器。

`calculator_server.py`:

“`python
from mcp.server.fastmcp import FastMCP

mcp = FastMCP(“MathSupport”)

@mcp.tool()
def calculator(equation: str) -> str:
“””计算方程的答案。”””
try:
result = eval(equation)
return f”{equation} = {result}”
except Exception as e:
print(e)
return “无效方程”
“`

接下来,将其连接到Open WebUI就像在Docker中启动另一个MCP代理服务器一样简单。

“`bash
docker run -p 8002:8000 –name MCP-Calculator -v ~/calculator/calculator.py:/calculator.py ghcr.io/open-webui/mcpo:main –api-key “top-secret” — uv run –with mcp[cli] mcp run /calculator_server.py
“`

或者如果你更喜欢Claude桌面:

“`json
{
“mcpServers”: {
“MathSupport”: {
“command”: “uv”,
“args”: [
“run”,
“–with”,
“mcp[cli]”,
“mcp”,
“run”,
“/PATH_TO_PYTHON_SCRIPT_HERE/calculator_server.py”
]
}
}
}
“`

显然,这仅仅展示了MCP支持的一些特性和功能,但它至少让你了解了如何根据协议进行调整。

### MCP远非完美

随着成千上万的可用服务器,以及现在OpenAI和Google的支持,MCP有望成为AI集成的事实标准。但尽管该协议自推出以来吸引了相当多的关注,不是所有人都对其当前实现感到满意,特别是在安全性、复杂性和可扩展性方面。

安全性是MCP受到的主要批评之一。这些服务器部署的简便性,加上许多服务器能够执行任意代码的能力,在没有适当审查、保障措施和沙箱化的情况下可能会有问题。我们已经发现至少有一个例子,MCP服务器可能被利用来泄露WhatsApp的消息历史记录。

你喜欢我们的AI报道吗?你可能也会对这些感兴趣:

– 在不到10分钟的时间内在PC上而不是云端运行LLM
– 从RAGs到财富:让本地AI聊天机器人变得更聪明的实际指南
– AI工作容器化的友好指南
– 大型语言模型中的工具调用快速指南
– 在家中隐私环境下开始微调LLMs所需的一切知识
– 亲爱的,我缩小了LLM!量化入门指南——以及测试方法
– LLM性能的捷径:投机解码简介
– Meta赋予Llama 3视觉能力,如果它也有大脑就好了
– Stable Diffusion和Automatic1111的本地AI图像生成友好指南
– DeepSeek发出免费挑战者对抗OpenAI的o1——这是如何在你的PC上使用的

### 额外资源

如果你有兴趣尝试更多的MCP服务器,我们建议查看GitHub上的官方项目页面以及Frank Fiegel的开源MCP服务器目录,截至撰写时该目录包含超过3500个服务器。

同时,如果你想自己构建MCP服务器或客户端,我们建议查看官方MCP文档以获取更多信息和示例代码。

《注册报》计划未来带来更多本地AI相关内容,欢迎在评论区分享你的问题并告诉我们你希望看到的内容。

(以上内容均由Ai生成)

你可能还想读

美国能源部 17 个国家实验室全景及创世纪计划战略布局分析

美国能源部 17 个国家实验室全景及创世纪计划战略布局分析

快速阅读: 美国能源部17个国家实验室构成顶尖科研体系,在基础科学、能源安全、气候变化等领域发挥关键作用。拥有全球领先的超算资源及顶尖人才,年经费约220亿美元。随着“创世纪计划”启动,实验室将形成协同网络,推动美国在清洁能源、量子计算等前 […]

发布时间:2025年12月8日
谷歌Gemini 3 Pro发布

谷歌Gemini 3 Pro发布

快速阅读: 谷歌发布新一代推理模型Gemini 3 Pro,显著提升数学、编程和视觉理解能力。一经发布,Gemini 3 Pro几乎横扫各大评测榜单,在LMArena大模型竞技场中以1501的Elo得分高居榜首。在MathArena数学竞赛 […]

发布时间:2025年11月19日
独具创新,直击痛点:深度解析华为十大最新方案

独具创新,直击痛点:深度解析华为十大最新方案

快速阅读: 第三个方案,是华为的U6GHzAAU天线。综合来看,华为的U6GAAU,真正实现了容量覆盖双优,助力全球U6G商用。LampSiteX,是LampSite系列的最新型号。第五个方案,是华为有源天线产品——EasyAAU。Easy […]

发布时间:2025年11月13日
Palantir估值承压仍领跑AI赛道

Palantir估值承压仍领跑AI赛道

快速阅读: 近期,美国AI概念股整体承压,Palantir与英伟达遭遇做空传闻,引发市场短暂震荡。然而,在宏观调整与估值质疑中,Palantir仍凭借强劲业绩与差异化AI布局维持长期增长势头。分析人士认为,该公司正处于由“政府数据支撑”向“ […]

发布时间:2025年11月12日
Palantir与Snowflakes深化AI合作

Palantir与Snowflakes深化AI合作

快速阅读: Snowflake 与 Palantir 宣布建立战略合作,整合双方的数据与AI能力,使企业能够在统一的数据基础上直接调用 Palantir 的AI分析与智能应用工具,加速企业级AI落地。 2025年10月,Snowflake […]

发布时间:2025年11月10日
Palantir与迪拜控股共建AI公司

Palantir与迪拜控股共建AI公司

快速阅读: Dubai Holding 与 Palantir 宣布成立合资公司 Aither,致力于为中东地区政府与企业提供人工智能转型解决方案。该合作标志着 Palantir 在中东技术布局的进一步深化,也为当地公共服务与产业数字化提供新 […]

发布时间:2025年11月10日
Palantir携手Lumen共建企业AI平台

Palantir携手Lumen共建企业AI平台

快速阅读: 2025年10月,Palantir Technologies与Lumen Technologies宣布达成战略合作,联合打造面向企业级应用的人工智能服务平台。双方将以Palantir的Foundry与AIP平台为核心,推动通信与 […]

发布时间:2025年11月7日
Palantir携手Hadean拓展英国国防部AI战场模拟平台

Palantir携手Hadean拓展英国国防部AI战场模拟平台

快速阅读: 2025年10月,数据智能公司 Palantir Technologies 宣布与英国分布式计算企业 Hadean 达成战略合作,双方将共同为英国国防部(UK Ministry of Defence, UK MoD)扩展基于人工 […]

发布时间:2025年11月7日