Parameterized resources using URI templates.
Sign in to save downloads to your library and vote.
Preview
Resource Templates Reference
Parameterized resources using URI templates.
Basic Resource Template
server.resourceTemplate(
{
uriTemplate: "user://{userId}/profile",
name: "User Profile",
description: "Get user profile by ID",
mimeType: "application/json",
},
async ({ userId }) => {
const user = await fetchUser(userId);
return object(user);
},
);
URI Template Patterns
Single Parameter
// user://123/profile
server.resourceTemplate({
uriTemplate: "user://{userId}/profile",
// ...
});
Multiple Parameters
// org://acme/team/engineering
server.resourceTemplate(
{
uriTemplate: "org://{orgId}/team/{teamId}",
name: "Team Details",
// ...
},
async ({ orgId, teamId }) => {
return object(await fetchTeam(orgId, teamId));
},
);
Optional Parameters
// file://documents or file://documents?format=json
server.resourceTemplate(
{
uriTemplate: "file://{path}",
name: "File Content",
// ...
},
async ({ path }, { searchParams }) => {
const format = searchParams?.get("format") || "text";
const content = await readFile(path);
return format === "json" ? object(content) : text(content);
},
);
URI Scheme Conventions
| Scheme | Use Case | Example |
|---|---|---|
config:// | Configuration data | config://settings, config://env |
user:// | User-related data | user://{id}/profile |
docs:// | Documentation | docs://api, docs://guide |
stats:// | Statistics/metrics | stats://current, stats://daily |
file:// | File content | file://{path} |
db:// | Database records | db://users/{id} |
api:// | API endpoints | api://weather/{city} |
ui:// | UI widgets | ui://widget/{name}.html |
Complete Example
import { MCPServer, object, text, markdown } from "mcp-use/server";
const server = new MCPServer({
name: "data-server",
version: "1.0.0",
});
// Static resource
server.resource(
{
uri: "config://database",
name: "Database Config",
mimeType: "application/json",
},
async () => object({ host: "localhost", port: 5432 }),
);
// Parameterized resource
server.resourceTemplate(
{
uriTemplate: "user://{userId}",
name: "User Data",
description: "Fetch user by ID",
mimeType: "application/json",
},
async ({ userId }) => {
const user = await db.users.findById(userId);
if (!user) throw new Error(`User ${userId} not found`);
return object(user);
},
);
// Nested template
server.resourceTemplate(
{
uriTemplate: "user://{userId}/posts/{postId}",
name: "User Post",
description: "Fetch specific post by user",
mimeType: "application/json",
},
async ({ userId, postId }) => {
const post = await db.posts.findOne({ userId, id: postId });
return object(post);
},
);
// Documentation resource
server.resource(
{
uri: "docs://api",
name: "API Documentation",
mimeType: "text/markdown",
},
async () =>
markdown(`
# API Documentation
## Endpoints
- GET /users - List all users
- GET /users/:id - Get user by ID
`),
);
Ingestion metadata
- Source catalog
- awesome-llm-apps
- Repository
- Shubhamsaboo/awesome-llm-apps · main
- File path
- generative_ui_agents/ai-mcp-app-builder/apps/mcp-use-server/.agent/skills/mcp-builder/references/resource-templates.md
- Last refreshed
- 10/24/2026, 3:00:14 AM (5h ago)
- Refresh schedule
- Daily · 03:00 UTC
- Dedupe status
- Unique · deduped by (source, url)