De-slop: remove every em-dash + banned words across all modules + capstone (#94)
Sync course wiki / sync-wiki (push) Successful in 4s

Co-authored-by: claude <claude@jpaul.io>
Co-committed-by: claude <claude@jpaul.io>
This commit was merged in pull request #94.
This commit is contained in:
2026-06-22 23:21:22 -04:00
committed by Claude (agent)
parent 513d7e7ac8
commit c098933f25
99 changed files with 1324 additions and 1315 deletions
@@ -1,22 +1,22 @@
"""A tiny MCP server that gives an AI client hands on the tasks-app.
It exposes the tasks-app over the Model Context Protocol (MCP) so an agentic tool can read and
change your real task list directly no copy-paste, no pasting tasks.json into a chat window.
change your real task list directly, with no copy-paste and no pasting tasks.json into a chat window.
The whole server is the decorated functions below. FastMCP (from the official Python SDK) turns
each `@mcp.tool()` function into a tool the AI client can discover and call. That's it a tool is
each `@mcp.tool()` function into a tool the AI client can discover and call. That's it: a tool is
a normal Python function plus a docstring the client reads to know what it does.
Setup (once):
pip install "mcp[cli]"
Drop this file into your tasks-app folder, next to tasks.py and cli.py (it reuses them, and shares
the same tasks.json so a task the AI adds through this server shows up in `python cli.py list`).
the same tasks.json, so a task the AI adds through this server shows up in `python cli.py list`).
Sanity-check that it starts (it will sit waiting for a client to talk to it; Ctrl-C to stop):
python tasks_mcp_server.py
You don't normally run it by hand, though. Your agentic tool launches it for you see the lab.
You don't normally run it by hand, though. Your agentic tool launches it for you; see the lab.
"""
import json
@@ -60,6 +60,6 @@ def add_task(title: str) -> str:
if __name__ == "__main__":
# stdio transport by default: the client launches this process and talks to it over
# stdin/stdout. That's why the server "just sits there" when you run it by hand it's
# stdin/stdout. That's why the server "just sits there" when you run it by hand: it's
# waiting for a client on the other end of the pipe.
mcp.run()