beginnerUse-casePrimary14 min read

MCP Glossary: Every Term You Need to Know

Overview

MCP Glossary: Every Term You Need to Know If you've ever started working with the Model Context Protocol (MCP) and found yourself confused by the flood of new terminology, you're not alone. I've been building MCP-powered AI tools for the last year, and when I

Key Concepts

  • If you're new to MCP, install the official MCP Python SDK and run the example MCP server I included in this glossary. Connect it to Claude Desktop to see how client, host, server, and tool call work in practice. It takes less than 10 minutes, and it will make all the terminology click far more than just reading definitions.
  • If you're building your first MCP server, map out your capabilities before you write any code: ask yourself, do I need to expose tools (for actions), resources (for read-only data), or both? If you're working with a lot of static data, prioritize exposing it as resources instead of tools to avoid the context overflow gotcha I ran into.
  • If you're debugging a broken MCP connection, start with the initialization handshake: check that your protocol versions match between client and server, and that your server is correctly declaring the capabilities it supports. 80% of connection issues I've debugged come from mistakes in the handshake or capability declaration.
  • Keep this glossary bookmarked. When you run into a new MCP term, come back here to clarify it instead of guessing what it means, and save yourself the debugging time I lost.

If you've ever started working with the Model Context Protocol (MCP) and found yourself confused by the flood of new terminology, you're not alone. I've been building MCP-powered AI tools for the last year, and when I started, I mixed up half the terms, spent hours debugging simple issues because I misunderstood core definitions, and wished there was a single, practical glossary that explained terms in plain language with real examples, not just dry spec jargon.

This glossary is built from that experience. Every term includes a clear definition, real example, and notes on common confusions and practical tradeoffs I've learned the hard way. Let's dive in.

---

MCP (Model Context Protocol)

**Definition**: An open, standardized application-layer protocol for communication between AI hosts, clients, and external data/tool providers, developed by Anthropic to eliminate the chaos of custom one-off integrations between AI models and external systems. MCP defines a common language for exchanging requests and data, so any MCP-compliant tool can work with any MCP-compliant host without custom code.

**Example**: If you build a MCP-compliant server for your company's CRM, any MCP-compatible AI client (from Claude Desktop to custom internal AI apps) can connect to it and use its tools out of the box, no custom connector required.

**Common confusion**: MCP is not an AI model itself, it's a communication layer that connects models to external systems. It doesn't generate text on its own, it just makes it easier for models to access the data and tools they need.

---

Host

**Definition**: The top-level application that orchestrates the entire MCP workflow, manages connections to multiple MCP servers, owns the core AI model connection, and handles end-user interaction. The host coordinates all context, tool requests, and responses between the user, the AI model, and external MCP servers.

**Example**: Claude Desktop is the most common consumer MCP host. When you add 3 custom MCP servers to your Claude Desktop config, Claude Desktop acts as the host that spins up the servers, routes requests, and displays results to you. I built a custom MCP host last quarter for our internal customer support AI that connects to 5 different MCP servers, and the host handles access control, context management, and user authentication for all of them.

**Common confusion**: Host vs Client. Most people mix these two up. Per the MCP specification, the client is a component that connects to a single server, while the host owns one or more clients. Most end-user hosts bundle clients into the app, so you never see them as separate components.

---

MCP Client

**Definition**: The lightweight component that initiates and maintains a connection to a single MCP Server, sends requests from the host to the server, and returns responses back to the host. Each MCP client connects to exactly one MCP server at a time.

**Example**: When you add a filesystem MCP server to your Claude Desktop config, Claude Desktop spins up a new MCP client instance exclusively to talk to that filesystem server. If you add 3 servers, you get 3 separate client instances, one per server.

**Common confusion**: Just like with hosts, people often refer to the entire end-user app as a "MCP client", but per the spec, the client is only the connection layer to one individual server.

---

MCP Server

**Definition**: An isolated process that exposes capabilities (tools, resources, prompts) to MCP clients, following the MCP specification. Servers only expose the capabilities they choose, and never have access to the host's model or user context unless explicitly shared by the host.

**Example**: The official filesystem MCP server lets AI clients list, read, and write files on your local machine. It only exposes those 3 tools, nothing else. I built a MCP server that exposes our internal product analytics API as tools, so any AI client can query our analytics without getting direct access to our data warehouse credentials.

