lauren@terminal:~/blog$

$ cat building-my-first-mcp.md

Building My First MCP

I want to note that 30 minutes after finishing building my first MCP, Anthropic launched Skills. One of these Skills is a template for an mcp-builder. Well played, Anthropic, well played.

MCP Builder Skill interface showing the toggle switch and description

Even so, I am glad I did this exercise. I set out to understand what it takes to build an MCP (Model Context Protocol). The goal was a small experiment, something achievable in a couple of hours that I could extend later. Here's how my experience went.

What I did

For this experiment, I chose Matomo, an open-source analytics tool, as my data source. I should note that to create MCPs, you'll need access to API keys, so make sure you have that level of access before you begin building. Another thing to note: anytime you work with LLMs, APIs, and other data sources, you want to consider security. Having basic knowledge of security practices is essential. You can do this in a variety of ways, from old-fashioned Google searches to asking your favorite LLM about it.

I also found it helpful that I have basic REST API knowledge. It helped during debugging when I was running into some issues. Don't let this stop you from experimenting and tinkering. Part of building with these tools is failing, since that's where the learning happens.

You can also ask any of the tools like Claude Code and Cursor to help you understand why things are failing. The worst-case scenario is that you don't get things to work, but you've walked away with applicable knowledge.

I used Cursor's plan mode, as I also wanted to test that out. For the tech stack, I selected TypeScript and Node since most MCPs use these languages. Python was the alternative.

I wanted this MCP to run in three environments:

  • Claude Desktop
  • Claude Code
  • Cursor

I'd need a plan to configure each separately. It took me around 40 minutes to get the initial version running in all three environments. Then the rest of the time was spent testing and debugging. I spent under 2 hours and, in the end, had a functional MCP.

The MCP initially failed in Claude Desktop. I asked Claude Desktop to diagnose why it might work in the CLI but not in the desktop environment. It provided potential causes. I returned to Claude Code, addressed the issues, restarted the services, and the MCP began pulling metrics successfully.

Then, when requesting top-performing webpages in Claude, it triggered an error, likely from data structure handling. The same request worked in the CLI.

I asked Claude's desktop to explain the probable cause and suggest workarounds. When I mentioned the CLI worked, it considered it and provided specific alternatives. I implemented the workaround rather than continuing to debug the root cause. The workaround functioned as needed.

While I eventually will want Claude desktop not to fail, I made the choice that the workaround was good enough. This is me using my real-world product skills. Knowing the outcome I want, I was able to prioritize and make trade-offs.

The MCP now pulls analytics data without me needing to switch applications. I can examine metrics, identify patterns, and analyze site performance directly.

One finding I came across was a new site I'm watching shows high bounce rates with one-second average page times, indicating optimization needs. I can use Claude as I would with any other task to help analyze this data, suggest improvements, and guide next steps.

So, sure, there's now a Skill that Anthropic provides, but building it myself taught me real-world experience!

$ _

© 2026 Lauren Out Loud. All rights reserved.

System: Retro Terminal v2.1.0

Uptime: No script, still running | Coffee: ∞

// Type "help()" in the console for a surprise | Press Ctrl+Alt+Del to restart