我看目前网上的 MCP 相关教程,主要是教的写 MCP Server 的,很少讲到 MCP Client 。即使有,也只使用 call_tool 来做演示。甚至 claude 官方文档都对如何正确使用 resource 语焉不详:
https://modelcontextprotocol.io/quickstart/client
但其实 MCP 能够使用的除了 tools 还有 resourc/prompts 。分别需要使用下面的调用来获取。
session.list_resource_templates()
session.list_resources()
session.list_prompts()
请大家分享一下你是怎么使用 resource 的。
如果你要实现一个全自动的通用 client ,这个 client 事先不知道 server 的任何信息,只能通过先调用list_xx
来获取。那么,tools 可以通过 tool calling 让大模型选择使用哪个工具,但怎么让大模型告诉你应该使用哪个 resource 呢?难道从返回的正文里面解析?
注意前提是你提前不知道这个 MCP server 有什么功能。https://github.com/stuzero/pg-mcp-server/blob/main/example-clients/claude_cli.py 这个示例代码,明显是在写 client 的时候,已经知道 server 是一个数据库的服务了,所以几乎是 hardcode 来利用 resource ,这样并不通用。
我能想到的方法,是自己再定义几个读取 resource 的函数,把他一起加到 tool call 里面:
例如:
def read_resource(uri):
xxx = session.read_resource(uri)
...
把这个 read_resource 加到 tool call 里面。
但感觉这种方法有点笨,不知道大家有没有什么好办法。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.