Writing 2,000 words in 90 minutes with Obsidian + MCP + Claude.

I recently connected Claude Desktop to an Obsidian vault via an MCP server. It's been a big unlock for a bunch of different use cases

On my first test of this setup I wrote 2,000 words — my words, not AI’s — for an email interview in about 90 minutes.

This setup feels like a big unlock for a lot of different use cases, and it alleviates a lot of the limitations and frustrations of interacting with LLMs through a chatbox.

If you prefer, you can watch the video version of this post here:

The Setup

The desktop version of Claude can act as an MCP client, which means that it can interact with MCP servers. The web version of Claude does not support MCP servers. (yet?)

Model Context Protocol (MCP) is an open protocol developed by Anthropic to bring context to your models. This context often takes the form of "tools" – programmatic functions that your model can decide to invoke (a la function calling).

We're most often going to use MCP in an agent. Some tools allow the agent to gather information (eg, weather) to inform a response. Some tools allow the agent to take action (eg, update a record) on your behalf. MCP supplies the tools, your agent decides how to use them.

MCP launched with a handful of reference severs, and the community has since launched hundreds more. The most conceptually straightforward is the File System MCP server which offers tools to provide read / write access to a specific directory on your local filesystem.

Obsidian is a popular note-taking app. It’s a text-editor optimized for writing markdown that sits on top of a "vault," which is mostly just a directory of markdown files.

And so, if you give Claude Desktop access to the file system via MCP, it can now read and edit your Obsidian notes.

First use-case: really fast writing

I recently gave a talk on AI at the Business of Software conference and afterwards my friend Dave Collins asked if I would do an interview over email for his blog and newsletter. I agreed and he sent me a nine questions related to my talk to answer via email at my leisure.

A list of questions like this without a deadline is the sort of thing that I would naturally procrastinate. But I had just gotten Claude + MCP + Obsidian set up, so I asked myself, "what would it look like to bang this out right now?"

Step 1: Dictate responses to Claude

I copied Dave's questions to a new Obsidian note, and asked Claude if it could see it.

It could!

As a lifelong developer, I still find this kind of incredible.

I didn't provide it with a path. I didn't have to check the filename to see if I used spaces, underscores, dashes. I didn't fret over case sensitivity. I just said, "Hey Claude, find the doc with Dave's questions," and Claude fuzzy grepped its way through nested directories and said, "Yep. Got it.”

Then I told Claude to, "Ask me each question, one at a time."

Now it was like I was being interviewed by Claude. So much less overwhelming than facing all the questions at once.

Instead of typing my replies, I used SuperWhisper to dictate my responses. Here the constraints of the chat box felt like a feature not a bug. It let me ramble without getting caught in the common trap of editing while I write.

After each wandering reply, I asked Claude to update the original document inline with my response, which it did pretty much flawlessly.

Step 2: Claude Edit

After I answered all the questions, I asked Claude to do an editing pass.

I write a lot, have been using LLMs for 2+ years, and I still have not figured out how to get these things to write in a tone or quality that I would even try to pass off as my own. In my experience, LLMs are useful in the writing process, but not for the writing itself.

I also find that if I'm not explicit, Claude will get a bit aggressive when editing my work, and its voice seeps in.

So I said to Claude, "Please edit these answers for brevity and succinctness. I'm likely to repeat myself when I speak, make sure I'm only expressing an idea once per response. But please keep everything as close to my words as possible."

I also asked it to put its edits into a new document. I was afraid that if something went wrong I would lose all my original responses. (As a tangent, Git + Obsidian seems to be a powerful combo to ease anxiety of giving an erratic LLM read/write access to all your notes.)

Claude successfully created a new note in the same directory of the original. This also felt like a big unlock.

Until now, my chats with Claude/ChatGPT have happened in a single pane via the chat UX, which has a constrained, ephemeral quality to it. Every new chat feels like starting over, and moving between chat and a workspace feels clunky and unidirectional.

Now Claude can selectively read data from an archive of text files, and create new places to store its output. I can then edit that output, and it can instantly read it back in.

Step 3: Edit the Ol' Fashioned Way

Claude did a pretty good job cleaning up my responses: it turned my dictated ramblings into coherent prose, without editorializing. I went into Obsidian and, for the first time, took the keys and did a good old-fashioned editing pass.

This editing process was so much faster after having Claude catch the obvious stuff, and the whole process went so much faster than if I had started from a blank file.

In the end I wrote about 2,000 words in 90 minutes and sent my reply off to Dave before lunch, about four hours after he initially sent the questions. Crucially, these were still my words. This was not AI generated content – but it was AI assisted.

It felt great to knock out this project and I can safely say that had it not been for this Claude + MCP + Obsidian setup, it would have been days before I got around to sending Dave a response, if at all.

For transparency's sake, here's the full interview so you can judge the quality of writing yourself.


Obsidian is tailored to write and interlink notes, so it feels super smooth for “programming” and LLM in plain English. But everything I’m describing here could be done with any ol’ text editor. Again, we’re just talking about a directory of markdown files.