第一章: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服务器!

相关推荐
菜鸟蹦迪3 分钟前
学习记录:mybatis和jdbc实现数据表作为参数的相关的sql操作
sql·学习·mybatis
清晨朝暮13 分钟前
【Linux 学习计划】-- yum
学习
今儿敲了吗26 分钟前
计网| 网际控制报文协议(ICMP)
网络·智能路由器
lboyj31 分钟前
填孔即可靠:猎板PCB如何用树脂塞孔重构高速电路设计规则
人工智能·重构
oneDay++33 分钟前
# IntelliJ IDEA企业版安装与配置全指南:避坑详解
java·开发语言·经验分享·学习·学习方法
Blossom.11843 分钟前
从虚拟现实到混合现实:沉浸式体验的未来之路
人工智能·目标检测·机器学习·计算机视觉·语音识别·vr·mr
赵青临的辉1 小时前
简单神经网络(ANN)实现:从零开始构建第一个模型
人工智能·深度学习·神经网络
KALC1 小时前
告别“知识孤岛”:RAG赋能网络安全运营
人工智能·网络安全
南部余额1 小时前
Python OOP核心技巧:如何正确选择实例方法、类方法和静态方法
开发语言·python
2303_Alpha1 小时前
深度学习入门:深度学习(完结)
人工智能·笔记·python·深度学习·神经网络·机器学习