MCP for beginners: how an AI assistant uses a tool, step by step

An AI assistant can explain sprint planning, but on its own it can't see your backlog or open a planning poker room. The Model Context Protocol, MCP, is the standard that lets it do both. This is a beginner's introduction: the problem it solves, the parts involved, and one real request followed from the prompt to a ready Estimay room.

The problem MCP solves

A language model knows what it learned in training and what you paste into the chat. Everything else, like your tracker, your docs and your meeting tools, is out of its reach. Before MCP, every assistant needed its own plug-in for every product. Ten assistants and ten products meant a hundred integrations, each built and maintained separately.

MCP replaces that with one shared plug. A product publishes one MCP server, and any assistant that speaks MCP can use it. It works the way USB-C does for hardware: the laptop doesn't need to know who made the charger, only that both ends follow the same standard.

The three parts: host, client, server

  • The host is the app you talk to: Claude, Claude Code, Cursor, VS Code or ChatGPT.
  • The client is the connector inside the host. It keeps one connection to each server you've added.
  • The server is the product's side. Estimay's runs at https://estimay.io/api/mcp. It's a remote server, so there's nothing to install.

They talk in JSON-RPC, a small format of numbered requests and answers, sent over HTTP. You never need to write any of it yourself, but seeing a few messages makes the whole thing much less mysterious, so we'll show some below.

What a server offers: tools, resources and prompts

  • Tools are actions the model can call. Each one has a name, a description written for the model, and a typed list of inputs. Estimay has 19, including create_room, add_stories, get_room and export_results. Some only read and others write, and you choose which kind the assistant gets.
  • Resources are read-only data, like files or records, that the host can attach to the conversation. Estimay offers none, because the assistant reads a room with get_room.
  • Prompts are ready-made requests that you pick, rather than the model. Estimay has 3: plan_sprint, refine_stories and record_outcome. In Claude Code they appear as commands like /mcp__estimay__plan_sprint.

One request, start to finish

Say you ask your assistant: "Create a planning poker room called Sprint 42 planning with PAY-142, Refund to the original card, and PAY-143, Show refund status in order history." Here is what happens next, in five steps.

1. The handshake

When you add the server, the client sends initialize. Both sides agree on a protocol version, and the server says what it offers: tools and prompts.

2. Discovery

The client asks for tools/list and gets back every tool with its description and a JSON Schema for its inputs. This is all the model knows about Estimay. Here is create_room, shortened:

{
  "name": "create_room",
  "description": "Creates a planning poker room with you as its host, optionally
    with its first stories … Returns the room and its invitation link.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "title": { "type": "string" },
      "stories": { "type": "array", "items": { "title": …, "ticket": … } },
      …
    }
  }
}

3. Sign-in

The first time a tool is used, Estimay answers that you need to sign in, and your browser opens a consent page. You allow the assistant to use Estimay read only, or read and write. Estimay has no accounts, so the assistant acts as the guest your browser already is, and a room it creates opens with you as its host. The assistant gets a token, never a password, and you can disconnect it at any time.

4. The call

The model compares your request with the tool descriptions, picks create_room and fills in the arguments. Most hosts show you the call before it runs:

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "create_room",
    "arguments": {
      "title": "Sprint 42 planning",
      "stories": [
        { "ticket": "PAY-142", "title": "Refund to the original card" },
        { "ticket": "PAY-143", "title": "Show refund status in order history" }
      ]
    }
  }
}

5. The answer

Estimay creates the room and answers with it, as you would see it in your browser:

{
  "code": "K7PQM",
  "url": "https://estimay.io/session/K7PQM",
  "title": "Sprint 42 planning",
  "mode": "live",
  "you": { "host": true, … },
  "stories": [
    { "ticket": "PAY-142", "title": "Refund to the original card", "status": "pending", "estimate": null },
    …
  ]
}

The model turns that into a plain reply: your room is ready, here's the link to post in the team channel. You described the outcome, and the model worked out the steps.

Three more requests to try

  • "Which of my rooms still has stories without an estimate?" calls list_rooms, a read-only tool.
  • "Add these two stories to today's room." calls list_rooms to find the room, then add_stories.
  • "Give me today's results as a table with the total." calls export_results, which returns a Markdown table or CSV.

It gets really useful when you connect two servers. With your tracker's MCP server added as well, "set up Thursday's room with the eight unestimated issues at the top of our backlog" is a single request: one call to the tracker to find the issues, then one create_room.

What MCP doesn't change

  • The assistant can't do more than you can. It acts as you, with your permissions. In Estimay, it never sees a card before the reveal, just like you.
  • The model can still get it wrong. Read each call before you approve it, and start with read-only access.
  • What a tool returns goes to the assistant's provider. Share only data your organisation allows.
  • The vote stays human. Let the assistant set up the room and record the outcome, but not pick a card or suggest a number first. The spread of the votes is the point.

Where to go next

Try it in a minute.  Add https://estimay.io/api/mcp to your assistant and ask it to set up your next planning room. Or create a free room yourself. No sign-up needed.

← All articles