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/mcpIt 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.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 zettelkastenOr set it up by hand.
Claude Code
claude mcp add --transport http zettelkasten https://connorforsyth.co/api/notes/mcpClaude 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" }
}
}VS Code, in .vscode/mcp.json:
{
"servers": {
"zettelkasten": { "type": "http", "url": "https://connorforsyth.co/api/notes/mcp" }
}
}What it can do
list_noteslists every note by folder, each with a one-line summary.search_notessearches the full text and returns the words around each match.read_notereturns 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"Without MCP
Every note is also plain markdown at its own address with .md on the end, and /notes/llms.txt lists them all.