基于MCP工具的开发-部署-上线与维护全流程技术实现与应用研究
1. MCP技术速成
1.1 MCP服务器Server合集
Model Context Protocol servers
:https://github.com/modelcontextprotocol/servers
Smithery
- MCP 服务器注册表,用于为您的 LLM 代理找到合适的工具,
地址
:https://smithery.ai/
Awesome MCP Servers
:https://github.com/punkpeye/awesome-mcp-servers
MCP.so – MCP资源托管平台,支持实时在线调试接口:
https://mcp.so/
1.2 MCP客户端Client
除了能在命令行中创建MCP客户端外,还支持各类
客户端的调用
:https://modelcontextprotocol.io/clients
1.3 快速接入MCP工具示例
将高德地图导航MCP(服务器)接入Cherry Studio(客户端)的示例:
CherryStudio代码地址
:https://github.com/CherryHQ/cherry-studio
CherryStudio文档详解
:https://docs.cherry-ai.com/cherry-studio/download
下载完成后,您将直接进入对话界面:
接下来,可以将模型切换为DeepSeek官方提供的API接口:
然后开启:
尝试使用:DeepSeek chat
此外,还需安装uv
和bun
文件以确保MCP工具的正常调用。
其他操作系统配置详见
:https://docs.cherry-ai.com/advanced-basic/mcp/install
Cherry Studio
接入MCP流程:
-
尝试接入
Filesystem
MCP工具:https://github.com/modelcontextprotocol/servers/tree/main/src/filesystem在MCP配置编辑页面输入以下内容:
{"mcpServers": {"filesystem": {"isActive": true,"command": "npx","args": ["-y","@modelcontextprotocol/server-filesystem","C:/Users/Administrator/Desktop/最新流量视频/MCP体验课/MCPTest"],"name": "filesystem"}} }
然后点击开启:
在对话中开启MCP工具,这里可选一个或者多个工具:
同时再尝试接入fetch MCP
工具:https://github.com/modelcontextprotocol/servers/tree/main/src/fetch
Fetch MCP 服务器是基于模型上下文协议(Model Context Protocol,MCP)开发的服务器工具,专为增强大型语言模型(LLMs)的网页信息处理能力而设计。它通过将HTML网页内容转换为清晰易读的Markdown格式,帮助LLMs更高效地解析和利用网络信息。
主要功能:
- 网页内容获取与转换:
Fetch MCP
提供fetch
工具,能够从指定URL
抓取网页内容并转换为 Markdown 格式,便于LLMs 处理和使用。 - 多格式支持:除 Markdown 外,
Fetch MCP
还支持获取网页的HTML、JSON
及纯文本格式,适应多样化应用需求。 - 智能内容截取:用户可通过
start_index
参数设定提取起始位置,实现网页内容分段读取,精准定位所需信息。
同样需要在MCP配置页面写入如下内容:
"fetch": {"command": "uvx","args": ["mcp-server-fetch"]}
开启工具:
并尝试进行调用:
2. MCP服务器调用流程
2.1 MCP技术生态概览
MCP基础技术生态结构:
2.1.1 MCP通信协议概述
MCP(Model Context Protocol)
是一种标准化协议,旨在统一大规模模型与工具之间的通信。该协议明确规定了消息格式和交互方式,支持包括stdio、Server-Sent Events(SSE)和Streamable HTTP
在内的多种传输机制。每种通信方式各具特点,可根据具体应用场景灵活选用。
2.1.1.1 Stdio 传输(Standard Input/Output)
stdio
传输方式是最简单的通信方式,主要用于本地工具间的消息传递。它通过标准输入(stdin)
和标准输出(stdout)
建立数据传输通道,特别适合本地进程间的交互场景。
工作方式:客户端和服务器通过标准输入输出流(
stdin/stdout
)进行通信。客户端向服务器发送命令和数据,服务器执行并通过标准输出返回结果。
应用场景:适用于本地开发、命令行工具、调试环境,或者模型和工具服务在同一进程内运行的情况。
2.1.1.2 Server-Sent Events(SSE)
SSE(Server-Sent Events)
是一种基于HTTP协议的服务器到客户端的单向通信机制。它通过持久化的HTTP连接,使服务器能够主动向客户端推送实时数据更新。这种技术特别适合需要持续接收服务器消息的应用场景。
工作流程:客户端发起
HTTP GET
请求与服务端建立连接后,服务端将持续以数据流形式推送信息,客户端通过解析这些流数据实现实时信息获取。
典型应用:该方案特别适合服务端主动推送数据的场景,包括但不限于即时通讯、气象预报、新闻推送等实时性要求较高的领域。
2.1.1.3 Streamable HTTP
Streamable HTTP
更新公告:https://github.com/modelcontextprotocol/modelcontextprotocol/blob/main/docs/specification/2025-03-26/basic/transports.mdx#streamable-http
MCP更新公告:https://modelcontextprotocol.io/development/updates
Streamable HTTP
是 MCP 协议中新增的一种基于 HTTP 的双向流式传输方式。与传统 HTTP 的请求-响应模型不同,它通过长连接实现服务器向客户端的实时数据推送,并支持多个请求和响应的并发流式传输。需要注意的是,MCP仅规范了Streamable HTTP
协议层的通信规则,并未提供配套的SDK客户端。开发者若需实现Streamable HTTP
机制的客户端和服务端,可采用Python httpx等第三方库进行开发。
工作方式:客户端采用
HTTP POST
方式向服务器发起请求,支持接收流式响应(包括JSON-RPC
响应或SSE
流)。对于大数据量请求或需要持续交互的场景,服务器可通过长连接实现数据分批推送。
应用场景:特别适合对高并发和低延迟有严格要求的分布式系统,包括跨服务/跨网络应用。典型应用包括实时流媒体、在线游戏、金融交易等高并发业务场景。
2.1.1.4 MCP 传输方式优劣势分析
三种传输方式概述如下:
StdIO 传输:适用于本地进程间的简单通信,是命令行工具和调试阶段的理想选择,但缺乏分布式能力。
SSE 传输:适合实时数据推送和浏览器端的单向通知,但在双向交互或复杂场景中存在局限性。
Streamable HTTP 传输:作为最灵活且功能强大的方案,能够应对高并发、高交互的分布式系统需求,尽管实现复杂度较高,但其适用性覆盖更复杂的业务场景。
2.1.2 MCP SDK概述
MCP SDK
现已支持多种编程语言,包括Python、TypeScript、Java、Kotlin和 C# ,可用于开发客户端和服务器端应用:https://github.com/modelcontextprotocol
2.2 MCP服务器标准接入流程
2.2.1 MCP服务器基本接入流程
MCP工具的客户端接入流程如下:
采用 JSON
配置文件定义服务启动命令(如 npx、python、node 等)是一种通用且灵活的实现方式。只需在配置中指定相应的执行命令、参数和环境变量,MCP 服务就能根据配置启动运行,并与其他服务进行交互。例如,以下配置文件定义了一个 filesystem MCP
服务:
{"mcpServers": {"filesystem": {"command": "npx","args": ["-y","@modelcontextprotocol/server-filesystem","C:\\Users\\username\\Desktop","C:\\Users\\username\\Downloads"]}}
}
mcpServers
:根节点,包含所有 MCP 服务的定义。
filesystem
:服务名称,可以是任意标识符,表示这个 MCP 服务的类型或功能。
command
:用于启动服务的命令,这里是 npx,表示使用 npx 来执行某个工具或包。
args
:服务启动参数列表,用于配置启动工具或进程的具体运行参数。
这种配置文件的修改方式具有出色的通用性和灵活性:
服务类型灵活:通过调整
command
和args
参数,可适配各类服务需求。
路径与环境配置自由:支持自定义目录和资源路径作为服务启动参数。
多服务并行配置:单个配置文件即可实现多个服务的定义与管理。
{"mcpServers": {"filesystem": {"command": "npx","args": ["-y","@modelcontextprotocol/server-filesystem","C:\\Users\\username\\Desktop"]},"database": {"command": "python","args": ["server_database.py","--db-path","C:\\Users\\username\\Data"]}}
}
集成外部工具:
MCP
服务支持与各类外部工具的无缝对接,包括 Python 脚本、Node.js 工具包及其他命令行工具。只需在配置文件中定义启动命令和相关参数,即可轻松实现集成。
官方说明文档中推荐的配置方法:https://modelcontextprotocol.io/quickstart/user#windows
目前主流客户端(如Cursor、Clien等)均采用此方法配置MCP服务器:
这也是当前主流 MCP 平台普遍支持的调用方式:
-
Smithery
-
MCP.so
GitHub MCP 官方资源合集:
2.2.2 MCP工具的命令行配置参数
需要特别注意的是,在这个 JSON
配置文件中,npx 命令的核心功能是执行命令行工具。首次运行时,它会自动下载并执行指定的工具或库。若该工具未被缓存,npx 将直接从 npm registry 下载并执行。
{"command": "npx","args": ["-y","@modelcontextprotocol/server-filesystem","C:\\Users\\username\\Desktop","C:\\Users\\username\\Downloads"]
}
npx:
npx 是 Node.js 内置的工具,用于执行命令行工具或 Node.js 包。使用 npx 时,它会先检查本地是否已安装指定工具:若未安装,则会自动从 npm 仓库临时下载并执行该工具。这个 npm 包在执行时,npx 会优先查找本地安装版本。如果本地不存在,它将直接从 npm 注册表下载并运行该包。
-y:
表示自动接受所有的提示(通常是用于跳过安装时的确认提示)。实际运行时会执行如下等价命令:
npx -y @modelcontextprotocol/server-filesystem C:\\Users\\username\\Desktop C:\\Users\\username\\Downloads
首次运行时:
npx 会从 npm 仓库下载 @modelcontextprotocol/server-filesystem 库。下载的包将存放在临时缓存目录中并执行相应命令。运行结束后,npx 会自动清理临时文件,但工具进程会继续运行。
后续运行时:
当重复执行同一命令时,npx 会优先检查本地缓存。若工具包已存在于缓存中,npx 会直接调用缓存的版本执行,无需重新下载。
只有在工具包缺失或版本更新时,npx 才会重新下载并运行。
2.3 MCP服务器类型
Resources: 资源,指可读取的数据源,包括本地文件或API返回内容。
Tools: 工具,指第三方服务或功能函数,用于控制LLM可调用的外部功能。
Prompts: 提示词,即预设的任务模板,用于指导用户完成特定操作。
2.4 MCP开发环境搭建
2.4.1 uv入门
MCP 开发要求借助 uv 进行虚拟环境创建和依赖管理。uv 是一个Python 依赖管理工具,类似于 pip 和 conda,但它更快、更高效,并且可以更好地管理 Python 虚拟环境和依赖项。它的核心目标是替代 pip、venv 和 pip-tools,提供更好的性能和更低的管理开销。
uv 的特点:
速度更快
:相比 pip,uv 采用 Rust 编写,性能更优。支持 PEP 582
:无需 virtualenv,可以直接使用 pypackages 进行管理。兼容 pip
:支持 requirements.txt 和 pyproject.toml 依赖管理。替代 venv
:提供 uv venv 进行虚拟环境管理,比 venv 更轻量。跨平台
:支持 Windows、macOS 和 Linux。
2.4.2 uv安装
- 方式一:
pip
pip install uv
- 方式二:
curl
curl -LsSf https://astral.sh/uv/install.sh | sh # 安装到 /usr/local/bin
2.4.3 uv的基本用法
安装 uv
后,其用法与 pip
类似,但语法更简洁、运行速度更快。
-
安装 Python 依赖
uv pip install requests
-
创建虚拟环境
uv venv myenv # 等效于 python -m venv myenv,但更高效
-
激活虚拟环境
source myenv/bin/activate # Linux/macOS myenv\Scripts\activate # Windows
-
安装 requirements.txt
uv pip install -r requirements.txt
-
运行 Python 项目(直接运行 Python 项目)
uv run python script.py # 等效于: ①pip install -r requirements.txt ②python script.py
3. 总结
本文系统性地梳理了 MCP(Model Context Protocol)工具 在开发、部署、上线与维护全流程中的技术实现路径。通过对 服务器端与客户端的快速搭建方法、MCP协议通信机制(包括StdIO、SSE、Streamable HTTP)的深入解析,以及典型示例(如Cherry Studio接入Filesystem与Fetch MCP工具)的实操演示,进一步展示了MCP在提升LLM工具调用能力与生态扩展性方面的价值。
在实践层面,MCP标准化的配置方式和多语言SDK支持,使得开发者能够以统一的协议快速集成不同类型的工具和资源;而通过结合uv虚拟环境与依赖管理方案,则为MCP的开发与维护提供了高效、轻量化的工程支持。
展望未来,MCP技术的发展将主要集中在以下几个方向:
- 协议层的演进:随着Streamable HTTP等新型传输机制的成熟,MCP将在高并发、低延迟场景中展现更强的适应性。
- 工具生态扩展:更多第三方MCP服务器与工具将被纳入Smithery、MCP.so等平台,进一步完善生态矩阵。
- 跨场景应用深化:在智能体(Agent)、行业知识库、实时数据处理等复杂应用中,MCP将成为支撑LLM与外部世界交互的核心中枢。
- 工程化与可维护性:结合容器化与CI/CD流程,MCP服务的上线与运维将更加自动化与可扩展。
综上,MCP不仅是一套技术协议,更是一种推动 大模型工具化、生态化和标准化 的关键基础设施。其在未来智能应用中的作用,将持续增强并深度嵌入到新一代AI系统的核心架构之中。