mcpField
R
Rook

Rook

Local
github.com/maryamtbProductivity65Updated 3w ago

About Rook

Rook MCP is an MCP server that saves text from AI chats into the inbox of Rook, a macOS notes app for code. Each AI client gets its own inbox, and Rook must be installed from userook.app before use. It is intended for macOS users who work with several MCP clients.

Key features

  1. 01Saves text through the append_to_inbox tool
  2. 02Writes content with an optional title
  3. 03Built-in rate limit and pause setting
  4. 04Writes succeed only with the binary bundled in Rook
  5. 05Standardized error codes for failed calls

Use cases

  1. 01Saving code snippets or notes from AI chats into Rook
  2. 02Quickly capturing ideas from Claude Code or Cursor
  3. 03Keeping separate inboxes for different AI clients

MCP support

The project is a stdio-based MCP server that exposes a single tool, append_to_inbox, which writes submitted content to a shared container that Rook reads.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

No install method listed yet

We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.

Repository

Tools

No tool list yet

Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.

Details

From the project README

rook-mcp

A Model Context Protocol server that saves text into the Rook notes app on macOS. Speaks stdio JSON-RPC 2.0, exposes one tool: append_to_inbox.

When an MCP client (Claude Desktop, Cursor, Claude Code, Codex, Gemini CLI, etc.) calls append_to_inbox, this server writes a JSON line to a shared macOS app-group container. Rook drains that container and turns each line into a note in your inbox.

Install

rook-mcp is included inside Rook.app at Contents/Helpers/rook-mcp.app. Install Rook from userook.app, then point your MCP client at the bundled binary:

/Applications/Rook.app/Contents/Helpers/rook-mcp.app/Contents/MacOS/rook-mcp
Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "rook": {
      "command": "/Applications/Rook.app/Contents/Helpers/rook-mcp.app/Contents/MacOS/rook-mcp"
    }
  }
}
Cursor

~/.cursor/mcp.json:

{
  "mcpServers": {
    "rook": {
      "command": "/Applications/Rook.app/Contents/Helpers/rook-mcp.app/Contents/MacOS/rook-mcp"
    }
  }
}
Claude Code

Install with user scope so the server is available from any directory:

claude mcp add rook -s user /Applications/Rook.app/Contents/Helpers/rook-mcp.app/Contents/MacOS/rook-mcp
Codex
codex mcp add rook -- /Applications/Rook.app/Contents/Helpers/rook-mcp.app/Contents/MacOS/rook-mcp

Or add it manually to ~/.codex/config.toml:

[mcp_servers.rook]
command = "/Applications/Rook.app/Contents/Helpers/rook-mcp.app/Contents/MacOS/rook-mcp"
Gemini CLI

~/.gemini/settings.json:

{
  "mcpServers": {
    "rook": {
      "command": "/Applications/Rook.app/Contents/Helpers/rook-mcp.app/Contents/MacOS/rook-mcp"
    }
  }
}

Gemini CLI prompts for trust on first use of the server.

Tools

append_to_inbox

Saves text to the user's Rook notes app. The model should call this when the user asks to save, capture, remember, jot down, note, log, add, or stash something in Rook.

Input:

FieldTypeRequiredNotes
contentstringyesThe text to save. Up to 100,000 characters.
titlestringnoShort heading shown above the content. Up to 200 characters.

Response: a confirmation like Saved to Rook inbox 2026-05-12 under "Test".

Errors:

CodeSlugMeaning
-32600invalid requestMissing or wrong jsonrpc version, or method called before initialize
-32001entitlement_unavailableApp-group container not reachable (unsigned build)
-32002rate_limitedMore than 100 writes in the last 60 seconds
-32003pausedMCP is paused in Rook (Settings → MCP → Resume)
-32004input_invalidContent or title failed validation, or params had wrong shape
-32005store_write_failedFile write to the inbox failed

Building

Requires Swift 5.9+ and macOS 14+:

swift build -c release

The resulting binary returns entitlement_unavailable on every tool call because it lacks Rook's team-ID signature and app-group entitlement. Only the binary inside Rook.app/Contents/Helpers/ can deliver content to Rook.

Security

See SECURITY.md for the trust boundary, sanitizer, rate limit, pause flag, and vulnerability reporting policy.

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.