国产av一二三区|日本不卡动作网站|黄色天天久久影片|99草成人免费在线视频|AV三级片成人电影在线|成年人aV不卡免费播放|日韩无码成人一级片视频|人人看人人玩开心色AV|人妻系列在线观看|亚洲av无码一区二区三区在线播放

網(wǎng)易首頁 > 網(wǎng)易號 > 正文 申請入駐

釋放數(shù)據(jù)潛力:利用 MCP 資源讓大模型讀懂你的服務(wù)器

0
分享至

點(diǎn)擊下方“JavaEdge”,選擇“設(shè)為星標(biāo)”

第一時間關(guān)注技術(shù)干貨!


免責(zé)聲明~ 任何文章不要過度深思! 萬事萬物都經(jīng)不起審視,因?yàn)槭郎蠜]有同樣的成長環(huán)境,也沒有同樣的認(rèn)知水平,更「沒有適用于所有人的解決方案」; 不要急著評判文章列出的觀點(diǎn),只需代入其中,適度審視一番自己即可,能「跳脫出來從外人的角度看看現(xiàn)在的自己處在什么樣的階段」才不為俗人。 怎么想、怎么做,全在乎自己「不斷實(shí)踐中尋找適合自己的大道」


0 前言

★ 向LLM暴露服務(wù)器上的數(shù)據(jù)和內(nèi)容 ”

資源(Resources)是MCP核心概念,允許服務(wù)器將數(shù)據(jù)和內(nèi)容暴露,供客戶端讀取,并作為大模型交互的上下文使用。

注意

資源是由應(yīng)用控制的,即客戶端應(yīng)用可自行決定資源的使用方式和時機(jī)。不同 MCP 客戶端可能不同方式處理資源,如:

  • Claude Desktop 要求用戶手動選擇資源后才能用

  • 其他客戶端可能會基于啟發(fā)式方法自動選擇資源

  • 有些實(shí)現(xiàn)甚至允許 AI 模型自行決定使用哪些資源。

因此,服務(wù)器開發(fā)者在實(shí)現(xiàn)資源支持時,應(yīng)考慮各種交互方式。如希望自動將數(shù)據(jù)暴露給模型,應(yīng)使用由模型控制的工具。

1 概述

資源可代表 MCP 服務(wù)器希望提供給客戶端的任何類型的數(shù)據(jù),包括但不限于:

  • 文件內(nèi)容

  • 數(shù)據(jù)庫記錄

  • API 響應(yīng)

  • 實(shí)時系統(tǒng)數(shù)據(jù)

  • 截圖和圖像

  • 日志文件

  • 其他各種數(shù)據(jù)

每個資源都有一個唯一 URI 標(biāo)識,內(nèi)容可以是文本或二進(jìn)制數(shù)據(jù)。

2 URI

資源通過 URI 唯一標(biāo)識,格式如下:

[protocol]://[host]/[path]

示例:

  • file:///home/user/documents/report.pdf

  • postgres://database/customers/schema

  • screen://localhost/display1

URI 的協(xié)議和路徑結(jié)構(gòu)由 MCP 服務(wù)器自行定義,服務(wù)器可定制自己的 URI 方案。

3 類型

資源內(nèi)容可分為兩種類型:

3.1 文本

包含 UTF-8 編碼的文本數(shù)據(jù),適合以下內(nèi)容:

  • 源代碼

  • 配置文件

  • 日志文件

  • JSON/XML 數(shù)據(jù)

  • 純文本

3.2 二進(jìn)制

包含使用 base64 編碼的原始二進(jìn)制數(shù)據(jù),適合以下內(nèi)容:

  • 圖像

  • PDF

  • 音頻文件

  • 視頻文件

  • 其他非文本格式

4 發(fā)現(xiàn)方式

客戶端可通過兩種方式發(fā)現(xiàn)可用資源:

4.1 直接資源列表

服務(wù)器通過resources/list接口提供明確的資源清單,每個資源包含以下信息:

{
  uri: string;           // 資源唯一標(biāo)識
  name: string;          // 可讀名稱
  description?: string;  // 可選描述信息
  mimeType?: string;     // 可選 MIME 類型
}
4.2 資源模板

