[mcp-servers] 工具与资源 | 模型上下文协议MCP | 锚点分类

发布于:2025-07-01 ⋅ 阅读:(20) ⋅ 点赞:(0)

第三章:工具与资源

欢迎回来!

但MCP服务器本身并非文件柜实体、网页浏览器或计算器。它是懂得如何操作这些实体的软件。

服务器实际对接的操作对象与能力载体,我们称之为工具/资源

什么是工具与资源?

设想一个车间:

  • 客户端如同提出制作需求的顾客
  • MCP服务器是掌握制作技艺的木匠
  • 工具/资源则是完成工作的锯子、锤子、木材等必要物料。

awesome-mcp-servers生态中:

  • 工具指MCP服务器可执行的特定操作指令
  • 资源指操作所作用的数据源或实体系统

核心运作流程:

  1. 客户端发送MCP操作请求
  2. MCP服务器解析请求,识别目标工具
  3. 服务器调用对应资源执行工具指令
  4. 获取资源操作结果并返回客户端

本质上,MCP服务器充当客户端(需求方)与工具/资源(执行方)之间的协议转换器与操作执行器。

本资源列表收录的各类MCP服务器,正是不同工具/资源的能力载体

工具与资源实例

不同服务器对接不同资源类型,提供多样化工具指令:

资源类型 工具示例 功能描述
文件系统 read_file, list_directory 本地文件读写与目录管理
数据库 query_db, insert_record 数据库查询与记录操作
网页浏览器 navigate, click_element 网页导航元素交互
日历系统 list_events, create_event 日程事件管理
版本控制 list_files, get_commit 代码仓库操作
计算引擎 add, subtract, multiply 数学运算执行

每个MCP服务器专注于特定资源类型,并实现对应工具指令集。

文件读取案例(工具/资源视角)

延续前文案例:用户通过客户端请求AI总结report.txt文件。

第二章中,服务器接收{"tool_name": "read_file", "params": {"path": "report.txt"}}请求。现聚焦工具/资源交互:

  1. 客户端将请求发送至文件系统MCP服务器
  2. 服务器解析出需执行read_file工具指令
  3. 识别该指令作用于文件系统资源
  4. 调用操作系统级文件读取接口
  5. 文件系统资源定位并返回文件内容
  6. 服务器封装结果至MCP响应报文

此处read_file为具体工具指令,文件系统为支撑该指令的底层资源。

完整交互

在这里插入图片描述

该流程图完整呈现:用户指令经客户端→AI→MCP服务器→工具/资源的多级传递,最终逆向返回处理结果。

服务器作为工具/资源操作器

回顾第二章的Python示例代码,with open(path, 'r') as f:正是服务器调用文件系统资源执行read_file工具的关键:

import json
import os  # 为清晰性添加,尽管open是内置函数

def handle_mcp_request(request_json):
    """MCP请求处理函数"""
    request = json.loads(request_json)
    tool_name = request.get("tool_name")
    params = request.get("params", {})

    if tool_name == "read_file":
        path = params.get("path")
        if path:
            # 此处为服务器与文件系统工具/资源的交互
            try:
                with open(path, 'r') as f:  # <--- 调用工具/资源接口!
                    content = f.read()
                response = {
                    "status": "success",
                    "result": {"content": content}
                }
            except FileNotFoundError:
                response = {
                    "status": "error",
                    "error": {"message": f"文件未找到: {path}"}
                }
            except Exception as e:
                response = {
                    "status": "error",
                    "error": {"message": f"文件读取错误: {e}"}
                }
        else:
            response = {
                "status": "error",
                "error": {"message": "缺少路径参数"}
            }
    else:
        response = {
            "status": "error",
            "error": {"message": f"未知指令: {tool_name}"}
        }

    return json.dumps(response)

# 'open()'函数属于Python标准库
# 实际通过操作系统文件API完成操作
# MCP服务器代码提供框架结构
# 具体操作由底层工具/资源能力实现

handle_mcp_request函数定义可用工具集(如read_file),而工具集中的open()函数作为资源接口实现具体操作。

总结

工具/资源是MCP协议体系的最终能力载体

  • 作为MCP服务器对接的实际操作系统或数据源,它们使AI能力突破虚拟边界,实现与现实世界的深度交互。

  • 通过部署不同MCP服务器(文件系统、数据库、Web API等),AI模型得以调用多样化工具指令,形成强大的生态能力网络。

至此,我们已经掌握MCP体系的三大核心要素:客户端MCP服务器工具/资源

下一章我们将深入解析**模型上下文协议(MCP)**本身——连接三者的通信语言。

下一章:模型上下文协议(MCP)


第四章:模型上下文协议(MCP)

在前三章中,我们认识了生态系统的核心角色:

但各组件间如何实现精准通信

这正是模型上下文协议(MCP)的核心作用。


什么是模型上下文协议(MCP)?

MCP是客户端服务器通信的标准化语言通用规则集

如同不同品牌家电 需要通用遥控协议,MCP确保不同开发者构建的客户端与服务器可无缝交互。

(实现了 客户端和服务端 构建的解耦,方便了开源生态的发展)

核心运作机制:

  • MCP定义了客户端与服务器间消息的结构化格式

  • 当AI(客户端)需要读取文件时,不会直接发出"读取report.txt"的指令,而是构建符合MCP规范的请求报文

  • 文件系统服务器(MCP服务器)接收后解析报文,执行操作并返回结构化响应

