一文了解 MCP Server:AI 工具与外部世界的桥梁

news2025/3/31 9:15:25

引言

        随着大语言模型(LLM)的普及与 AI Agent 的爆发,Anthropic 于 2024 年底提出并开源的 Model Context Protocol(MCP,模型上下文协议)成为构建智能体系统的关键基石之一。本文将结合最新的实战经验(如 DeepSeek 技术社区、Cursor、ollama、vLLM、OpenAI 接入)为你全面讲解 MCP Server 的原理、开发流程、架构设计与实用价值。


一、MCP 是什么?为什么这么重要?

        MCP(Model Context Protocol)是为了解决“大模型无法访问外部工具与数据”的问题而设计的标准化通信协议。它的使命就像 USB-C —— 建立统一接口,让模型方便、安全、高效地调用各种外部能力(如:本地文件、数据库、API、工具等)。

MCP 的核心组成:

  • Model:语言模型(如 GPT、Claude、DeepSeek)

  • Context:上下文资源(如数据、文档、代码等)

  • Protocol:通信标准(基于 JSON-RPC 2.0)

为什么 MCP 比 Function Calling 更重要?

传统的 Function Calling 存在以下问题:

  • 每个函数都要手工实现,重复造轮子

  • JSON Schema 写法复杂繁琐

  • 没有统一协议,互通性差

而 MCP:

  • 定义了统一的 Client 和 Server 规范(“车同轨,书同文”)

  • 社区已有上千个开源 MCP Server,可直接复用

  • 与主流 IDE(Cursor)、模型框架(vLLM、DeepSeek)兼容


二、MCP Server 是什么?能做什么?

MCP Server 是遵循 MCP 协议的服务端,能为模型暴露:

功能类型说明示例
Resources提供资源,如文件、数据库、API 内容读取文本、加载数据库记录
Tools可执行函数或外部工具调用发起 HTTP 请求、发 PR、执行命令
Prompts预定义提示词模板自动补全代码片段、生成摘要

通信方式:

  • 本地(Stdio):客户端以子进程形式调用 Server,使用标准输入输出通信

  • 远程(HTTP + SSE):使用 EventSource 实时推送消息(计划未来支持 Streaming HTTP)


三、MCP Server 架构图解

+--------------------------+           +-----------------------------+
|        MCP Client        | <-------> |        MCP Server           |
|  (如 Claude Desktop)     |           |  (如 本地 MySQL 工具)       |
+--------------------------+           +-----------------------------+
         ^     |                                     |
         |     | JSON-RPC 调用                     注册 Tools/Resources
         |     v
+-----------------------------------------------+
|      LLM (GPT、DeepSeek、vLLM等)               |
+-----------------------------------------------+


四、实战:快速开发 MCP Server

1. 使用 Python 快速构建 MCP 工具服务

以查询天气为例:

from mcp.server.fastmcp import FastMCP
import httpx

mcp = FastMCP("WeatherServer")

@mcp.tool()
async def query_weather(city: str) -> str:
    resp = await httpx.get(f"https://api.openweathermap.org/data/2.5/weather?q={city}&appid=YOUR_API_KEY")
    return resp.text

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

2. 用命令行方式运行 MCP Server

python weather_server.py

或者让 MCP Client 以子进程方式启动它。

3. MCP Client 调用示例(支持本地模型)

from mcp.client.stdio import stdio_client
from mcp import ClientSession

session = await ClientSession.from_stdio("python", ["weather_server.py"])
await session.initialize()
result = await session.call_tool("query_weather", {"city": "Beijing"})
print(result)


五、MCP Server 实用案例

类型工具名称功能
浏览器自动化puppeteer / playwright自动化打开网页、点击元素、截图
Git 操作git-mcp-server发起 PR、git commit、分支合并
文件操作file-server读写本地文件、列出目录
MySQL 连接mysql-mcp自然语言执行 SQL 查询
命令执行shell-mcp运行 shell 命令并返回结果

资源集合:

  • https://mcp.so

  • https://github.com/modelcontextprotocol/servers

  • https://github.com/punkpeye/awesome-mcp-servers


六、进阶指南

1. 接入本地 LLM(如 ollama、vLLM、DeepSeek)

  • MCP Client 使用 OpenAI SDK 风格接口

  • 设置 .env 文件:

BASE_URL=http://localhost:11434/v1
MODEL=deepseek-chat
OPENAI_API_KEY=ollama
  • 启动命令:

uv run client.py server.py

2. 可视化调试工具 MCP Inspector