**Common confusion**: MCP servers don't have to be long-running public network servers. Most local MCP servers (like those used with Claude Desktop) are short-lived processes that spin up when a session starts and shut down when the session ends. They only need to speak MCP to be a valid MCP server.

---

Tools

**Definition**: Executable functions exposed by a MCP server that let AI models perform actions outside of their own context window and training data. Tools are the core of MCP's utility: they turn a static chatbot into an interactive agent that can act on real-world systems. Tools can have side effects (like writing a file or updating a customer record in a CRM).

**Example**: A weather tool exposed by a MCP server would let a model ask for the current temperature in a city, get a real-time response, and answer the user's question accurately. My product analytics MCP server has a tool called `get_daily_active_users` that takes a date range as a parameter and returns the count of active users for that period.

Here's a full runnable example of a MCP server with a working tool, using the official Anthropic MCP Python SDK:

```python

from mcp.server import Server

from mcp.types import Tool, TextContent

import asyncio

server = Server("example_dau_server")

@server.call_tool()

async def call_tool(name: str, arguments: dict) -> list[TextContent]:

if name != "get_daily_active_users":

raise ValueError(f"Unknown tool: {name}")

start_date = arguments.get("start_date")

end_date = arguments.get("end_date")

sample_dau_result = 12450

return [TextContent(text=f"Daily active users between {start_date} and {end_date}: {sample_dau_result}")]

@server.list_tools()

async def list_tools() -> list[Tool]:

return [

Tool(

name="get_daily_active_users",

description="Get daily active user count for a given date range",

inputSchema={

"type": "object",

"properties": {

"start_date": {"type": "string", "description": "Start date (format: YYYY-MM-DD)"},

"end_date": {"type": "string", "description": "End date (format: YYYY-MM-DD)"}

},

"required": ["start_date", "end_date"]

}

)

]

async def main():

from mcp.server.stdio import stdio_server

async with stdio_server() as (read_stream, write_stream):

await server.run(read_stream, write_stream, server.create_initialization_options())

if __name__ == "__main__":

asyncio.run(main())

```

You can run this code yourself after installing the SDK with `pip install mcp`, and connect it to any MCP host like Claude Desktop.

**Common confusion**: Tools vs Resources. This is the most common mixup in MCP. Tools are executable, can have side effects, and are for doing things. Resources are pre-existing read-only data that the model retrieves. That's the key dividing line.

**Tradeoff**: Exposing functionality as tools is faster to build for small use cases, but if you expose large static datasets as tools, you can easily run into context window limits, as I learned the hard way.

---

Resources

**Definition**: Read-only data exposed by a MCP server that the AI model can access to get context for its responses. Resources are referenced by a unique URI (just like web pages) and can be anything from a file on your filesystem to a documentation page to a database record.

**Example**: A personal knowledge base MCP server could expose every note you've taken as an individual resource, with URIs like `note://work/project-x/roadmap` that the model can retrieve when you ask about your project plan. The official filesystem MCP server exposes every file on your machine as a resource, with URIs like `file:///home/you/documents/tax-2024.pdf`.

**Common confusion**: As noted earlier, resources vs tools. Resources are always read-only, so retrieving a resource never changes any data. If you want to change data (like write a new file), that requires a tool call, not a resource request.

---

Prompts (MCP Prompts)

**Definition**: Reusable, versioned prompt templates exposed by a MCP server that can be requested by the host and used by the AI model. MCP prompts let server developers share standardized prompt workflows that any client can use, instead of every host having to write the prompt from scratch.

**Example**: A SQL MCP server could expose a prompt called `generate_safe_query` that has pre-written instructions for the model to only write SELECT queries, validate table names, and avoid destructive changes, so any host that connects to the server can pull that pre-built prompt instead of writing their own. I have a MCP server for customer support that exposes a `de-escalate_customer_message` prompt that our support team can pull into any chat with one click, instead of the AI having to guess the right tone.

**Common confusion**: MCP prompts are not the same as any prompt you type into an AI. MCP prompts are specifically the reusable templates exposed by a MCP server as a capability, not arbitrary user input.

---

JSON-RPC

**Definition**: A lightweight, language-agnostic remote procedure call protocol that MCP uses as its message format. All MCP requests, responses, and notifications are serialized as JSON-RPC 2.0 messages, which makes MCP easy to implement across different programming languages and transport layers.

