当前位置: 首页 > news >正文

第一章: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将复杂工具包装成简单接口。例如:

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

🔧 如何用MCP解决用例?

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

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

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

步骤2:配置LLM客户端

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

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

步骤3:让LLM使用工具

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

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

🕵️ 内部实现揭秘

流程图:从指令到结果

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

关键代码片段

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

// 文件系统服务器的核心代码(简化版)
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服务器!

相关文章:

  • 【k8s】k8s是怎么实现自动扩缩的
  • 32BIT的SPI主机控制
  • 面试篇:Spring Boot
  • HOJ.单词统计
  • NLP实战(4):使用PyTorch构建LSTM模型预测糖尿病
  • 【网工第6版】第5章 网络互联⑦
  • 软考:数值转换知识点详解
  • Phthon
  • 【Linux】基于阻塞队列的生产消费者模型
  • 火语言RPA--发送邮件
  • 树莓派安装GStreamer ,opencv支持, 并在虚拟环境中使用的安装方法
  • opencv--图像变换
  • 使用QML Tumbler 实现时间日期选择器
  • express的中间件,全局中间件,路由中间件,静态资源中间件以及使用注意事项 , 获取请求体数据
  • BOM与DOM(解疑document window关系)
  • 看一看 中间件Middleware
  • JVM性能优化之老年代参数设置
  • 【前端】手写代码输出题易错点汇总
  • git检查提交分支和package.json的version版本是否一致
  • 使用vue2开发一个医疗预约挂号平台-前端静态网站项目练习
  • 美乌矿产协议预计最早于今日签署
  • 揭秘神舟十九号返回舱“软着陆”关键:4台发动机10毫秒内同时点火
  • 深观察丨从“不建议将导师挂名为第一作者”说开去
  • 最高法强化涉新就业形态民事案件审判指导:推动出台司法解释
  • 气候资讯|4月全球前沿气候科学研究&极端天气气候事件
  • 解读|特朗普“助攻”下加拿大自由党“惨胜”,卡尼仍需克服“特鲁多阴影”