MCP

举报
九年义务漏网鲨鱼 发表于 2025/09/15 15:09:17 2025/09/15
【摘要】 前言🔥 MCP 的爆火让很多人不知所措,很多人还没搞清楚它和 Function Calling 的边界、价值与落地路径,为什么用,如何用,怎么用好。这篇文章带你从概念到实战:先拆清为什么需要 MCP、它与 Function Calling 的差异;再用“获取天气”的最小 Demo 快速起步;接着演示如何调用他人的 MCP 服务;最后以科研人的视角,实践 腾讯云代码分析(TCA)MCP 服...

前言

🔥 MCP 的爆火让很多人不知所措,很多人还没搞清楚它和 Function Calling 的边界、价值与落地路径,为什么用,如何用,怎么用好。这篇文章带你从概念到实战:先拆清为什么需要 MCP、它与 Function Calling 的差异;再用“获取天气”的最小 Demo 快速起步;接着演示如何调用他人的 MCP 服务;最后以科研人的视角,实践 腾讯云代码分析(TCA)MCP 服务器,把工具链真正接进工作流,提高我们的工作效率。

一、什么是MCP

首先来看一下官方对于MCP的定义,官方认为MCP是一项标准化了应用(也就是我们的工具类)如何提供上下文给大模型的协议。在过去,我们在使用agent 工具时,往往是需要通过Function calling的方式将我们的工具列表发给大模型,接着大模型再将需要调用的模型基于我们预定义好的规则发送给后端,后端再进行服务调用。这一过程可能会出现:①模型没有输出我们预定义好的函数调用格式;②幻觉;③不同的大模型提供商的函数格式不同。

MCP is an open protocol that standardizes how applications provide context to large language models (LLMs). Think of MCP like a USB-C port for AI applications. Just as USB-C provides a standardized way to connect your devices to various peripherals and accessories, MCP provides a standardized way to connect AI models to different data sources and tools. MCP enables you to build agents and complex workflows on top of LLMs and connects your models with the world.

MCP与Function Calling相同,连接了AI应用以及工具类。通过统一的接入方式(通信协议)实现连接。每个MCP client(可以理解未AI应用的对象)都对应了一个MCP server。应用在调用方法类时主要有两种形式的调用:① 本地服务调用(Stdio协议) ② 远程服务调用(Http + SSE)

image.png

Stdio:管道实现的,实现了不同的进程之间的通信 (本地服务)

SSE:SSE是一种服务器服务器向客户端主动发起一个HTTP请求,支持服务端主动流式的推送消息;(远程调用服务)

二、快速上手

在了解了什么是MCP后,就可以开始从代码方面入手,帮助我们更好的理解如何使用MCP服务于我们的agent。本文将从官网的demo开始,逐步的深入到具体的应用场景中。以windows环境为例,我们首先需要安装好相关依赖,仅python 3.10版本以上支持:

pip install "mcp[cli]"

以官方demo为例,以最经典的获取天气为例,代码如下:

"""
FastMCP quickstart example.

cd to the `examples/snippets/clients` directory and run:
    uv run server fastmcp_quickstart stdio
"""

from mcp.server.fastmcp import FastMCP

# Create an MCP server
mcp = FastMCP("Demo")


# Add an addition tool
@mcp.tool()
def add(a: int, b: int) -> int:
    """Add two numbers"""
    return a + b

@mcp.tool()
def get_weather(city: str, unit: str = "celsius") -> str:
    """Get weather for a city."""
    # This would normally call a weather API
    return f"Weather in {city}: 22degrees{unit[0].upper()}"

1️⃣ 在我们写完自己的server服务后,就可以通过命令mcp run \root\path\your_server.py运行本地的server服务,由于是本地的服务,服务和客户端的通信依然采取的是Stdio协议;可以发现运行后无任何报错信息,我们的mcp服务已经跑起来了!

image.png

2️⃣ 按理来说接着应该是建立起mcp客户端与服务端进行通信连接,但是这些操作已经集成在了coding agent中,我们只需要告诉coding agent我们的服务路径即可。以CodeBuddy为例,我们可以先点击Config MCP来配置我们的服务信息,这一点和function Calling很像,我们也需要告诉大模型我们有了什么功能函数,不同的是,在这里所有的参数都是标准化的。

image.png

⚠ 这里在建立连接时有一定的bug,如图所示,我给定的命令是python /root/path/my.py, 但是!我并不是用系统环境去建立连接的,因此我们还需要修改为用我们的虚拟环境去建立连接!

image.png

command修改为我们虚拟环境的python运行解释器,结果如图所示,可以发现已经成功连接!至此,我们就可以去建立自己的mcp本地服务了。
image.png

}




### 四、总结

MCP 和 Function Calling 并不是“此消彼长”的两套体系,而是协议层与调用层的分工协作:一句话收束:MCP 让能力变成标准化、可插拔的“基础设施”,Function Calling 让这些能力在具体对话中被智能地选择与编排。把两者结合,你就能既快又稳地把 LLM 真正接入生产与科研工作流。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。