Ulysses

Provides local MCP access to Ulysses via x-callback-url, enabling creation, reading, modification, and organization of sheets and groups.
  • typescript

2

GitHub Stars

typescript

Language

6 months ago

First Indexed

2 months ago

Catalog Refreshed

Documentation & install

Readme and setup notes from the catalogue, plus a client-ready config you can copy for your MCP host.

Installation

Add the following to your MCP client configuration file.

Configuration

View docs
{
  "mcpServers": {
    "sonofagl1tch-ulysses-mcp": {
      "command": "node",
      "args": [
        "/path/to/ulysses-mcp/build/index.js"
      ]
    }
  }
}

You can automate Ulysses on macOS using an MCP server that exposes a local API to create, read, organize, and modify your sheets. This server communicates with Ulysses through its x-callback-url API, enabling AI assistants and MCP-compatible clients to control your writing workflow directly from your preferred environment.

How to use

You connect an MCP client to the local server and start issuing tool commands to manage your Ulysses library. You can create new sheets and groups, insert text, attach notes and images, read sheet content (with authorization), and perform navigation and structural changes. Destructive actions require authorization tokens, which you obtain once from Ulysses and then reuse in subsequent requests. Start by authorizing when you need to read or modify content, then pass the resulting access token with each protected request.

Typical usage flow: authorize once, then perform create or update actions as needed. Use the server’s tools to manage your library programmatically, integrate with an AI assistant, and automate repetitive writing tasks without leaving your editor or IDE.

How to install

# Prerequisites
#  - macOS with Ulysses installed
#  - Node.js 18.0.0 or higher

# Install the MCP server package
npm install ulysses-mcp

# Build from source (optional if you pulled the repo directly)
git clone https://github.com/sonofagl1tch/ulysses-mcp.git
cd ulysses-mcp
npm install
npm run build

# Build the helper app (required for callbacks)
npm run build-helper
# Start the MCP server locally (depending on your setup, commonly you run the build output)
node /path/to/ulysses-mcp/build/index.js

Configuration and usage with MCP clients

You configure your MCP client to connect to the local server using the stdio transport. The project provides explicit examples for integrating with Claude Desktop and Cline (VS Code extension). Use the following configurations in your MCP client settings to point at the local server binary that handles callbacks and API requests.

{
  "mcpServers": {
    "ulysses": {
      "command": "node",
      "args": ["/path/to/ulysses-mcp/build/index.js"]
    }
  }
}

Usage with Claude Desktop configuration

If you use Claude Desktop, place the MCP server configuration in your Claude config path so Claude can launch the server as a local process.

{
  "mcpServers": {
    "ulysses": {
      "command": "node",
      "args": ["/path/to/ulysses-mcp/build/index.js"]
    }
  }
}

Usage with Cline (VS Code Extension) configuration

If you are using Cline, add the MCP server to your global settings so the extension can communicate with the local server.

{
  "mcpServers": {
    "ulysses": {
      "disabled": false,
      "autoApprove": [],
      "type": "stdio",
      "command": "node",
      "args": ["/path/to/ulysses-mcp/build/index.js"]
    }
  }
}

Using other MCP clients

If you use a different MCP client, refer to its documentation for adding a stdio transport MCP server and provide the same local command path to the built index file.

Available tools

ulysses_new_sheet

Create a new sheet with provided content and optional grouping.

ulysses_new_group

Create a new group (folder) to organize sheets.

ulysses_insert

Insert or append text to an existing sheet.

ulysses_attach_note

Attach a note to a sheet.

ulysses_attach_keywords

Attach keywords (tags) to a sheet.

ulysses_attach_image

Attach an image to a sheet (base64 encoded).

ulysses_open

Open a specific sheet or group in Ulysses.

ulysses_open_all

Open the All section in Ulysses library.

ulysses_open_recent

Open sheets from the Last 7 Days.

ulysses_open_favorites

Open sheets marked as Favorites.

ulysses_get_version

Retrieve Ulysses and API version information.

ulysses_authorize

Request library access authorization for reading and other privileged actions.

ulysses_read_sheet

Read contents of a sheet (requires authorization).

ulysses_get_item

Get information about a specific sheet or group (requires authorization).

ulysses_get_root_items

Retrieve the library structure (requires authorization).

ulysses_move

Move sheets or groups to a new location (requires authorization).

ulysses_copy

Copy sheets or groups (requires authorization).

ulysses_trash

Move items to trash (requires authorization).

ulysses_set_group_title

Rename a group.

ulysses_set_sheet_title

Change the title of a sheet.

ulysses_remove_keywords

Remove keywords from a sheet.

ulysses_update_note

Update an existing note on a sheet.

ulysses_remove_note

Remove a note from a sheet.

Built by
VeilStrat
AI signals for GTM teams
© 2026 VeilStrat. All rights reserved.All systems operational