在这里插入图片描述

该流程图展示MCP报文在客户端与服务器间的桥梁作用,确保跨系统操作的可预测性与安全性

MCP报文结构

MCP报文采用结构化数据格式(如JSON),主要包含两类:

MCP请求(客户端→服务器)

{
  "tool_name": "read_file",
  "params": {
    "path": "report.txt"
  }
}
  • tool_name:指定目标工具指令(如read_file
  • params:传递操作参数(如文件路径)

MCP响应(服务器→客户端)

成功响应示例:

{
  "status": "success",
  "result": {
    "content": "这是report.txt的内容..."
  }
}

错误响应示例:

{
  "status": "error",
  "error": {
    "message": "文件未找到: report.txt",
    "code": "FileNotFoundError"
  }
}
  • status:操作状态(success/error
  • result:成功时返回操作结果
  • error:失败时返回错误详情(含描述信息与错误代码)

MCP的核心价值

  1. 互操作性
    任何符合MCP规范的客户端均可对接任意MCP服务器,构建开放生态系统

  2. 可扩展性
    新增能力只需部署支持MCP的新服务器,现有客户端无需改造即可调用

  3. 清晰性与可预测性
    结构化报文提升开发效率,标准化错误代码增强系统健壮性

  4. 专注分工
    客户端开发者聚焦AI交互,服务器开发者专注资源对接,避免重复造轮

总结

模型上下文协议(MCP)是AI工具生态的通信基石。

通过定义结构化报文规范,实现客户端与服务器的解耦协作,使AI能力突破训练数据局限,安全对接多样化工具与资源。

下一章将探讨分类体系——如何组织管理海量MCP服务器。

下一章:分类体系


第五章:分类体系

在前几章中,我们深入探讨了MCP生态的核心组件:

当我们浏览awesome-mcp-servers资源列表时,可能会惊叹于其庞大规模。

如何从成百上千个服务器中快速定位目标

例如,当AI需要操作数据库时,如何高效筛选出相关服务器?这正是分类体系的价值所在。

什么是分类体系?

想象awesome-mcp-servers如同巨型图书馆。若所有书籍杂乱堆放,寻书将如大海捞针。

图书馆通过分区管理(文学、科技、历史等)解决此问题,分类体系正是MCP生态的"图书管理系统"。

核心功能:

分类体系通过**资源类型标签**对MCP服务器进行分组,使开发者能快速定位所需能力模块。其运作逻辑如下:

  1. 明确AI需执行的任务类型(如文件操作、数据库查询)
  2. 在资源列表中查找对应分类标签
  3. 浏览该分类下的所有MCP服务器
  4. 选择适配的服务器进行部署对接

在之前的开源指南专栏中,有提到过锚点分类体系:[project-based-learning] docs | 教程列表 | 格式规范 | 锚点分类体系

文件系统服务器查找案例

延续经典案例:需要AI读取report.txt文件时,如何通过分类体系定位文件系统服务器?

  1. 查阅分类目录
    浏览awesome-mcp-servers的README文档主分类
  2. 筛选目标分类
    寻找"文件系统"或类似标签
  3. 定位服务器列表
    在该分类下查找提供read_filelist_directory等工具的服务器
  4. 选择部署方案
    根据文档指引安装运行选定服务器,并连接客户端

在这里插入图片描述

该流程展示分类体系如何将搜索范围从全局收敛至特定领域,极大提升效率。

分类体系结构

观察awesome-mcp-servers的README文档,可见其通过Markdown标题构建层级化分类:

## 服务器实现

* 🔗 - [聚合服务](#聚合服务)
* 📂 - [浏览器自动化](#浏览器自动化)
...
* 🗄️ - [数据库](#数据库)
...
* 📂 - [文件系统](#文件系统)
...
* 🛠️ - [其他工具集成](#其他工具集成)

(此为结构示意,完整列表包含更多分类)

每个二级标题代表一个分类标签,其下罗列相关MCP服务器。典型分类示例如下:

分类名称 服务器/工具类型 AI应用场景案例
文件系统 文件读写、目录管理服务器 文档总结、代码生成、文件整理
数据库 数据库查询、记录操作服务器 客户信息查询、销售数据分析
浏览器自动化 网页导航、元素交互服务器 在线调研、表单填写、内容监控
版本控制 Git仓库交互服务器 代码库分析、问题管理、PR创建
通讯服务 Slack等消息平台对接服务器 通知推送、消息读取、频道管理

该体系确保资源列表具备可扩展性,随着生态发展持续吸纳新分类与新服务器。

总结

分类体系awesome-mcp-servers资源列表的导航骨架。

通过按工具/资源类型分组MCP服务器,形成类图书馆的分区管理体系,使开发者能快速定位扩展AI能力所需的"专业助理"。

至此,我们已掌握MCP生态的完整架构:客户端发起请求给AIMCP 服务器执行操作→工具/资源实体支撑→MCP协议通信

分类体系导航选择合适的 MCP 服务器。

下一章将探讨开发框架——助力开发者快速构建MCP组件的基础设施。

下一章:开发框架


网站公告

今日签到

点亮在社区的每一天
去签到