Donn Felker Profile picture
Oct 8 1 tweets 2 min read Read on X
To build a good MCP server you need to think about how the LLM will interact with your tools.

An MCP Server is not simply an API wrapper, though it can be.

However, if its an API wrapper its often lackluster in capability unless the API is comprehensive with features.

In an MCP Server, the tool descriptions, filter options, expected input values, etc all matter greatly. Natural language interactions is what matter here. The tool description of what it does and input values etc is critical.

Tools such as "find_projects" instead of a restful "list projects" is far more useful to an LLM.

Why? Users are asking questions, often about sets or subsets of data. Sometimes thats one record, sometimes thats multiple records. The LLM wants to find/search for things not paginate through pages and pages of data.

Plus pagination is slow and returns tons of data. Pagination is a token monster, it will eat up your context window, so you have to be careful.

Examples:

- User Initiated: "How many projects started in 2025, and already have already been completed"?

- Agent Initiated: "I need to find all projects that reference work item 3351 that were completed in 2025" (e.g. - via Cursor, Claude Code, etc).

If your MCP tool has a filter for `created at` with relational comparison operators (>, =, <, etc) and another filter for status, you can get this data easily with minimal context window impact (if your result is small).

Then with an additional tool to return a single record, `get_project` (that returns the full dataset of the project) you can provide the LLM with tools so it can find and read the data it needs without exhausting its context window.

Example: The LLM returns many projects that were completed. One catches the eye of the user. So they ask "For project `Make it Rain` can you give me the details about it?"

The LLM would then go get the project with the `get_project` MCP tool (or resource - though beware, not all MCP clients fully support resources yet) and show you the data.

While all of this is possible with an API that has a good domain model surface area, its not always possible as many API's are simply REST CRUD operations. Nothing wrong with that, but it makes it more challenging at times.

The moral of the story here is that you have to think about modeling your interactions with MCP tools as if you were telling someone "Hey, here's what I can do for you, and here's how you can ask me about it, and then here's the kind of data you'll get back". Then the LLM can decide "oh I want to use tool x this time, and for details I'll use tool y".

In find/search operations, don't return too much data, just as much as needed for the main use cases of your app. Then provide a tool that the LLM can use go get more data for that particular record, if and when it needs it. This will will keep the MCP tool snappy, keep the context window consumption to a minimum and allow the LLM to get the data it needs when it needs it.

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Donn Felker

Donn Felker Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @donnfelker

Dec 29, 2021
Things you should NOT skimp on if you work at a computer all day ...

1. High end chair 🪑
2. Crisp 4k-5k monitor and VESA mount 🖥
3. Standing desk 🧍‍♂️
4. Ergonomic Keyboard ⌨️
5. Anti-Fatigue Mat 🦶

My recommendations as follows ...

🧵 ...
🪑You're going to sit at least half the time you work, so get a high quality chair.

I recommend...

- The Herman Miller Aeron: hermanmiller.com/products/seati…
- Steelcase Leap V2: steelcase.com/products/offic…

Important: Make sure you get the right size for your body composition.
🖥You're going to be staring at a piece of plastic all day long... make it easy on your eyes.

I recommend ...

- LG 5K UltraFine 27" Display: apple.com/shop/product/H…
- (or any other high quality 4K monitor. I like Dells.)
- Ergotron monitor arm: amzn.to/3py77mm
Read 9 tweets
Dec 29, 2021
Lightning Network's "Channels" are networked escrows.

That was the 💡moment for me.

Here's a quick 30,000 foot view of how it works in my head ...

🧵 ...
1. Two parties open a "channel" (escrow) with set funds from both sides with a multi-sig wallet.

This "channel" is "opened" by creating a bitcoin transaction with a multi-sig wallet signed by both parties by deposits from both sides.

The is the balance they transact against.
2. Once the channel is open (bitcoin transaction is complete) they can start to perform transactions "off-chain" with the lightning network.

The lightning network manages the transactions, amounts and ledger for said channel, and does it on its own system. Not on bitcoins.
Read 14 tweets
Aug 2, 2020
A lot of people don’t start blogging/writing because what they want to share has already been shared by others.

My advice? - Share your experience anyway. 💯

Here’s why ... (thread) 👇🏻
It’s important that you write and share what you learned in your own words.

The way you explain something might make sense to someone who has been struggling with other tutorials, blogs, books or videos.
Very often I learn new tech through a series of blogs, videos and snippets of code.

It’s NEVER one place that provides all of what I need.

The same topic, explained in a different way on a different site will often be the catalyst to me learning something.
Read 5 tweets
Jul 20, 2020
When asked if you have any questions for the interviewer at the end of a job interview, say yes and ask this:

“No job is perfect ... what do you dislike about working here?”

You’ll get pure honesty or absolute lies.
This question almost always throws the interviewer off balance.

They’re not ready for it and most don’t know how to answer it, which is why most of the time you’ll get honest feedback or obvious studdering lies.
I’ve been using this exact tactic for 15+ years.

It works every single time.

99% of the time the honest folks were indeed honest. I know this because I would experience the same negative aspects once employed at said employer (even if it was just something minor).
Read 4 tweets
Oct 16, 2019
I'm not convinced that Android multi-module projects are the way to go anymore.

I'm finding gradle indexing, building and rebuilding is taking up the majority of my day now. It feels like

I'm barely coding anymore and just waiting for the tools to catch up.
I appreciate the hardwork that is put into these tools, but at this point I'm starting to hate developing for Android with large projects. With small projects its a breeze.
The solution? I think it might be putting modules into a maven repo and publishing artifacts.

Then when you need them, pull in the artifacts like you do with AppCompat, etc. Use what you need.

If it changes, update the version code, reimport. All done.
Read 4 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us!

:(