Servers vs Tools
MCP Servers are long-running processes that expose multiple tools. Understand the difference — and explore six real server types.
MCP Servers vs Direct Tool Calls
An MCP Server is NOT the same as a single tool. A server is a persistent process that can expose many tools, maintain state across calls, and manage connections. Here's how they compare:
Explore MCP Server Types
MCP servers come in many forms. Here are six common types, each exposing different capabilities:
Read, write, search files
Query, insert, update data
Wrap any REST or GraphQL API
Navigate, screenshot, interact
Persistent knowledge recall
Web, docs, or code search
See the Difference in Code
Here is the same capability — letting AI read a file — implemented as a direct tool call versus an MCP server tool. Notice how the MCP version is standardized and self-documenting:
You define the schema. You parse the call. You execute the function. You return the result. Different format for each AI provider.
The SDK handles protocol, validation, and transport. Your code is just the business logic. Works with Claude, VS Code, Cursor — any MCP client.
The Same Tool, Two Approaches
Here is a file-reading capability implemented both ways in Python. Notice how the MCP version handles protocol, validation, and discovery automatically — your code is just the business logic:
# You handle EVERYTHING: schema, parsing, execution, errors
tools = [{
"type": "function",
"function": {
"name": "read_file",
"description": "Read a file from disk",
"parameters": {
"type": "object",
"properties": {
"path": {"type": "string"}
},
"required": ["path"]
}
}
}]
def handle_tool_call(name, args):
if name == "read_file":
with open(args["path"]) as f:
return f.read()
# You must manually route every tool call
from mcp.server.fastmcp import FastMCP
# The SDK handles protocol, validation, routing, transport
mcp = FastMCP("file-server")
@mcp.tool()
def read_file(path: str) -> str:
"""Read a file from disk"""
with open(path) as f:
return f.read()
# Works with Claude, VS Code, Cursor — any MCP client
mcp.run()
The raw approach requires you to define JSON schemas, parse arguments, route calls manually, and handle errors — all in a format that only works with one AI provider. The MCP server version is six lines of business logic. The SDK generates the schema from the type hints, handles transport, and works with every MCP client automatically.