first-instrument
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@first-instrumentWhat time is it now?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
your-first-instrument — the CAM MCP starter
A rig for your experiments, not a finished thing. Cloned in Session 3 of Computationally Assisted Metacognition (CIS 7000, Penn, Fall 2026).
The premise, in one breath: an AI model only knows what is in its context window — and an MCP server is how you hand it an instrument so it can reach what it lacks (a clock, a dataset, your notes, a museum's collection). Building one is not hard. That is the whole lesson. By the end of the hour yours will be running, connected to Claude, and answering questions the bare model cannot.
What's in the rig
server.py— a small, working MCP server (a sense of time, ~40 lines). Two tools work; the third is a stub with your name on it.docs/adr/— the choices live here, not in the code. Every decision this repo made for you is written down with its reasons, so you inherit understanding, not just files. Disagree with one? Write the next ADR.docs/TRACKS.md— three feasible directions, sized for one session..vscode/— the environment configures itself (extensions, project color).render.yaml— one-click deploy to Render's free tier, so your instrument gets a URL anyone's Claude can connect to.
Related MCP server: Date MCP Server
What you might need to install (once per machine)
macOS ships less than you'd think. In Terminal, in order (skip what you have):
# 1. Homebrew — the missing package manager for macOS (from brew.sh):
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# 2. uv — the Python project runner (installs Python itself if needed):
brew install uv
# 3. cloudflared — the tunnel that lets claude.ai reach your laptop:
brew install cloudflared
# 4. git — Apple installs it on first use; this just triggers that:
git --versionWindows: Do all of this inside WSL (see the course setup guide); the same
commands work there with apt-flavored Homebrew or the uv curl installer.
Run it (2 minutes)
uv run server.py # THAT'S IT — environment built, deps resolved, server up (port 8000)Why not pip install? Your machine will refuse, and it's right to — see
docs/adr/0004-virtual-environments-and-uv.md: every project gets its own room.
Then hand it to your local collaborator (the claude CLI reaches localhost; the browser claude.ai can't — it calls from the cloud, which is exactly why deployment exists):
claude mcp add --transport http first-instrument http://localhost:8000/mcpAsk it: "What time is it? How long have we been talking?" The model still has no clock; it learned to consult one. Yours.
To reach the browser claude.ai, a tunnel is REQUIRED — claude.ai calls from Anthropic's cloud and can never see your laptop directly:
brew install cloudflared # once
cloudflared tunnel --url http://localhost:8000 # prints your public URLAdd that URL (https://…trycloudflare.com/mcp) in claude.ai → Settings →
Connectors — both surfaces now hold your instrument. The tunnel dies with
your terminal; when you want a PERMANENT home, deploy to Render (ADR-0003).
Deploy it — a permanent home (Render, free)
The tunnel dies with your terminal. For an instrument that outlives your laptop:
render.com → Sign in with GitHub (the account holding your repo).
New + → Blueprint → select your repo → Apply. (
render.yamldoes the rest.)~2 minutes of build → copy your
https://….onrender.comURL.claude.ai → Settings → Connectors → edit
first-instrument→ swap URL to the Render one +/mcp.
Free-tier truth (ADR-0003): the instance naps when idle — first call after a nap takes ~30s. Fine for an instrument; now you know why.
License
MPL-2.0 with a Template Output Grant — the template stays open with attribution; what YOU build from it may be Apache-2.0 (open, attributed) or fully closed. See LICENSE + TEMPLATE-GRANT.md.
This server cannot be deployed
Maintenance
Related MCP Connectors
Wall-clock awareness for LLM agents. Two tools: elapsed-time-between-turns + day rollover detection.
A real clock for AI agents: current time, timezone conversion, and DST facts from the IANA tzdb.
Current time, timezone conversion & date math for AI agents. On Cloudflare Workers.
Related MCP Servers
- AlicenseBqualityDmaintenanceGives large language models time awareness capabilities through various time-related functions including current time retrieval, timezone conversion, and relative time calculations.61,214 npmMIT
- AlicenseAqualityNot gradedmaintenanceProvides AI assistants with real-time date, time, and timezone information, enabling them to access current temporal data, format dates, calculate day of week, and work with different timezones.47 npm-
- AlicenseNot gradedqualityDmaintenanceProvides a time_now tool to retrieve the current time, enabling time-sensitive queries in AI agents.MIT
- AlicenseAqualityDmaintenanceProvides accurate system time to LLM applications with multi-timezone support via a simple tool call.1MIT