Building a Todo List MCP Server
June 27, 2025 • 30 min read • Beginner

Introduction
MCP servers give us a way to give context to an LLM, we provide tools, resources, prompts to the LLM through the MCP interface that it can use to complete actions on our behalf. In this tutorial we will be building a simple MCP CRUD application, but you could use it for anything really. If you would like to learn more than have a look at the resources below.
This tutorial is going to be super short and simple and we will building the following:
• Server (Think nodeJS, it feels similar)
• Tools (CRUD API handler for your LLM to use)
• Database (For storing our Todo’s)
Project Setup
First up, lets install the required packages and set up our project.
Once that’s done, open up your package.json file and just make sure it looks like mine below.
Notice we have an inspect command, this downloads and install the MCP inspector which is what you can use locally to ensure your MCP server tools, resources etc are doing what they should be doing before packaging it up to use with Claude or some other LLM client.
Setting up the Database
I won’t go into too much detail but Prisma is a DB ORM that makes it super easy to work with databases and manage migrations, highly recommended.
Next, in your schema.prisma file, add the following schema.
Then just run a quick migration, and you should be all setup.
Creating the Server
In your root directory create a src folder and an index.ts and tools.ts file.
Our server will be in our index.ts file. At the top of the file we will add our imports.
Then we can add our server details.
Before we create our tools, lets just make sure the server is connecting correctly.
Open up the link in the terminal under Open inspector with token pre-filled: You should see the following page in localhost.

Next, click Connect, You should see the page below
Note: The tools will still be unavailable to you and that’s all good! We will be handling that in the next step.

Great, let’s create some tools for our LLM to use.
Creating Tools
Open up the tools.ts file you created earlier, first add the required imports and basic scaffolding.
You are now free to uncomment the initializeTools code in the index.ts file.
In the initialize tools function, register a tool.
So now, theoretically our LLM can create todo list items on our behalf using the structured input and outputs above. I hope you’re starting to see just how easy this is and the power you have to create these tools.
Before we add the rest of the tools, lets just make sure it’s running correctly.
• Click ‘List Tools’ to see the addTodo tool you just created, the others you see below we will add in the next step.
• Click on the ‘addTodo’ tool you just created which will open the side panel on the right.
• Enter some text for our first todo item and ‘Run Tool’.
• It should return the ‘Success’ message you see below.

Now we will quickly add some extra tools, feel free to test them in your inspector above before moving on.
Cool, now let’s make this MCP server actually useful!
Using Our MCP Server
For this demo I will be using Claude Desktop, but MCP has a tutorial on creating your own LLM client if you wish.
Open up the Claude desktop config file.
Add our new server, make sure to add the full path your todo MCP server.
Open up Claude Desktop
• Click the tools icon
• Your MCP server should show up near the bottom. The number 4 shows the number of connected tools. Clicking it will let you manually select a tool to use, but we want Claude to do that for us.

Create your first todo item, it’s kind of fun to see how vague I can be and see if it still recognises that I want to create a todo item.

Now when I log into Claude desktop I just need to ask the following below and it gives me my list of what I need to do.

I hope this tutorial has shown you just how easy it is to create your own MCP servers, this one was the classic Todo-App problem, but I’ve used MCP servers to solve all sorts of real world problems. This is obviously just the tip of the iceburg here so I’d recommend looking into resources, prompts and sampling (I may create another tutorial covering these soon). It really does solve the AI context problem fairly well.
Thanks so much for doing this tutorial with me, I hope you had as much fun as I did when I put it together.