對于動態(tài)資源,服務(wù)器可暴露 URI 模板,客戶端可根據(jù)模板生成合法的資源 URI:

{
  uriTemplate: string;   // 遵循 RFC 6570 的 URI 模板
  name: string;          // 可讀名稱
  description?: string;  // 可選描述
  mimeType?: string;     // 可選 MIME 類型
}
5 讀取資源內(nèi)容

客戶端使用資源 URI 通過resources/read請求讀取資源,服務(wù)器返回資源內(nèi)容列表:

{
  contents: [
    {
      uri: string;        // 資源 URI
      mimeType?: string;  // 可選 MIME 類型

      // 二選一:
      text?: string;      // 文本內(nèi)容
      blob?: string;      // 二進(jìn)制內(nèi)容(base64 編碼)
    }
  ]
}

服務(wù)器可在一次resources/read請求中返回多個資源,如讀取目錄時可返回其中的所有文件。

6 更新

MCP 支持實(shí)時資源更新,主要有兩種機(jī)制:

6.1 列表變更

當(dāng)服務(wù)器的資源列表發(fā)生變化時,通過notifications/resources/list_changed通知客戶端。

6.2 內(nèi)容變更

客戶端可以訂閱某個資源的變更:

  1. 客戶端發(fā)送resources/subscribe請求并附帶資源 URI;

  2. 服務(wù)器在資源內(nèi)容變更時,發(fā)送notifications/resources/updated通知;

  3. 客戶端通過resources/read獲取最新內(nèi)容;

  4. 客戶端可以發(fā)送resources/unsubscribe取消訂閱。

7 示例

簡單的 MCP 服務(wù)器實(shí)現(xiàn)資源支持的例子:

// 提供資源列表
server.setRequestHandler(ListResourcesRequestSchema, async () => {
  return {
    resources: [
      {
        uri: "file:///logs/app.log",
        name: "應(yīng)用日志",
        mimeType: "text/plain"
      }
    ]
  };
});

// 讀取資源內(nèi)容
server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
  const uri = request.params.uri;

  if (uri === "file:///logs/app.log") {
    const logContents = await readLogFile();
    return {
      contents: [
        {
          uri,
          mimeType: "text/plain",
          text: logContents
        }
      ]
    };
  }

  throw new Error("未找到資源");
});

@app.list_resources()
async def list_resources() -> list[types.Resource]:
    return [
        types.Resource(
            uri="file:///logs/app.log",
            name="應(yīng)用日志",
            mimeType="text/plain"
        )
    ]

@app.read_resource()
async def read_resource(uri: AnyUrl) -> str:
    if str(uri) == "file:///logs/app.log":
        log_contents = await read_log_file()
        return log_contents

    raise ValueError("未找到資源")

# 啟動服務(wù)器
async with stdio_server() as streams:
    await app.run(
        streams[0],
        streams[1],
        app.create_initialization_options()
    )
8 最佳實(shí)踐

實(shí)現(xiàn)資源支持時,建議:

  1. 使用清晰、具描述性的資源名稱和 URI;

  2. 添加有用的描述,幫助大模型理解資源;

  3. 在已知的情況下設(shè)置合適的 MIME 類型;

  4. 為動態(tài)內(nèi)容實(shí)現(xiàn)資源模板;

  5. 對頻繁變更的資源使用訂閱機(jī)制;

  6. 出錯時返回清晰明了的錯誤信息;

  7. 對資源列表進(jìn)行分頁處理(如有必要);

  8. 在適當(dāng)情況下緩存資源內(nèi)容;

  9. 處理資源前先驗(yàn)證 URI;

  10. 文檔中注明自定義的 URI 方案。

9 安全