npx -y @modelcontextprotocol/inspector uv run server.py
  • 浏览器访问:http://127.0.0.1:5173

用于实时查看 MCP Server 注册的资源、函数和响应结果。


七、总结:MCP 是未来 Agent 世界的“USB-C”

  • MCP 是统一大模型与外部工具交互的通用协议

  • MCP Server 是你构建智能体最重要的“外挂工具”集合

  • 借助 MCP Inspector、现成 MCP Server 仓库、主流 SDK(Python、Node)可以快速接入与开发

  • DeepSeek、Cursor、Claude 等主流平台全面支持 MCP,让 Agent 构建进入标准化时代

        MCP 不是新技术,而是一种“标准 + 工具”的革命。它正在推动 AI 工具从“孤岛”走向生态协作,人人都能成为“Agent 工程师”。

        如果你想真正掌握下一代 AI 应用的开发模式,MCP 是你绕不开的必修课。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2323219.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【redis】集群 数据分片算法:哈希求余、一致性哈希、哈希槽分区算法

文章目录 什么是集群数据分片算法哈希求余分片搬运 一致性哈希扩容 哈希槽分区算法扩容相关问题 什么是集群 广义的集群&#xff0c;只要你是多个机器&#xff0c;构成了分布式系统&#xff0c;都可以称为是一个“集群” 前面的“主从结构”和“哨兵模式”可以称为是“广义的…

基于Springboot的网上订餐系统 【源码】+【PPT】+【开题报告】+【论文】

网上订餐系统是一个基于Java语言和Spring Boot框架开发的Web应用&#xff0c;旨在为用户和管理员提供一个便捷的订餐平台。该系统通过简化餐饮订购和管理流程&#xff0c;为用户提供快速、高效的在线订餐体验&#xff0c;同时也为管理员提供完善的后台管理功能&#xff0c;帮助…

【redis】集群 如何搭建集群详解

文章目录 集群搭建1. 创建目录和配置2. 编写 docker-compose.yml完整配置文件 3. 启动容器4. 构建集群超时 集群搭建 基于 docker 在我们云服务器上搭建出一个 redis 集群出来 当前节点&#xff0c;主要是因为我们只有一个云服务器&#xff0c;搞分布式系统&#xff0c;就比较…

飞牛NAS本地部署小雅Alist结合内网穿透实现跨地域远程在线访问观影

文章目录 前言1. VMware安装飞牛云&#xff08;fnOS&#xff09;1.1 打开VMware创建虚拟机1.3 初始化系统 2. 飞牛云搭建小雅Alist3. 公网远程访问小雅Alist3.1 安装Cpolar内网穿透3.2 创建远程连接公网地址 4. 固定Alist小雅公网地址 前言 嘿&#xff0c;小伙伴们&#xff0c…

Linux版本控制器Git【Ubuntu系统】

文章目录 **前言**一、版本控制器二、Git 简史三、安装 Git四、 在 Gitee/Github 创建项目五、三板斧1、git add 命令2、git commit 命令3、git push 命令 六、其他1、git pull 命令2、git log 命令3、git reflog 命令4、git stash 命令 七、.ignore 文件1、为什么使用 .gitign…

browser-use 库网页元素点击测试工具

目录 代码代码解释输出结果 代码 import asyncio import jsonfrom browser_use.browser.browser import Browser, BrowserConfig from browser_use.dom.views import DOMBaseNode, DOMElementNode, DOMTextNode from browser_use.utils import time_execution_syncclass Eleme…

解决GitLab无法拉取项目

1、验证 SSH 密钥是否已生成 ls ~/.ssh/ 如果看到类似 id_rsa 和 id_rsa.pub 的文件&#xff0c;则说明已存在 SSH 密钥。 避免麻烦&#xff0c;铲掉重来最方便。 如果没有&#xff0c;请生成新的 SSH 密钥&#xff1a; ssh-keygen -t rsa -b 4096 -C "your_emailexam…

FPGA学习篇——Verilog学习之寄存器的实现

1 寄存器理论 这里在常见的寄存器种加了一个复位信号sys_rst_n。&#xff08;_n后缀表示复位信号低电平有效&#xff0c;无这个后缀的则表示高电平有效&#xff09; 这里规定在时钟的上升沿有效&#xff0c;只有当时钟的上升沿来临时&#xff0c;输出out 才会改变&#xff0c;…

【VUE】ant design vue实现表格table上下拖拽排序

适合版本&#xff1a;ant design vue 1.7.8 实现效果&#xff1a; 代码&#xff1a; <template><div class"table-container"><a-table:columns"columns":dataSource"tableData":rowKey"record > record.id":row…

