Planning an MCP server, what belongs in it
The most important questions before you write code. Most servers fail here, not at the code.
The wrong order
Many devs start like this: "I have an idea for an MCP server. Let me run npx create-mcp and get going."
Three weeks later: it works technically, but no one installs it. Because the fundamental question never got answered.
The five questions before code
1. Which problem does the server solve?
Not "what does it do", but "which problem does it shrink". Example: "Claude has no access to my Lexoffice" is not a problem. "I have to manually look up invoices every morning to transfer them to the CRM" is a problem.
If you can't answer that in one sentence, don't build a server yet.
2. Who uses this?
Just you? Then build local, don't invest time in docs, distribution, pricing.
A team? Then you need install instructions, config, maybe multi-tenant.
A public audience? Then it's a product. With pricing, marketing, support. Far more work than you think.
3. Which tools belong in?
Common trap: "My server does EVERYTHING with X." Too broad a tool list confuses the model. It calls the wrong tool, gives wrong parameters.
Rule of thumb: 5-15 tools. If you have 40, split the server in two.
And: every tool needs a clear, unique purpose. Not get_data, fetch_data and read_data that all do the same thing.
4. Stdio or HTTP?
Stdio MCP servers run locally on the user's machine, start automatically when Claude needs them. Easier to install (npm install -g), no hosting cost.
HTTP MCP servers run remote, the user provides a URL, does OAuth. Need hosting, but allow central updates and user management.
Rule of thumb: if the server works with user-private data (files, credentials), stdio. If it has a central database that's shared, HTTP.
5. How do you monetize?
Ask early. Three models clearly visible today:
- Free + Open Source (community, GitHub stars, pull requests; may lead to consulting).
- SaaS with tiers (central hosting, users pay monthly; mcp-nex does that).
- Desktop/Local + Pro (server is free to install, Pro features unlock with payment).
Decision BEFORE the code, not after.
What to write down now
Before you npm init, have this page:
- Problem: one sentence.
- Audience: who, how many.
- Tool list: names + one-sentence purpose.
- Transport: stdio or HTTP.
- Monetization: if at all.
If all five are clear, you can build the skeleton in two hours. If not, it'll be a month.
The work-to-value rule
MCP server code is simple. 200 lines for a good 5-tool server. The work is:
- 30% code
- 30% data integration (APIs, rate limits, errors)
- 20% documentation
- 20% distribution (npm, GitHub, maybe marketplaces)
If you think you'll be done in two weeks, plan four.
Next lesson
What the skeleton looks like. TypeScript, @modelcontextprotocol/sdk, the minimal server in 40 lines of code.