MCP server for Thomas Frank's Ultimate Brain Notion system
Project description
MCP Server for Ultimate Brain
An MCP server for managing Thomas Frank's Ultimate Brain Notion system. Provides 26 workflow-oriented tools for Tasks, Projects, Notes, Tags, and Goals using the PARA methodology.
Setup
-
Create a Notion integration and share your Ultimate Brain databases with it.
-
Run the setup command for your client. It will auto-discover your data sources from Notion and write the config file.
Claude Code
# Project scope (writes .mcp.json in current directory)
uvx --from ultimate-brain-mcp ultimate-brain-setup --client claude-code --scope project
# User scope (writes ~/.claude.json)
uvx --from ultimate-brain-mcp ultimate-brain-setup --client claude-code --scope user
Claude Desktop
uvx --from ultimate-brain-mcp ultimate-brain-setup --client claude-desktop
You can also pass your Notion secret via environment variable to skip the prompt:
NOTION_INTEGRATION_SECRET=secret_... uvx --from ultimate-brain-mcp ultimate-brain-setup --client claude-code --scope project
Tools
Tasks (6)
search_tasks— Filter by name, status, project, priority, due date, My Day, labels, parent task, completion datecreate_task— Create with name, status, due, priority, project, labelsupdate_task— Patch any task propertiescomplete_task— Mark done with recurrence handlingget_my_day— My Day tasks sorted by priorityget_inbox_tasks— Unprocessed tasks needing triage
Projects (4)
search_projects— Filter by status, tagget_project_detail— Properties + task breakdown + recent notescreate_project— Create with name, status, deadline, tag, goalupdate_project— Patch project properties
Notes (4)
search_notes— Filter by type, project, tag, favorite, dateget_note_content— Properties + page body as plain textcreate_note— Create with type, project, tags, URLupdate_note— Patch note properties
Tags (3)
search_tags— Filter by PARA typecreate_tag— Create with name, type, parentupdate_tag— Patch tag properties
Goals (4)
search_goals— Filter by statusget_goal_detail— Properties + linked projectscreate_goal— Create with name, status, deadlineupdate_goal— Patch goal properties
Cross-Cutting (2)
daily_summary— My Day, overdue, inbox, active projects/goalsarchive_item— Archive any UB item
Generic (3)
query_database— Query any secondary databaseget_page— Fetch any page by IDupdate_page— Update any page properties
Remote Server (Docker)
Run the MCP server over HTTP using Docker Compose, as an alternative to the default stdio transport.
Quick start
-
Copy
.env.exampleto.envand fill in your Notion credentials (same as the stdio setup). -
Start the server:
docker compose up -d
The server will be available at http://localhost:8000/mcp using the streamable-http transport.
With SSO authentication
Protect the remote server with your existing SSO provider. When configured, users connecting to the MCP server URL are automatically redirected to your provider's login page in their browser — no manual token management required.
Add these to your .env or docker-compose.yml environment:
OAUTH_ISSUER_URL=https://your-provider.example.com # OIDC issuer (must serve /.well-known/openid-configuration)
OAUTH_CLIENT_ID=your-api-identifier # Expected audience/client_id claim
OAUTH_REQUIRED_SCOPES=read,write # Optional comma-separated required scopes
Works with any OIDC provider (Auth0, Authentik, Keycloak, etc.). The flow:
- User's MCP client connects to the server URL
- Server responds with the SSO provider's metadata
- Client opens the provider's login page in the user's browser
- User logs in via SSO
- Client is authenticated — no further action needed
Without Docker
pip install 'ultimate-brain-mcp[remote]'
MCP_TRANSPORT=streamable-http ultimate-brain-mcp
Configuration
| Variable | Default | Description |
|---|---|---|
MCP_TRANSPORT |
stdio |
Transport mode: stdio, streamable-http, or sse |
MCP_HOST |
0.0.0.0 |
Bind address for HTTP transports |
MCP_PORT |
8000 |
Port for HTTP transports |
OAUTH_ISSUER_URL |
— | OIDC provider URL (enables SSO login when set) |
OAUTH_CLIENT_ID |
— | Expected audience/client_id claim from the provider |
OAUTH_REQUIRED_SCOPES |
— | Comma-separated scopes users must have |
Development
uv run pytest tests/
uv run mcp dev src/ultimate_brain_mcp/server.py
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ultimate_brain_mcp-0.4.1.tar.gz.
File metadata
- Download URL: ultimate_brain_mcp-0.4.1.tar.gz
- Upload date:
- Size: 100.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cbcfd30ff534d848eed34ce9332fdf78db98c94edea7e1fa37031bea61a01139
|
|
| MD5 |
dcfdd5403ac2e9c9359d7a3afcc8f74d
|
|
| BLAKE2b-256 |
f38cf1bae0a957b53128e29660da654d2a925f55490b89617f9f9d24c29dc2ac
|
File details
Details for the file ultimate_brain_mcp-0.4.1-py3-none-any.whl.
File metadata
- Download URL: ultimate_brain_mcp-0.4.1-py3-none-any.whl
- Upload date:
- Size: 31.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
67faa5768006c87d6ffa523dedbdb92374bdd42a8fe132466f8fd7ec93ae0ecc
|
|
| MD5 |
9ce4f7c7bc9a1b5087297eadd524f1c1
|
|
| BLAKE2b-256 |
5247e6231b030c2d65b7a8fc84bf812d4733b267b9bb3c5d1bbc2e95ba7729e3
|