第一章:Model Context Protocol (MCP)

Chapter 1: Model Context Protocol (MCP)


🌟 为什么需要MCP?

想象你正在训练一只小狗,希望它能听懂你的指令并执行任务。但如果你和小狗用不同语言交流,它可能完全不知道你的意思。类似地,大型语言模型(LLM)想要安全地使用外部工具或数据源时,也需要一个统一的"翻译协议"------这就是**Model Context Protocol(MCP)**诞生的原因!

中心用例:让LLM安全访问文件

假设你想让LLM帮你整理电脑里的文件,但直接让模型直接操作文件系统可能有风险。MCP通过标准化的服务器,让LLM能用自然语言请求(如"查找所有PDF文件"),同时确保操作符合安全规则。


🚀 MCP的核心概念

MCP定义了三个关键部分,让LLM与外部工具安全协作:

1. 标准化通信格式

就像快递单有统一格式,MCP规定了LLM和工具之间如何"对话"。例如:

  • 请求 :LLM发送类似"查找昨天创建的Excel文件"的指令
  • 响应:工具返回结构化数据(如文件路径列表)

2. 安全沙箱机制

MCP服务器像"保安",控制LLM能访问哪些资源。例如:

  • 文件服务器可能只允许读取/safe_folder/目录
  • 数据库服务器可能限制只能查询公开表

3. 工具抽象层

MCP将复杂工具包装成简单接口。例如:

python 复制代码
# 用户视角:只需调用统一的MCP接口
tool_response = mcp_server.invoke_tool("search_files", {"query": "report.pdf"})

🔧 如何用MCP解决用例?

步骤1:选择或创建服务器

使用现成的文件系统服务器(如代码片段中的@modelcontextprotocol/server-filesystem):

bash 复制代码
# 启动文件系统服务器(允许访问特定目录)
npx -y @modelcontextprotocol/server-filesystem /path/to/safe/directory

步骤2:配置LLM客户端

在客户端配置文件中注册该服务器:

json 复制代码
{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/my/docs"]
    }
  }
}

步骤3:让LLM使用工具

现在LLM可以安全地请求文件操作:

plaintext 复制代码
用户:请列出所有以"2023"开头的PDF文件  
LLM内部调用:  
invoke_tool("filesystem", "search", {"pattern": "2023*.pdf"})

🕵️ 内部实现揭秘

流程图:从指令到结果

LLM MCP客户端 MCP服务器 文件系统 发送请求 "查找报告" 转换请求为标准化格式 搜索符合条件的文件 返回文件列表 格式化响应 提供结果 LLM MCP客户端 MCP服务器 文件系统

关键代码片段

服务器初始化时定义允许的操作:

typescript 复制代码
// 文件系统服务器的核心代码(简化版)
class FilesystemServer {
  constructor(allowedPath: string) {
    this.safeDir = allowedPath; // 安全目录白名单
  }

  async searchFiles(query: string): Promise<File[]> {
    // 只在允许的目录内搜索
    const files = search(this.safeDir, query);
    return sanitizeFiles(files); // 过滤敏感文件
  }
}

💡 总结与展望

本章我们了解了:

  1. MCP如何成为LLM与工具间的"翻译官"
  2. 通过简单配置就能让模型安全访问资源
  3. 标准化协议如何简化复杂系统的协作

接下来,我们将深入探索MCP服务器分类,了解不同类型的服务器如何解决具体问题------例如有的服务器连接数据库,有的则用于网络爬虫!

📚 接下来,你将学会如何根据需求选择或定制自己的MCP服务器!

相关推荐
蓝卓工业操作系统1 小时前
天铭科技×蓝卓 | “1+2+N”打造AI驱动的汽车零部件行业智能工厂
人工智能·科技·汽车
晨非辰1 小时前
#C语言——学习攻略:深挖指针路线(三)--数组与指针的结合、冒泡排序
c语言·开发语言·数据结构·学习·算法·排序算法·visual studio
zzywxc7871 小时前
编程算法在金融、医疗、教育、制造业等领域的落地案例
人工智能·算法·金融·自动化·copilot·ai编程
zzywxc7871 小时前
编程算法在金融、医疗、教育、制造业的落地应用。
人工智能·深度学习·算法·机器学习·金融·架构·开源
先生沉默先1 小时前
Docker学习日志-Docker容器配置、Nginx 配置与文件映射
学习·nginx·docker
修一呀1 小时前
【数据标注】详解使用 Labelimg 进行数据标注的 Conda 环境搭建与操作流程
人工智能·conda
conkl2 小时前
构建 P2P 网络与分布式下载系统:从底层原理到安装和功能实现
linux·运维·网络·分布式·网络协议·算法·p2p
笙囧同学4 小时前
基于大数据技术的疾病预警系统:从数据预处理到机器学习的完整实践(后附下载链接)
大数据·网络·机器学习
白熊1885 小时前
【大模型LLM】梯度累积(Gradient Accumulation)原理详解
人工智能·大模型·llm
愚戏师5 小时前
机器学习(重学版)基础篇(算法与模型一)
人工智能·算法·机器学习