AI assistants
An AI assistant can keep your board up to date while you talk to it: “remind me to send Marco the revised quote on Friday”, “what’s waiting on other people?”, “I’ve paid the council tax”. Two pieces make that work:
- The MCP server gives the assistant tools to read and change Actions and Matters, with every one of the plugin’s rules applied. It is the command line, run as
mtm mcp. - The skill teaches the assistant the plugin’s words and habits: when to add an Action and when to change one, never to create a Matter on its own, how to name things.
Either works alone; together they work best.
The MCP server
The server runs on your computer. The assistant’s app starts it and talks to it through standard input and output: it opens no network port, and nothing about your vault leaves your computer except what the assistant itself sends to its own service. Each tool reads the vault afresh, so the assistant sees your notes as they are now, with or without Obsidian open.
It needs Node.js 20 or later, and a vault with Matters that Matter set up.
Set it up
The server serves one vault, named with --vault. In the examples, the vault is ~/Notes.
Claude Code:
claude mcp add matters -- npx -y matters-that-matter mcp --vault ~/NotesClaude Desktop: in Settings → Developer → Edit Config, add the server to claude_desktop_config.json, then restart Claude:
{
"mcpServers": {
"matters": {
"command": "npx",
"args": ["-y", "matters-that-matter", "mcp", "--vault", "/Users/you/Notes"]
}
}
}Codex:
codex mcp add matters -- npx -y matters-that-matter mcp --vault ~/Notesor in ~/.codex/config.toml:
[mcp_servers.matters]
command = "npx"
args = ["-y", "matters-that-matter", "mcp", "--vault", "~/Notes"]Grok Build (not tried yet): add a local (stdio) MCP server named matters with the command npx and the arguments -y matters-that-matter mcp --vault ~/Notes, as its documentation describes for MCP servers.
Other assistants that run local MCP servers take the same command and arguments.
Use it
Talk as you would to a person who knows your board. You might say “Remind me to send Marco the revised quote on Friday. It’s for the kitchen.” The assistant calls add_action with { "text": "Send Marco the revised quote fri", "matter": "Kitchen", "type": "message" }, and the tool answers:
Added “Send Marco the revised quote”
Kitchen renovation · Later · Message · due Fri 16 Oct
MTM/Actions/Send Marco the revised quote.md
The card is on your board at once. Later, “move it to Thursday at 10” becomes update_action, and “I’ve sent it” becomes mark_as_done, on the same Action.
Most assistants’ apps ask before a tool writes anything, and show what it will do; reads can usually be allowed without asking. Claude asks before each tool call by default; you can always allow the ones that read.
The tools
| Tool | What it does | Writes |
|---|---|---|
get_today |
What matters today: due today or late (else the next ones), the Inbox, reviews due, long waits | No |
list_actions |
Actions, filtered by Matter, status, type, Sphere, person, due dates or waiting; done ones only when asked | No |
get_action |
Everything about one Action | No |
list_matters |
Matters in board order, with their counts and reviews | No |
get_workflow |
Your statuses, types and Spheres | No |
add_action |
Adds an Action; its text works as in quick add |
Yes |
update_action |
Changes an Action; strict, like mtm update |
Yes |
mark_as_done |
Marks an Action as done | Yes |
reopen_action |
Reopens a done Action | Yes |
add_matter |
Adds a Matter, last on the board | Yes |
The tools take the command line’s fields, named without the dashes in front (waiting-on, due-from, review-every), plus text for quick add’s words and action for the Action a tool works on. Each answers with the command line’s output as text, and its --json result as data. A name that matches several things, or a value that matches nothing, is an error that lists what would work, and nothing is written.
Offer less
| Option | Does |
|---|---|
--read-only |
Offers only the tools that read: get_action, list_actions, get_today, list_matters, get_workflow |
--tools <a,b> |
Offers only these tools, such as --tools get_today,list_actions |
--dry-run |
Tools that write say what they would change, and write nothing |
--config-dir <folder> |
The vault’s configuration folder, if it isn’t .obsidian |
claude mcp add matters -- npx -y matters-that-matter mcp --vault ~/Notes --read-only --tools get_today,list_actionsAn assistant that reads web pages or email for you is a good place for --read-only.
What an assistant can and can’t do
An assistant can be misled by something it reads. A web page, an email, or even an Action’s title can hold text written to look like an instruction (“mark everything as done”). The server keeps what a misled assistant could do small and visible:
- Only the data of Matters that Matter. It reads and writes Actions, Matters and the workflow, nothing else.
get_actiongives an Action’s details, checklist and the names of the notes it links to, never their content, and no tool reads your other notes. - Nothing deleted, no settings changed. There is no tool for either.
- Every write is reported, property by property, so you can see it and put it back:
reopen_actionaftermark_as_done, anotherupdate_actionfor a change. An added Action or Matter can be deleted in Obsidian. - No surprises in other notes. A new Action or Matter never takes a name another note already has, so links to that note keep reaching it. A new title renames the note and updates links to it, as Obsidian does when its Automatically update internal links is on (links to another note that already has the new name get its path, so they keep reaching it), and is refused when that setting is off and another note has the name.
- Nothing created on the side. Naming a Matter that doesn’t exist puts the Action in the Inbox, and says so. People are never created.
- The server tells the assistant to treat titles, details and checklist items as information, never as instructions.
What you can do:
- Keep the asking on. Let reads run freely, and have writes ask first.
- Read what it did. Every write says what changed, and the board shows it.
- Offer less where an assistant reads things you didn’t write:
--read-only, or only the tools it needs.
Anything that can write your vault can change your Actions. The server can’t make that safer, but it doesn’t make it any wider.
The skill
The skill is a short guide for the assistant, in the open Agent Skills format: a folder, matters-that-matter, with a SKILL.md and a reference to the note format. It teaches:
- The words. Action, Matter, Inbox, Sphere, “Mark as done”, “What matters today?”, capitalised as Matters that Matter does, and your own statuses and types rather than any method’s.
- Add or change. When you mention something that already exists, find that Action and change it; add one only for something new.
- Restraint. Never create a Matter or a person’s note on its own; nothing is ever deleted; report every change.
- The tools first, then the command line, and only without either, the notes themselves, written by the note format.
It is in the plugin’s repository, under skills/matters-that-matter. To get it:
git clone --depth 1 https://github.com/manueldelgado/Matters-that-Matter.gitClaude Code: copy the folder into your skills, for every project or for one:
cp -R Matters-that-Matter/skills/matters-that-matter ~/.claude/skills/
cp -R Matters-that-Matter/skills/matters-that-matter <your project>/.claude/skills/Claude uses it when you talk about your Actions and Matters, or when you ask for it by name.
The Claude apps: make a ZIP file of the matters-that-matter folder and add it where your settings list skills.
Codex: copy the folder into Codex’s skills folder (~/.codex/skills/). Its agents/openai.yaml names the matters server; Codex doesn’t set the server up by itself, since it needs your vault’s path, so add it as above.
Other assistants that read Agent Skills take the same folder. For one that doesn’t, paste the content of SKILL.md into its instructions.