Lesson 01 What Is MCP and Why It Matters
Theme:

Lab 01 — Tour the filesystem MCP server

Lesson 01 · ~20 min · Claude Desktop or MCP Inspector

By the end of this lab you will be able to:

What you need

Step 1 — Install dependencies

From the repo root:

cd mcp-servers
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt

Sanity check — this should print a version, not "command not found":

mcp --version

Step 2 — Set up a sandbox

The filesystem MCP server is sandbox-scoped — it can only see paths you explicitly hand it. Give it a tiny directory with one file in it:

mkdir -p /tmp/mcp-demo
echo "Hello from MCP lesson 01" > /tmp/mcp-demo/hello.txt

This is the only directory the server will be allowed to touch for the rest of the lab.

Step 3 — Connect Claude Desktop to the filesystem server

Claude Desktop reads its MCP configuration from a JSON file on disk. Edit the file for your OS:

If the file doesn't exist yet, create it. Add (or merge into) the following:

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/tmp/mcp-demo"]
    }
  }
}

Save the file, then fully quit and restart Claude Desktop (a window reload is not enough — the server is spawned at app launch).

Once it's back up, open the tools panel — you should see filesystem listed with a handful of tools underneath it (list_directory, read_file, write_file, ...).

Step 4 — Use a filesystem tool from inside Claude Desktop

Ask Claude, in plain English:

List the files in /tmp/mcp-demo.

Watch the chat carefully. You should see, in order:

  1. A tool call block — Claude deciding to invoke list_directory with path="/tmp/mcp-demo".
  2. A tool result block — the server's response listing hello.txt.
  3. Claude's natural-language summary of what it found.

That round-trip — model → tool call → server → tool result → model — is the whole MCP protocol from the user's point of view.

Step 5 — Alternative: use the MCP Inspector

If you don't have Claude Desktop, or if you just want to see the raw protocol, run Inspector. It launches the server and gives you a web UI to talk to it:

npx @modelcontextprotocol/inspector \
  npx -y @modelcontextprotocol/server-filesystem /tmp/mcp-demo

Inspector prints a URL on stdout (typically http://localhost:6274). Open it. You'll see three panes:

Step 6 — Call list_directory through Inspector

In the tool list, pick list_directory. In the call form, set path to /tmp/mcp-demo and click Call.

Now look at both the rendered output above the form and the JSON-RPC transcript on the right. You should see a tools/call request go out and a response come back containing your hello.txt entry. That's the exact same exchange Claude Desktop was doing in Step 4 — just made visible.

Step 7 — What you should see at the end

You're done when you can produce, side-by-side:

If you have both, you've seen MCP from both sides — the polished client experience and the raw protocol underneath.

Troubleshooting

Self-check