Lesson 12 - Step 1 of 6

Project Overview

Understand what you will build in the capstone project.

Congratulations!

You have reached the final lesson of the MCP Learning Guide. Throughout this course, you have learned how to build MCP servers from scratch, implement tools, resources, and prompts, work with different transports, and even build your own client.

Now it is time to put all of that knowledge together in a capstone project: building a complete, production-ready MCP server from scratch.

The Final Challenge

This capstone project will guide you through building a complete MCP server that includes tools, resources, and prompts. You will implement it using everything you have learned and test it with both curl and Claude Desktop.

What You Will Build

In this capstone, you will build a Note-Taking MCP Server that allows AI assistants to create, read, update, and manage notes. This server will demonstrate all the core MCP primitives working together.

diagram
+----------------------------------------------------------+
|                   NOTE-TAKING MCP SERVER                  |
+----------------------------------------------------------+
|                                                           |
|  TOOLS                     RESOURCES                      |
|  +-------------------+     +-------------------------+    |
|  | create_note       |     | notes://list            |    |
|  | update_note       |     | notes://{id}            |    |
|  | delete_note       |     | notes://tags            |    |
|  | search_notes      |     +-------------------------+    |
|  +-------------------+                                    |
|                                                           |
|  PROMPTS                                                  |
|  +---------------------------------------------------+   |
|  | summarize_notes - Summarize all or filtered notes |   |
|  | create_from_template - Create note from template  |   |
|  +---------------------------------------------------+   |
|                                                           |
+----------------------------------------------------------+
                           |
                           v
                   +---------------+
                   |  notes.json   |
                   |  (storage)    |
                   +---------------+

Server Features

Your completed server will include:

Tools (4 total)

  • create_note - Create a new note with title, content, and optional tags
  • update_note - Update an existing note by ID
  • delete_note - Delete a note by ID
  • search_notes - Search notes by keyword or tag

Resources (3 total)

  • notes://list - List all notes with metadata
  • notes://{id} - Get a specific note by ID (dynamic)
  • notes://tags - List all tags across notes

Prompts (2 total)

  • summarize_notes - Generate a prompt to summarize notes
  • create_from_template - Generate a prompt using note templates

Technical Requirements

Your server will meet these requirements:

Requirement Description
STDIO Transport Works with Claude Desktop via STDIO
Persistent Storage Notes saved to JSON file
Error Handling Proper error responses for invalid requests
Input Validation JSON Schema validation for tool inputs
MCP Compliant Full MCP 2024-11-05 protocol support

Prerequisites

Before starting, make sure you have completed the previous lessons and have:

  • Python 3.8 or higher installed
  • A text editor or IDE
  • curl for testing (or your MCP client from Lesson 10)
  • Claude Desktop for final integration testing
Build It Your Way

While we provide a guided implementation, feel free to customize the server to your needs. Add more tools, different resources, or creative prompts. The goal is to demonstrate your understanding of MCP.

Project Structure

By the end of this capstone, you will have the following project structure:

text
notes-mcp-server/
    notes_server.py      # Main server implementation
    notes.json           # Persistent storage (auto-created)
    README.md            # Documentation (optional)
    test_server.sh       # Test script (optional)

Ready to Begin?

In the next step, we will plan the server architecture, define the data model, and outline all the methods we need to implement. Let us build something great!