Ask a language model what 17.5% of 2,340 is, what time it is in Tokyo right now, or when the cron expression */15 9-17 * * 1-5 next fires. You'll usually get a confident answer, and sometimes a wrong one.
That isn't a failure of intelligence. Models predict text; they don't run a calculator, read a clock, or step through a scheduler. The fix is to give them tools, and the Model Context Protocol (MCP) is the standard way to do that.
MCP in one paragraph
MCP is an open protocol that lets AI applications talk to external tools and data in a consistent way. An MCP server describes the tools it offers: their names, what they do, and the inputs they take. An MCP client (Claude Code, Claude Desktop, claude.ai, the Claude API and many editors) connects to the server, shows those tools to the model, and runs them when the model asks. Build a tool once, and it works everywhere that speaks MCP.
Think of MCP as USB-C for AI tools: one plug, many devices.
How a tool call works
- The client connects to the server and asks for its list of tools.
- You ask Claude a question.
- Claude decides a tool would help and asks for it with structured arguments, for example
calculate({ "expression": "2340 * 0.175" }). - The client runs the tool on the server and returns the result:
409.5. - Claude uses that exact result in its answer.
The model still does the reasoning. The tool supplies the facts it can't reliably produce on its own.
Try it: connect a free MCP server
We run a free, stateless MCP server with 23 read-only tools at https://www.buonnet.com/api/mcp. It needs no sign-up or API key.
Claude Code
claude mcp add --transport http buonnet https://www.buonnet.com/api/mcp
Run claude mcp list to confirm it's connected, then ask something like "What's 17.5% of 2,340, and what's the SHA-256 of 'hello'?"
Claude Desktop and claude.ai
Open Settings → Connectors → Add custom connector and paste the server URL.
The Claude API
The API's MCP connector lets Claude call a remote MCP server directly from a Messages request:
import anthropic
client = anthropic.Anthropic()
response = client.beta.messages.create(
model="claude-opus-5-5",
max_tokens=16000,
betas=["mcp-client-2025-11-20"],
mcp_servers=[{
"type": "url",
"url": "https://www.buonnet.com/api/mcp",
"name": "buonnet",
}],
tools=[{"type": "mcp_toolset", "mcp_server_name": "buonnet"}],
messages=[{"role": "user", "content": "How many business days until Christmas 2026?"}],
)
print(response.content)
What's in the free server
| Category | Tools |
|---|---|
| Math & Units | calculate, unit_convert, percentage, statistics |
| Time & Dates | time_now, time_convert, date_calc, cron_explain |
| Text | text_stats, text_transform, regex_test, text_diff |
| Encoding & Security | encode_decode, hash, jwt_decode, generate_id |
| Developer | json_tools, http_status, color_convert, semver |
| AI | claude_models, llm_cost_estimate, token_estimate |
You can browse every tool, see its inputs and try it live on the MCP Server page.
Tip: expose fewer tools
The more tools a model can see, the harder it is to pick the right one. On the MCP Server page you can select only the tools you need; the page generates a server URL that exposes just those.
Build your own tools, without code
The free tools cover general jobs. Most teams also have knowledge that's specific to them: an FAQ, a product catalog, a team directory, standard reply templates.
MCP Tool Studio turns those into MCP tools in your browser. Because the server definition is encoded in the URL, there's nothing to deploy and nothing stored on our side. Paste the URL into Claude and your tools are live.
A few things to keep in mind
- Don't put secrets in tool arguments or Studio URLs. Treat them like any other URL you share.
- MCP servers can do anything their code allows. Only connect servers you trust, and prefer read-only tools when you're experimenting.
- Good tool descriptions matter. Say what the tool does and when to use it; that's how the model decides.
Ready to try it? Start at buonnet.com/tools/mcp-server.
