Having just listened to the recent episode of Latent Space with the authors of MCP, this notion of Tools being LLM triggered and Resources being used triggered feels like the right one.
Funnily enough they reference Cursor and '@'ing files as an example of what MCP resources should be.
To give an example of how I would like to use resources: I would like to ‘@’ MCP resources, just like I do my local codebase and rules. I work on a React UI that is separated into a project that has core ui-components & css and another that is a web UI (which imports the other as a dependency).
I wrote a MCP server to expose a tool to fetch these core components and styles because I can’t directly ‘@’ them and Cursor can’t ‘discover’ them. Really it’d just be neat if I could ‘@’ them and MCP resources sound as if they should be the right tool for this.
E.g. my prompt is currently: “Please add a button to the form which does X. Please fetch the global styles from My Code Tool and use the secondary button style”. If prefer to just be able to @ the global stylesheet as a resource.
The same is true in some of our backend server projects. We have core libraries for repeatable stuff like Kafka message consumers and producers, DB integration, etc. It would be valuable to be able to reference them as resources.
Obviously we’d need to consider how to construct a URI to distinguish files of the same name locally Vs files available via a MCP server.
Another interesting thing I heard on that podcast was the example that perhaps a database MCP server might expose the schema as a resource. If you need to query, that could still be a tool if you are after multiple records or applying a transformation.