MCP Resources vs Resource Templates: The Simple Difference A Dev Genius blog post explains that in the Model Context Protocol (MCP), a Resource points to a specific piece of data via a concrete URI, while a Resource Template describes a URI pattern with variables for dynamically addressing many resources. The post uses examples like file:///docs/getting-started.md for a Resource and user://{user_id}/profile for a Resource Template, advising developers to use Resources for known data and Templates for variable-dependent data. MCP has Resources and Resource Templates . They sound almost identical. But there’s one simple difference: A Resource points to a specific piece of data. A Resource Template describes a pattern for finding many pieces of data. Once you understand that, the whole concept becomes much easier. An MCP Resource represents something specific that a client can access. For example: file:///docs/getting-started.md This points to one particular resource: getting-started.md. Another example could be: user://123/profile Here, 123 identifies a specific user. The important part is that the URI is concrete . You know exactly which resource you’re referring to. Think of it like an address: “Give me the document at this exact address.” That’s a Resource. Now imagine you don’t want to define a separate resource for every user. You could have: user://{user id}/profile This is a Resource Template . The {user id} is a variable. So the same template could resolve to: user://123/profileuser://456/profileuser://789/profile Instead of describing one resource, you’re describing a pattern for addressing resources . Think of it like: “Give me the profile for whichever user ID I provide.” That’s a Resource Template. Think about a URL. A specific URL: /users/123 points to one thing. A URL pattern: /users/{user id} describes how to access many things. MCP Resources and Resource Templates work with essentially the same mental model. Imagine a company with offices. A Resource would be: New York Office A Resource Template would be: Office in{city} The first points to one specific thing. The second tells you how to identify different things. That’s the difference. Use a Resource when you already know the specific resource you want to expose. For example: docs://getting-started Use a Resource Template when the resource depends on some variable. For example: user://{user id}/orders The client can then construct a URI for the particular user it needs. A Resource Template doesn’t mean you’ve created every possible resource upfront. You’re defining the URI pattern that can be used to identify resources dynamically. That’s why templates are particularly useful when your MCP server exposes data such as: Instead of registering thousands of individual resources, you can describe the pattern once. You don’t need to memorize complicated definitions. Just remember: Resource = a specific thing. Resource Template = a pattern for finding things. Once you see it this way, the difference between the two becomes pretty obvious. MCP Resources vs Resource Templates: The Simple Difference https://blog.devgenius.io/mcp-resources-vs-resource-templates-the-simple-difference-715fb848ff22 was originally published in Dev Genius https://blog.devgenius.io on Medium, where people are continuing the conversation by highlighting and responding to this story.