掘金 人工智能 05月14日 10:33
一个简单的MCP Server本地搭建过程
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

Model Context Protocol (MCP) 是一个开放协议,它为大型语言模型 (LLM) 提供了与外部工具和资源连接的标准化方式,类似于 AI 应用的“USB-C 接口”。MCP 允许 AI 助手读取和写入文件、查询数据库、执行命令、控制浏览器以及与第三方 API 交互,极大地扩展了其能力。文章介绍了 MCP 的架构,包括 MCP 服务器和客户端,并以 Python 为例,详细讲解了如何使用 FastMCP 搭建一个 MCP 服务器,使其能够通过 Bilibili API 搜索视频。最后,文章还展示了如何在 VSCode 中配置 MCP 客户端,并演示了如何使用该服务器。

💡 MCP 协议是一个开放协议,旨在标准化应用程序如何向大型语言模型 (LLM) 提供上下文和工具的方式,它允许 AI 模型连接到不同的数据源和工具。

🔌 MCP 的核心架构包括两个主要组件:MCP 服务器,提供工具和资源的服务端;以及 MCP 客户端,使用 MCP 服务器提供的工具和资源的 AI 应用。

🛠️ MCP 服务器提供两种主要功能:工具(可执行函数,允许 AI 执行特定操作)和资源(提供给 AI 的上下文信息,如文件内容、数据库结构等)。

🐍 文章提供了使用 Python 的 FastMCP 搭建 MCP 服务器的示例,该服务器能够通过 Bilibili API 搜索视频,展示了如何定义工具和运行服务器。

💻 文章还介绍了如何在 VSCode 中配置 MCP 客户端,并演示了如何使用配置好的 MCP 服务器与大模型进行交互,从而扩展了 AI 助手的应用范围。

在当今 AI 飞速发展的时代,大型语言模型 (LLM) 如 ClaudeChatGPT 等已经在代码生成、内容创作等方面展现出惊人的能力。然而,这些强大的模型存在一个明显的局限性——它们通常与外部系统和工具隔离,无法直接访问或操作用户环境中的资源和工具。

Model Context Protocol (MCP) 的出现,正是为了解决这一问题。

首先你要了解什么是MCP?

Model Context Protocol (MCP) 是由 Anthropic 公司推出的一个开放协议,它标准化了应用程序如何向大型语言模型 (LLM) 提供上下文和工具的方式。我们可以将 MCP 理解为 AI 应用的"USB-C 接口"——就像 USB-C 为各种设备提供了标准化的连接方式,MCP 为 AI 模型提供了与不同数据源和工具连接的标准化方式。

简单来说,MCP可以做到以下事情:

这极大地扩展了 AI 助手的能力边界,使其不再仅限于对话框内的文本交互。


MCP架构

以上图片来源于 MCP 官方文档

MCP 的架构相对简单,主要包含两个核心组件:

    MCP 服务器 (Server) :提供工具和资源的服务端,可以使用任何编程语言实现,只要能够通过 stdout/stdin 或 HTTP 通信。MCP 客户端 (Client) :使用 MCP 服务器提供的工具和资源的 AI 应用,如 Claude DesktopCursor 编辑器等。

MCP 服务器向客户端提供两种主要能力:

使用Python的FastMCP搭建MCP Server


这里为什么是选择搭建MCP Server而不是MCP Client,一个是MCP Server的适用面更广,可以提供给许许多多的Client调用,还有一个就是MCP Client相比MCP Server的搭建稍微更复杂一点,读者老爷们可以点个赞,下期出MCP Client搭建的教学🫡🫡🫡

首先我们会用到一个py的包管理器,叫做UV,可以通过以下安装

# 这是一个全局安装pip install uv

然后再使用以下命令初始化一个项目目录

uv init mcp-server

得到这样一个项目目录

接着我们需要添加一些依赖

uv add bilibili-api-python "mcp[cli]"

这里的bilibili-api-python是一个便于我们使用bilibili的api的第三方包,而mcp[cli]则是mcp包以及依赖cli

安装完依赖后,这里我们需要在main.py中输入以下这段

from bilibili_api import search, syncfrom mcp.server.fastmcp import FastMCPmcp = FastMCP("Bilibili MCP Server")@mcp.tool()def general_tool(keyword: str) ->dict:    """    Search Bilibili API with the given keyword.    Args:        keyword : Search term to look for on Bilibili.    Returns:        Dictionary containing the search results from Bilibili.        """    return sync(search.search(keyword))if __name__ == '__main__':    mcp.run(transport='stdio')

现在我们来逐步解析这段代码

首先是

首先是引入对应的api,以及定义一个FastMCP,因为是MCP Server嘛,定义这个MCP的名字为Bilibili MCP Server

from bilibili_api import search, syncfrom mcp.server.fastmcp import FastMCPmcp = FastMCP("Bilibili MCP Server")

然后是接下来的核心片段

@mcp.tool()def general_tool(keyword: str) ->dict:    """    Search Bilibili API with the given keyword.    Args:        keyword : Search term to look for on Bilibili.    Returns:        Dictionary containing the search results from Bilibili.        """    return sync(search.search(keyword))

@mcp.tool()是一个装饰器,表示这是一个mcptool,其中的注解非常的关键,它类似于一个prompt,告诉大模型这个是tool是用来干什么的,以便大模型能够更高效地检索应该使用的工具

最后就是启动这个MCP Server

if __name__ == '__main__':    mcp.run(transport='stdio')

transpost表示连接的方式,因为我们这里是使用本机,所以是stdio

配置Client

这里我使用的是Vscode的插件Cline,配置MCP Client,这里我是之前配置过了一次

配置参数解析

✅ disabled:
✅ timeout:
✅ command:
✅ args:
# 这里的路径就是你项目的绝对路径cd D:\workspace\interview\xzc\recording\mcp-serveruv run main.py
具体含义:
✅ transportType:

接着我们Ctrl + s 保存配置文件,左边就会出现一个服务了,这里为绿色表示开启状态,然后点击蓝色的Done,我们就可以开始使用啦

使用之前需要配置一下大模型的厂商和key

比如我询问一下大模型,你能帮我找一些哔哩哔哩上的人气up主吗,出现了以下的内容,这边是因为我把之前的mcp server给暂停掉了,所以出现了无法完成MineCraft UP主搜索任务

现在你可以尽情搭建你想要的MCP Server,都看到这里了,不妨点个赞和关注😋😋😋,下期介绍MCP Server

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

MCP LLM AI 协议
相关文章