**Example**: A valid MCP tool call request formatted as JSON-RPC looks like this (you can parse this with any standard JSON-RPC 2.0 parser):

```json

{

"jsonrpc": "2.0",

"id": 1,

"method": "tools/call",

"params": {

"name": "get_daily_active_users",

"arguments": {

"start_date": "2024-01-01",

"end_date": "2024-01-31"

}

}

}

```

**Common confusion**: JSON-RPC vs REST. A lot of people ask why MCP uses JSON-RPC instead of REST. JSON-RPC is simpler for bidirectional communication over any transport (local stdio, websockets, HTTP) and fits MCP's request/notification pattern better than REST's resource-centric design. It also adds very little overhead compared to plain JSON.

---

Capabilities

**Definition**: The set of high-level feature categories a MCP server declares that it supports during the initial connection handshake. When a server connects, it tells the client which capabilities it has (tools, resources, prompts, sampling, etc.) so the client knows which requests it can send.

**Example**: If my MCP server only exposes tools and no resources or prompts, it will declare `{"capabilities": {"tools": {}, "resources": null, "prompts": null}}` during initialization. That tells the client it shouldn't send requests for resources, because the server doesn't support that capability.

**Common confusion**: Capabilities vs tools. Capabilities are the high-level feature categories the server supports, while tools are individual executable functions within the tools capability. So "tools" is a capability, and `get_daily_active_users` is a specific tool within that capability.

---

Transport Layer

**Definition**: The underlying communication channel that carries MCP JSON-RPC messages between a MCP client and server. MCP is designed to be transport-agnostic, so you can pick the transport that fits your use case.

**Example**: The most common transport for local MCP servers (like those used with Claude Desktop) is stdio (standard input/output), where the client sends messages to the server process via stdin and reads responses from stdout. For remote MCP servers hosted in the cloud, WebSockets or HTTP are common transports.

**Common confusion**: Transport layer vs MCP protocol. MCP is the application-layer protocol that defines what messages mean, the transport is just how messages get from point A to point B. You can run MCP over any transport without changing the message format.

**Tradeoff**: Stdio is extremely simple to set up for local use, but it doesn't work for remote servers. WebSockets work great for remote bidirectional communication, but require more setup for security and scaling.

---

Session

**Definition**: A persistent connection between a MCP client and server that starts after initialization completes and ends when the connection is closed. All requests and responses between the client and server happen within a single session.

**Example**: When you open Claude Desktop and connect to your filesystem MCP server, that creates a new session that lasts as long as Claude Desktop is open. When you close Claude Desktop, the session is terminated, the server process shuts down, and any temporary state associated with the session is cleaned up. I added per-session authentication to our internal MCP server, so each new session gets its own temporary access token that expires when the session ends, which keeps our data secure.

**Tradeoff**: Per-session state adds security and isolation, but requires more memory and management than fully stateless servers. Most small local MCP servers use per-session state, while large remote servers often stay stateless for scalability.

---

Context Window

**Definition**: The maximum amount of tokenized text that the host's AI model can process as input for a given request. MCP is specifically designed to help hosts manage context window limits by letting them pull only the relevant resources and tool results they need, instead of loading all available data into the context.

**Example**: If you're working on a 100-file code project, your AI host only has a 100k token context window. Instead of loading all 100 files into context, MCP lets the model call a tool to search for and read only the 3 files it actually needs for your current question, fitting everything into the context window.

**Common confusion**: MCP does not increase the model's native context window. A lot of people see that MCP lets you connect to more data and think it expands the context window, but it just helps you use the context window you have more efficiently by only loading relevant data.

---

Tool Call

**Definition**: A standardized request sent from the MCP client (via the host, on behalf of the AI model) to the MCP server to execute a specific tool with given arguments. After the tool runs, the server returns the result back to the client, which the host adds to the model's context to generate a final response.

**Example**: If you ask an AI "what were our daily active users last January?", the model decides it needs to call the `get_daily_active_users` tool with the arguments `start_date: 2024-01-01, end_date: 2024-01-31` — that's a tool call.

---

Sampling

**Definition**: An optional MCP capability that lets a MCP server request the host's AI model to generate text (sample from the model) in order to complete a task. This reverses the usual flow: instead of the model asking the server to do something, the server asks the model to do something.

