MCP 学习笔记(1)

AI 时代的新鲜事层出不穷,MCP(Model Context Protocol)又火了起来。

Anthropic 于 2024 年 11 月推出了模型上下文协议 (MCP),这是 LLM 与各种数据源之间数据交换的开放标准。该协议为 LLM 提供了一种简化的方法,可以与工具和服务集成以执行任务,例如在本地系统上搜索文件、访问 GitHub 存储库以编辑文件以及简化与外部平台的交互。

如何理解模型上下文协议这个名称?我一直主张将context 翻译成"脉络" ,MCP 翻译成大模型脉络协议。比较容易理解,MCP 协议是大模型应用中信息脉络 的协议,用于传输大模型与各种信息源之间的数据。脉络具有相互之间流动关系的含义。

也有人将MCP 比作AI 时代的软件USB,也就是认为MCP 可能成为AI 系统中的一个通用的,即插即用的接口协议。

MCP vs Function Calling

其实,在MCP 出现之前,大模型也有方法访问外部数据的,这就是函数调用(function Calling)。

给大模型提供一组函数(Tools) 每个函数都有一个描述,大语言模型在推理过程中调用合适的函数,例如搜索,获取气象数据等等。

只不过函数如何调用各种外部服务的方式是不尽相同的,MCP 将这些外部服务的协议统一标准化了。

任何支持函数调用的 LLM(例如 Ollama 或 Qwen)都可以与其一起使用。只要在function 中实现MCP 就可以了。

MCP 是一种Client/Server 协议。

MCP 系统中的几个组成部分:

  • MCP 主机:希望通过 MCP 访问数据的程序,例如 Claude Desktop、IDE 或 AI 工具
  • MCP 客户端:与服务器保持 1:1 连接的协议客户端
  • MCP 服务器:轻量级程序,每个程序都通过标准化模型上下文协议公开特定功能
  • 本地数据源:MCP 服务器可以安全访问的您的计算机文件、数据库和服务
  • 远程服务:MCP 服务器可通过互联网(例如通过 API)连接到的外部系统

网络上大多数介绍的是LLM 通过MCP 调用外部资源,其实作为一种网络协议,应用的场合非常多,例如应用程序通过MCP 调用基于LLM 的Agent 也是可以的。MCP 也可以作为Agent To Agent。Agent To Service 的协议。

MCP 的支持

实现MCP 不是困难的事情,现在许多的应用和LLM 开始支持MCP。

LangChain MCP 适配器

LangChain 是流行的LLM 应用程序构建工具,现在通过MCP 适配器支持MCP

https://github.com/langchain-ai/langchain-mcp-adapters

安装

复制代码
pip install langchain-mcp-adapters

快速开始

复制代码
pip install langchain-mcp-adapters langgraph langchain-openai

export OPENAI_API_KEY=<your_api_key>

服务器

python 复制代码
# math_server.py
from mcp.server.fastmcp import FastMCP

mcp = FastMCP("Math")

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

@mcp.tool()
def multiply(a: int, b: int) -> int:
    """Multiply two numbers"""
    return a * b

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

客户端

python 复制代码
# Create server parameters for stdio connection
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client

from langchain_mcp_adapters.tools import load_mcp_tools
from langgraph.prebuilt import create_react_agent

from langchain_openai import ChatOpenAI
model = ChatOpenAI(model="gpt-4o")

server_params = StdioServerParameters(
    command="python",
    # Make sure to update to the full absolute path to your math_server.py file
    args=["/path/to/math_server.py"],
)

async with stdio_client(server_params) as (read, write):
    async with ClientSession(read, write) as session:
        # Initialize the connection
        await session.initialize()

        # Get tools
        tools = await load_mcp_tools(session)

        # Create and run the agent
        agent = create_react_agent(model, tools)
        agent_response = await agent.ainvoke({"messages": "what's (3 + 5) x 12?"})

OpenAI 使用MCP

https://github.com/openai/openai-agents-python

提供什么样的MCP 服务

笔者看来,MCP 再简单不过了。关键是提供什么样的MCP 服务是关键。

Top 10 MCP 服务

  • File System MCP Server: 本地文件系统

  • GitHub MCP Server: 代码管理变得容易

  • Slack MCP Server: Chat Automation Hero

  • Google Maps MCP Server: 定位

  • Brave Search MCP Server: Web Surfing, AI Style

  • Bluesky MCP Server: 社交媒体变得简单

  • PostgreSQL MCP Server: Database Dynamo

  • Cloudflare MCP Server: 边缘计算

  • Raygun MCP Server: Error Tracking Extraordinaire

  • Vector Search MCP Server: Semantic Smarts

MCP 出现,凸显了一个趋势,传统的互联网服务将会转换成面向AI 的MCP 服务。传统的互联网Web 服务主要是面向人的,核心是客户体验的前端技术。后台的API 主要是为前端提供的,并不公开。AI 时代到来之后,web 服务转向为AI 提供服务,实现机器可读性。MCP 可能成为这样的协议。

除了一些通用的服务(搜索,地图)之外,会出现大量专业的MCP 服务,它们将是一种私有服务,或者是收费服务。比如:

  1. 多媒体服务 收听音乐,电影
  2. 新闻
  3. 自媒体
  4. 电子商务 购买商品
  5. 企业应用
  6. 获取生产现场的数据
  7. 智慧城市物联网数据

下面的网站中列出了4813个MCP 服务 。

https://mcp.so/

工业控制领域的例子

工业自动化行业普遍使用OPC UA 协议,可以编写一个MCP/OPCUA 的服务,实现大模型访问工业现场的数据。

在这里要使用server-sent events (SSE) 的MCP 协议。也就是服务器能够主动发送事件给客户端。

结束语

AI 时代,编程已经没有多少技术门槛了。关键是你能提供什么样的数据服务。如何真正地提升脑力劳动者的效率。

在自动化领域,有许多中方式来使用AI技术。也不一定要使用MCP,例如使用MQTT 消息系统,收到消息之后需要AI 发送给AI 的Agent 也可以。实现 AI as Service 的架构也可以。

从当下的痛点中寻找需求。用AI 方式去解决。这才是最要紧的事情。

相关推荐
Captaincc12 小时前
🔥A16z最近报告原因深入探讨MCP及其在未来AI工具中的作用
mcp
墨风如雪13 小时前
MCP服务宝库:让AI从聊天到实干的「技能超市」全解析
aigc·mcp
FSGF3213 小时前
大模型MCP:模块化计算的革命性突破
人工智能·mcp
关二哥拉二胡14 小时前
向零基础前端介绍什么是 MCP
前端·面试·mcp
PetterHillWater14 小时前
基于Cline MCP实践FireCrawl
aigc·ai编程·mcp
Captaincc14 小时前
全站最全!BrowserTools MCP 服务快速入门与安装指南
ai编程·mcp
Captaincc14 小时前
🤖 如何让你的 AI 代理集成 MCP 服务
mcp
Captaincc14 小时前
Anthropic 的 MCP(多组件协议)架构解读
mcp
zeron114 小时前
MCP协议:从“钢铁侠贾维斯“”愿景到可能实现(含MCP Gitee实操)
aigc·mcp
Captaincc15 小时前
用 28 行代码实现 MCP 服务,兼容任意 MCP 客户端
mcp