Vue实现动态数据透视表(交叉表)

需求:需要根据前端选择的横维度、竖维度、值去生成一个动态的表格&#xff0c;然后把交叉的值放入到对应的横维度和竖维度之下&#xff0c;其实就是excel里面的数据透视表功能&#xff0c;查询交叉语句为sql语句。 实现页面&#xff1a; 选择一下横维度、竖维度、值之后点击查…

推荐《人工智能算法》卷1、卷2和卷3 合集3本书(附pdf电子书下载)

今天&#xff0c;咱们就一同深入探讨人工智能算法的卷1、卷2和卷3&#xff0c;看看它们各自蕴含着怎样的奥秘&#xff0c;并且附上各自的pdf电子版免费下载地址。 《人工智能算法&#xff08;卷1&#xff09;&#xff1a;基础算法》 下载地址&#xff1a;https://www.panziye…

元宇宙浪潮下,数字孪生如何“乘风破浪”?

在当今科技飞速发展的时代&#xff0c;元宇宙的概念如同一颗璀璨的新星&#xff0c;吸引了全球的目光。元宇宙被描绘为一个平行于现实世界、又与现实世界相互影响且始终在线的虚拟空间&#xff0c;它整合了多种前沿技术&#xff0c;为人们带来沉浸式的交互体验。而数字孪生&…

数据分析 之 怎么看懂图 一

韦恩图怎么看 ①颜色:不同颜色代表不同的集合 ②)颜色重叠部分:表示相交集合共有的元素 ③颜色不重叠的部分:表示改集合独有的元素 ④数字:表示集合独有或共有的元素数量 ⑤百分比:表示该区域元素数占整体的比例 PCA图怎么看 ① 第一主成分坐标轴及主成分贡献率主成分贡献…

手写数据库MYDB(一):项目启动效果展示和环境配置问题说明

1.项目概况 这个项目实际上就是一个轮子项目&#xff0c;现在我看到的这个市面上面比较火的就是这个首先RPC&#xff0c;好多的机构都在搞这个&#xff0c;还有这个消息队列之类的&#xff0c;但是这个是基于MYSQL的&#xff0c;我们知道这个MYSQL在八股盛宴里面是重点考察对象…

深入理解椭圆曲线密码学(ECC)与区块链加密

椭圆曲线密码学&#xff08;ECC&#xff09;在现代加密技术中扮演着至关重要的角色&#xff0c;广泛应用于区块链、数字货币、数字签名等领域。由于其在提供高安全性和高效率上的优势&#xff0c;椭圆曲线密码学成为了数字加密的核心技术之一。本文将详细介绍椭圆曲线的基本原理…

Intellij IDEA2023 创建java web项目

Intellij IDEA2023 创建java web项目 零基础搭建web项目1、创建java项目2、创建web项目3、创建测试页面4、配置tomcat5、遇到的问题 零基础搭建web项目 小白一枚&#xff0c;零基础学习基于springMVC的web项目开发&#xff0c;记录开发过程以及中间遇到的问题。已经安装了Inte…

Scrapy结合Selenium实现滚动翻页数据采集

引言 在当今的互联网数据采集领域&#xff0c;许多网站采用动态加载技术&#xff08;如AJAX、无限滚动&#xff09;来优化用户体验。传统的基于Requests或Scrapy的爬虫难以直接获取动态渲染的数据&#xff0c;而Selenium可以模拟浏览器行为&#xff0c;实现滚动翻页和动态内容…

sqlmap 源码阅读与流程分析

0x01 前言 还是代码功底太差&#xff0c;所以想尝试阅读 sqlmap 源码一下&#xff0c;并且自己用 golang 重构&#xff0c;到后面会进行 ysoserial 的改写&#xff1b;以及 xray 的重构&#xff0c;当然那个应该会很多参考 cel-go 项目 0x02 环境准备 sqlmap 的项目地址&…

DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加行拖拽排序功能示例6,TableView16_06 分页表格拖拽排序

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 Deep…

基于物联网的新房甲醛浓度监测系统的设计(论文+源码)

2.1总体方案设计 本次基于物联网的新房甲醛浓度监测系统的设计其系统总体架构如图2.1所示&#xff0c;整个系统在硬件架构上采用了STM32f103作为主控制器&#xff0c;在传感器部分采用了MQ135实现甲醛浓度的检测&#xff0c;并且通过ESP8266 WiFi模块将当前检测的数据传输到手…