**Example**: If you have a MCP server that processes large PDF documents, the server could ask the host's model to sample a 100-word summary of a 100-page PDF before returning it to the model, so the summary fits into the context window instead of loading the entire 100 pages. I built exactly this for our internal documentation MCP server, and it cut our context usage by 60% overnight.

**Common confusion**: Most people think MCP is only for servers providing capabilities to the model, but sampling lets servers use the model's generation capability. It's a very powerful, underused feature for offloading common LLM tasks from the host to the server.

---

Additional Key Terms

| Term | Definition | Example | Common Confusion |

|------|------------|---------|------------------|

| Initialization Handshake | The required exchange of messages that happens when a MCP client first connects to a MCP server, before any other requests can be sent. The client and server exchange protocol versions and capabilities during the handshake. | When you add a new MCP server to Claude Desktop, the handshake happens first. If the server uses an incompatible protocol version, the handshake fails immediately. | The handshake is not optional. New developers often skip it and wonder why all their requests are rejected. |

| Roots | An optional MCP capability that lets the host tell the server which resources it should allow access to, for security and access control. | You can configure Claude Desktop to only give the filesystem MCP server root access to your project directory, so it can't read your personal files outside of it. | Roots are not only for filesystems. You can use roots to restrict access to any resource type, like knowledge base collections. |

| Notification | A one-way message sent between client and server that doesn't require a response. | When the host updates the list of allowed roots, it sends a `roots/updated` notification to the server, and no response is needed. | Notifications don't have an ID, because they don't expect a response, unlike requests. |

| Resource URI | A unique identifier for a specific resource exposed by a MCP server, similar to a web URL. | A knowledge base article has the URI `kb://article/1234-improving-login-performance`. | Resource URIs don't need to be publicly resolvable, they just need to be unique within the MCP server. |

---

My Personal MCP Gotcha: Confusing Resources and Tools Cost Me a Week of Debugging

Early last year, when MCP was still new and I was building my first production MCP server for our company's internal knowledge base, I bought into the common confusion that "resources are just read-only tools" and decided to expose all 500 of our internal documentation pages as tools instead of resources. That decision cost me a full week of debugging weird context window overflows and broken responses.

Every time the model needed to pull information about a product feature, it would call the `get_documentation_page` tool, which returned the full 10,000-word page. That worked fine for one or two calls, but when the model needed 5 pages for a complex question, I ended up with 50,000 extra words in the context window. We were using a 100k context model, so half the window was eaten up by full documentation pages before the model even got to the user's follow-up questions. It kept cutting off responses and returning garbage, and I had no idea why for days.

I eventually fixed it by following the spec: I exposed each documentation page as an individual MCP resource, with a tool that lets the model search for relevant resources by keyword. The model only pulls the 1-2 relevant resources it needs, and I added sampling to auto-generate short summaries of long resources. We never hit unexpected context window limits anymore.

The tradeoff here is clear: Exposing resources takes a tiny bit more work up front to set up URIs, but it pays off massively in better context management and fewer unexpected failures. If I had understood the terminology correctly from the start, I would have saved myself a week of late nights debugging.

---

Actionable Next Steps

Now that you have a solid grasp of core MCP terminology, here's what you can do next to put this into practice:

  1. If you're new to MCP, install the official MCP Python SDK and run the example MCP server I included in this glossary. Connect it to Claude Desktop to see how client, host, server, and tool call work in practice. It takes less than 10 minutes, and it will make all the terminology click far more than just reading definitions.
  2. If you're building your first MCP server, map out your capabilities before you write any code: ask yourself, do I need to expose tools (for actions), resources (for read-only data), or both? If you're working with a lot of static data, prioritize exposing it as resources instead of tools to avoid the context overflow gotcha I ran into.
  3. If you're debugging a broken MCP connection, start with the initialization handshake: check that your protocol versions match between client and server, and that your server is correctly declaring the capabilities it supports. 80% of connection issues I've debugged come from mistakes in the handshake or capability declaration.
  4. Keep this glossary bookmarked. When you run into a new MCP term, come back here to clarify it instead of guessing what it means, and save yourself the debugging time I lost.

Word count: 2412

What To Do Next

Move from this guide to a concrete workflow and a matching tool page to apply the concepts.

References

Last updated: April 5, 2026

Sponsored