How I make an MCP server out of almost anything

Now that Anthropic has more support for connectors, I want to show you how I've been creating my own Model Context Protocol servers for months now. This lets you use LLMs to interact with just about any tool you have API access to, and it's an easy way to make great prototypes to show how powerful these integrations can be.

Create a project in Claude

First, create a project and add a GitHub repository as context. I use the python-sdk repo with most of the files checked. I haven't experimented with which ones are worth checking/unchecking, but I've had success with the following:

  • docs
  • examples
  • scripts
  • CLAUDE.md
  • README.md
  • SECURITY.md
  • pyproject.toml

Start a chat in the project

Using Tailscale as an example, prompt it with the tools you want to use and a link to some docs, API endpoints, etc. as needed. Ensure you enable Web search so it can search for more context if required.

Write an MCP server for tailscale. It should implement the following functionality: 
* netcheck
* ip
* dns status
* status
* metrics
* ping <peer>
* version
* exit-node list
* whois <ip>

These are considered "safe" and won't mess up your configuration or perform unintended actions. Use the docs at https://tailscale.com/kb/1080/cli for reference

Update your claude_desktop_config.json

There's a few ways to install this MCP server depending on how Claude created it, and the best way is to ask the followup question "How do I install this MCP server?" Typically, you'll need to edit your claude_desktop_config.json file. The config file is usually located at:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json

You'll add an entry to the MCP servers json block like

{
  "mcpServers": {
    "tailscale": {
      "command": "python3",
      "args": ["/path/to/tailscale_server.py"]
    }
  }
}

But again, this is HIGHLY DEPENDENT on how your MCP server was actually written, so defer to Claude's answer. For reference, the way I described is probably the most complex way to configure your MCP server.

Test and use it

Restart Claude and see the tools you just made. 

And then use them!

It really is that simple. I've done this with many tools including Tailnet, Mattermost, Atlassian products like Jira and Confluence, and even Anomali products like ThreatStream and Security Analytics.

If you try and run the MCP server and get an error, use the same chat to tell Claude about the error so it has the context to edit/solve it.

Tips

  • API docs (Swagger or even just a PDF) contain the best context for building an MCP server.
  • An app's GitHub repo could contain TOO much context, so pick and choose the directories with endpoints intentionally. If it has docs with endpoints, prioritize those.
  • Open source your MCP server like I did with Tailscale. This makes it easier for others to fork and use. But honestly, with how simple this process is, it's almost easier to personalize it to your specs
  • As MCP becomes adopted by more LLM vendors, you should be able to reuse your MCP servers with more LLMs. The config process will be different, of course, but the meat of your connector will be the same.