在暴露資源時,請注意以下安全措施:

  • 驗(yàn)證所有資源 URI 的合法性;

  • 實(shí)施適當(dāng)?shù)脑L問控制策略;

  • 清理文件路徑,防止目錄遍歷攻擊;

  • 謹(jǐn)慎處理二進(jìn)制數(shù)據(jù);

  • 對資源讀取設(shè)置速率限制;

  • 審計(jì)資源訪問記錄;

  • 傳輸過程中加密敏感數(shù)據(jù);

  • 驗(yàn)證 MIME 類型是否符合預(yù)期;

  • 為耗時較長的讀取操作設(shè)置超時機(jī)制;

  • 適時清理過期或無效資源。

本文已收錄在Github Java-Interview-Tutorial,關(guān)注我,緊跟本系列專欄文章,咱們下篇再續(xù)!

  • 魔都架構(gòu)師 | 全網(wǎng)30W技術(shù)追隨者

  • 大廠分布式系統(tǒng)/數(shù)據(jù)中臺實(shí)戰(zhàn)專家

  • 主導(dǎo)交易系統(tǒng)億級流量調(diào)優(yōu) & 車聯(lián)網(wǎng)平臺架構(gòu)

  • AIGC應(yīng)用開發(fā)先行者 | 區(qū)塊鏈落地實(shí)踐者

  • 以技術(shù)驅(qū)動創(chuàng)新,我們的征途是改變世界!

  • 實(shí)戰(zhàn)干貨:編程嚴(yán)選網(wǎng)

關(guān)注我,緊跟本系列專欄文章,咱們下篇再續(xù)!

加我好友,一起AI探索交流:

特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關(guān)推薦
熱點(diǎn)推薦
一旦開戰(zhàn)中國必?cái)??我國著名院士批主?zhàn)派,要懂得甲午戰(zhàn)爭的慘敗

一旦開戰(zhàn)中國必?cái)??我國著名院士批主?zhàn)派,要懂得甲午戰(zhàn)爭的慘敗

文史旺旺旺
2025-11-14 20:30:09
為什么英國仍然被認(rèn)為是世界強(qiáng)國?

為什么英國仍然被認(rèn)為是世界強(qiáng)國?

霹靂炮
2026-01-06 22:38:17
美媒:中國洲際隱身轟炸機(jī)高清照首次亮相。遠(yuǎn)超B21

美媒:中國洲際隱身轟炸機(jī)高清照首次亮相。遠(yuǎn)超B21

世家寶
2026-01-07 11:59:10
日本算清楚了,中國老實(shí),挑釁中國的最壞結(jié)果,他們完全可以接受

日本算清楚了,中國老實(shí),挑釁中國的最壞結(jié)果,他們完全可以接受

時分秒說
2025-12-23 11:20:17
“秦嵐”也太凡爾賽了吧!穿一身瑜伽服凹凸有致,巴掌腰太搶鏡

“秦嵐”也太凡爾賽了吧!穿一身瑜伽服凹凸有致,巴掌腰太搶鏡

巧手曉廚娘
2025-12-30 18:59:18
毫無還手之力!遼寧78-108慘敗廣東,輸球責(zé)任人非這四人莫屬!

毫無還手之力!遼寧78-108慘敗廣東,輸球責(zé)任人非這四人莫屬!

田先生籃球
2026-01-12 00:15:16
2025年俱樂部球衣銷量榜:皇馬居首,巴薩第二,巴黎第三

2025年俱樂部球衣銷量榜:皇馬居首,巴薩第二,巴黎第三

懂球帝
2026-01-11 18:17:13
中國接連出招給日本去軍事化,這招比稀土威力更大,斷了日本退路

中國接連出招給日本去軍事化,這招比稀土威力更大,斷了日本退路

阿芒娛樂說
2026-01-12 02:27:14
輸上海發(fā)布會!潘江親承古德溫離隊(duì)有影響,正尋找適合球隊(duì)的外援

輸上海發(fā)布會!潘江親承古德溫離隊(duì)有影響,正尋找適合球隊(duì)的外援

籃球資訊達(dá)人
2026-01-12 02:58:28
廣東隊(duì)球員表現(xiàn)評分:王牌滿分,四將優(yōu)秀,四人不及格

廣東隊(duì)球員表現(xiàn)評分:王牌滿分,四將優(yōu)秀,四人不及格

