MCP

These notes are also an MCP server. Connect an assistant to it and it can look things up here while you work: how I'd plan a round of research, what I think makes a document easy to act on, whatever I've written down. It reads the notes; it can't change them.

https://connorforsyth.co/api/notes/mcp
text

It speaks streamable HTTP and needs no sign-in.

Why connect it

Every note is already a plain markdown file you can paste a link to. Connecting is for when you'd rather not do the pasting.

  • It finds the note itself. Once it's connected, an assistant looks here when the subject comes up, in any chat, without being handed a URL.
  • It searches before it reads. It gets the few words around each match and opens only the note it needs, instead of loading the whole index to guess from titles.
  • It follows the links. Reading a note also returns what it links to and what links back, which is how these notes are meant to be read.
  • It knows what it's reading. Every assistant is told up front that this is one designer's working view, not a reference manual.

Connect

Ask your agent. Paste this into the assistant you want it in and it will do the install itself:

Install the MCP server at https://connorforsyth.co/api/notes/mcp and name it "zettelkasten". It's a remote server over streamable HTTP and needs no sign-in or API key. Add it to this client's MCP configuration; in Claude Code that's: claude mcp add --transport http zettelkasten https://connorforsyth.co/api/notes/mcp. Then call its list_notes tool to check it works, and tell me what you found. If it needs a restart before the tools appear, say so.
text

Or one command, which finds the agents you have installed and adds it to each:

npx add-mcp https://connorforsyth.co/api/notes/mcp --name zettelkasten
bash

Or set it up by hand.

Claude Code

claude mcp add --transport http zettelkasten https://connorforsyth.co/api/notes/mcp
bash

Claude and ChatGPT. Add a custom connector in settings and paste the URL above.

Cursor, in .cursor/mcp.json:

{
  "mcpServers": {
    "zettelkasten": { "url": "https://connorforsyth.co/api/notes/mcp" }
  }
}
json

VS Code, in .vscode/mcp.json:

{
  "servers": {
    "zettelkasten": { "type": "http", "url": "https://connorforsyth.co/api/notes/mcp" }
  }
}
json

What it can do

  • list_notes lists every note by folder, each with a one-line summary.
  • search_notes searches the full text and returns the words around each match.
  • read_note returns one note as markdown, with the notes it links to and the ones that link back.

Confidential notes

A few notes sit behind the same access code as the protected case studies. If you have it, send it as a bearer token and they're included. That needs a client that lets you set a header:

claude mcp add --transport http zettelkasten https://connorforsyth.co/api/notes/mcp \
  --header "Authorization: Bearer YOUR-ACCESS-CODE"
bash

Without MCP

Every note is also plain markdown at its own address with .md on the end, and /notes/llms.txt lists them all.