Files
servers-modelcontextprotocol/src/sqlite
2024-11-19 11:05:20 -05:00
..
2024-11-19 11:05:20 -05:00
2024-11-19 11:05:20 -05:00
2024-11-19 11:05:20 -05:00
2024-11-19 11:05:20 -05:00
2024-11-19 11:05:20 -05:00

Simple SQLite Notes Server

A basic MCP server implementation that demonstrates note-taking functionality using the three core MCP primitives: Resources, Prompts, and Tools.

Core Concepts

Resources

Resources are how clients access data from the server. In this case, they're notes stored in SQLite.

# Access notes through a custom URI scheme
note:///example_note   # Gets the content of 'example_note'

Prompts

Prompts allow generating text based on server state. Our server has a note summarization prompt that can be styled.

# Example prompt with style argument
{
    "name": "summarize-notes",
    "arguments": {
        "style": "academic"  # Can be any style descriptor
    }
}

Tools

Tools modify server state. We have a simple tool to add new notes.

# Adding a new note
{
    "name": "add-note",
    "arguments": {
        "name": "my_note",
        "content": "This is my note content"
    }
}

Key Implementation Details

Handler Registration

All decorated handlers must be inside __init__:

def __init__(self):
    super().__init__("sqlite")
    
    @self.list_resources()
    async def handle_list_resources():
        # Handler code here

    @self.read_resource()
    async def handle_read_resource():
        # Handler code here

Storage

  • Uses SQLite for persistent storage
  • Helper methods handle database operations
  • Clients are notified of state changes