體育一點(diǎn)就通
2026-01-12 01:55:29
日本拉面店禁止中國人入內(nèi)!韓國網(wǎng)友揭露內(nèi)幕并呼吁:我們也不能去!

日本拉面店禁止中國人入內(nèi)!韓國網(wǎng)友揭露內(nèi)幕并呼吁:我們也不能去!

奮斗在韓國
2026-01-10 14:03:22
潛艇全軍覆沒式造假,200多家企業(yè)淪陷,道歉成遮羞布

潛艇全軍覆沒式造假,200多家企業(yè)淪陷,道歉成遮羞布

知法而形
2026-01-09 09:50:41
特朗普聽取匯報,威脅最快下周打擊伊朗

特朗普聽取匯報,威脅最快下周打擊伊朗

山河路口
2026-01-11 12:14:33
“兒子都腺樣體了,還吃烤腸呢?”一份糊弄早餐暴露家長的低認(rèn)知

“兒子都腺樣體了,還吃烤腸呢?”一份糊弄早餐暴露家長的低認(rèn)知

妍妍教育日記
2025-12-26 17:18:26
德黑蘭的黃昏:神性終將敗給通脹

德黑蘭的黃昏:神性終將敗給通脹

債市邦
2026-01-11 22:44:01
打平就出線!U23國足成亞洲杯大黑馬:賽后澳大利亞球員低下頭顱

打平就出線!U23國足成亞洲杯大黑馬:賽后澳大利亞球員低下頭顱

足球大腕
2026-01-11 22:02:43
央視怒批!人民日報點(diǎn)名封殺!這5位目無法紀(jì)的大網(wǎng)紅,徹底涼涼

央視怒批!人民日報點(diǎn)名封殺!這5位目無法紀(jì)的大網(wǎng)紅,徹底涼涼

小嵩
2025-12-25 18:05:19
薩巴倫卡不失一盤連霸成功,生涯第22座冠軍現(xiàn)役球員第三人

薩巴倫卡不失一盤連霸成功,生涯第22座冠軍現(xiàn)役球員第三人

體育妞世界
2026-01-11 21:57:35
10歲喪父11歲斷腿、放棄入籍阿聯(lián)酋、俄烏邊境遇生死

10歲喪父11歲斷腿、放棄入籍阿聯(lián)酋、俄烏邊境遇生死

上觀新聞
2026-01-12 04:33:04
港府官員訪美“急剎車”,中央政府下達(dá)指令,絕不給美國可乘之機(jī)

港府官員訪美“急剎車”,中央政府下達(dá)指令,絕不給美國可乘之機(jī)

依偎在角落
2026-01-09 10:21:16
2026-01-12 04:55:00
JavaEdge incentive-icons
JavaEdge
Java 技術(shù)
466文章數(shù) 457關(guān)注度
往期回顧 全部

科技要聞

“我們與美國的差距也許還在拉大”

頭條要聞

美軍突襲委內(nèi)瑞拉俄制防空系統(tǒng)失聯(lián) 俄方回應(yīng)

頭條要聞

美軍突襲委內(nèi)瑞拉俄制防空系統(tǒng)失聯(lián) 俄方回應(yīng)

體育要聞

U23國足形勢:末輪不負(fù)泰國即確保晉級

娛樂要聞

留幾手為閆學(xué)晶叫屈?稱網(wǎng)友自卑敏感

財(cái)經(jīng)要聞

外賣平臺"燒錢搶存量市場"迎來終局?

汽車要聞

2026款宋Pro DM-i長續(xù)航補(bǔ)貼后9.98萬起

態(tài)度原創(chuàng)

本地
親子
家居
手機(jī)
公開課

本地新聞

云游內(nèi)蒙|“包”你再來?一座在硬核里釀出詩意的城

親子要聞

最近的孩子怎么都長得這么著急?你不說,誰知道他還是個寶寶?

家居要聞

木色留白 演繹現(xiàn)代自由

手機(jī)要聞

曝三星Galaxy S26 Ultra支持?eSIM,新機(jī)下月見

公開課

李玫瑾:為什么性格比能力更重要?

無障礙瀏覽 進(jìn)入關(guān)懷版