[MCP] 监听资源更新

有两种形式:

  1. 资源列表变化
  2. 资源内容变化

资源列表变化

用于监听资源目录是否发生增删改。

工作机制

当服务器上的资源列表发生变化时(例如 resources/list 中的项发生增删),服务器主动发送通知

notifications/resources/list_changed

这个方法名也是固定的。

这样客户端就知道资源目录发生了变动,可以重新发起 resources/list 重新拉取。

这里需要做 2 件事情:

  1. 监听目录(涉及到回调函数,监听的目录发生了变化,就会触发对应的回调函数)
  2. 回调函数:向客户端发送通知

资源内容变化

用于监听 某个资源内容的变更,如文件内容更新、数据库记录修改、日志追加等。

工作机制

  1. 客户端订阅更新,向服务器发送请求:

    resources/subscribe
    

    方法名固定为 resources/subscribe,表示我要订阅某个资源。

    带上要订阅的资源 URI,例如:

    { "uri": "file:///logs/error.log" }
    
  2. 服务器监听变动并通知客户端。当该资源发生变化时,发送通知:

    notifications/resources/updated
    
  3. 客户端拉取最新内容。收到通知后,客户端可以重新调用:

    resources/read
    
  4. 客户端取消订阅(可选)。如果客户端不再关心此资源,可以发送:

    resources/unsubscribe
posted @ 2025-10-04 18:14  Zhentiw  阅读(11)  评论(0)    收藏  举报