🔥 MCP 的爆火让很多人不知所措,很多人还没搞清楚它和 Function Calling 的边界、价值与落地路径,为什么用,如何用,怎么用好。这篇文章带你从概念到实战:先拆清为什么需要 MCP、它与 Function Calling 的差异;再用“获取天气”的最小 Demo 快速起步;接着演示如何调用他人的 MCP 服务;最后以科研人的视角,实践 腾讯云代码分析(TCA)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)
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服务已经跑起来了!
2️⃣ 按理来说接着应该是建立起mcp客户端与服务端进行通信连接,但是这些操作已经集成在了coding agent中,我们只需要告诉coding agent我们的服务路径即可。以CodeBud
dy为例,我们可以先点击Config MCP来配置我们的服务信息,这一点和function Calling很像,我们也需要告诉大模型我们有了什么功能函数,不同的是,在这里所有的参数都是标准化的。
⚠ 这里在建立连接时有一定的bug,如图所示,我给定的命令是python /root/path/my.py, 但是!我并不是用系统环境去建立连接的,因此我们还需要修改为用我们的虚拟环境去建立连接!
command
修改为我们虚拟环境的python运行解释器,结果如图所示,可以发现已经成功连接!至此,我们就可以去建立自己的mcp本地服务了。
在上一章节中我们已经自己实现了本地服务的建立,但是,面对用户不断更新的需求,有些服务过于复杂,我们通过本地服务很难实现。因此,为了解决这一痛点,腾讯MCP广场提供了大量的MCP服务应用。可以发现,其中有AI Word文档助手
,微信读书
,MySQL
等。
用法也是极其的简单,我们只需要将对应的参数在coding agent
的mcp配置即可,以微信读书为例
{
"mcpServers": {
"mcp-server-weread": {
"command": "npx",
"args": ["-y", "mcp-server-weread"],
"env": {
// 方式1:使用Cookie Cloud(推荐)
"CC_URL": "https://cc.chenge.ink", // Cookie Cloud的URL
"CC_ID": "您的ID", // Cookie Cloud的ID
"CC_PASSWORD": "您的密码" // Cookie Cloud的密码
// 或方式2:直接提供Cookie
// "WEREAD_COOKIE": "您的微信读书Cookie"
}
}
}
}
腾讯云代码分析(TCA),始于 2012 年(内部代号:CodeDog),是一个云原生、分布式、高性能的综合代码分析与跟踪管理平台,集成了众多代码分析工具。其主要功能是持续跟踪和分析代码,观察项目代码质量,并支持团队继承代码文化。有关腾讯云代码助手的更多信息,请访问官方网站使用指南:https://tca.tencent.com/document/zh/guide/。
❓ 如何使用
MCP 和 Function Calling 并不是“此消彼长”的两套体系,而是协议层与调用层的分工协作:一句话收束:MCP 让能力变成标准化、可插拔的“基础设施”,Function Calling 让这些能力在具体对话中被智能地选择与编排。把两者结合,你就能既快又稳地把 LLM 真正接入生产与科研工作流。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。