# Adding Resources and Prompts — Agent Frameworks and MCP Basics

Source: https://www.geekswithgeeks.com/en/agent-frameworks-mcp/srv-resources-prompts

> Expose read-only data and a reusable prompt template from the same server.

## URIs for data

A resource is addressed by a **URI** such as `notes://welcome`. A URI can contain a parameter in braces, which makes a resource template. Prompts are functions that return the message text a user can insert into the conversation.

## A resource and a prompt

The resource returns text for a given name. The prompt builds a code-review request from the code the user supplies.

```python
@mcp.resource("notes://{name}")
def get_note(name: str) -> str:
    """Return the text of a saved note."""
    return NOTES.get(name, "Note not found")

@mcp.prompt()
def review_code(code: str) -> str:
    """Ask for a careful code review."""
    return f"Please review this code for bugs and clarity:\n\n{code}"
```

## Keep resources small and stable

Resources are attached to the context, so large ones cost tokens on every use. Prefer focused documents over dumping a whole database, and let a tool fetch big data on demand.

**Quiz:** What does `notes://{name}` define?

- [ ] A tool with no inputs
- [x] A resource template with a name parameter
- [ ] A network port
- [ ] A Python package

*Answer:* A resource template with a name parameter. The braces make part of the URI a parameter that is passed to the function.
