0

Resource Templates Reference

awesome-llm-appsreferences

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

SchemeUse CaseExample
config://Configuration dataconfig://settings, config://env
user://User-related datauser://{id}/profile
docs://Documentationdocs://api, docs://guide
stats://Statistics/metricsstats://current, stats://daily
file://File contentfile://{path}
db://Database recordsdb://users/{id}
api://API endpointsapi://weather/{city}
ui://UI widgetsui://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
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)