ultimate-brain-mcp 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ultimate_brain_mcp-0.1.0/.env.example +19 -0
- ultimate_brain_mcp-0.1.0/.github/workflows/publish.yml +15 -0
- ultimate_brain_mcp-0.1.0/.gitignore +13 -0
- ultimate_brain_mcp-0.1.0/LICENSE +21 -0
- ultimate_brain_mcp-0.1.0/PKG-INFO +124 -0
- ultimate_brain_mcp-0.1.0/README.md +104 -0
- ultimate_brain_mcp-0.1.0/ai_docs/Custom_MCP_Servers.md +922 -0
- ultimate_brain_mcp-0.1.0/pyproject.toml +36 -0
- ultimate_brain_mcp-0.1.0/setup_dev.py +160 -0
- ultimate_brain_mcp-0.1.0/src/ultimate_brain_mcp/__init__.py +23 -0
- ultimate_brain_mcp-0.1.0/src/ultimate_brain_mcp/config.py +97 -0
- ultimate_brain_mcp-0.1.0/src/ultimate_brain_mcp/formatters.py +340 -0
- ultimate_brain_mcp-0.1.0/src/ultimate_brain_mcp/notion_client.py +175 -0
- ultimate_brain_mcp-0.1.0/src/ultimate_brain_mcp/server.py +1245 -0
- ultimate_brain_mcp-0.1.0/tests/__init__.py +0 -0
- ultimate_brain_mcp-0.1.0/tests/conftest.py +127 -0
- ultimate_brain_mcp-0.1.0/tests/test_formatters.py +101 -0
- ultimate_brain_mcp-0.1.0/tests/test_tools.py +171 -0
- ultimate_brain_mcp-0.1.0/uv.lock +837 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Required — Notion integration secret
|
|
2
|
+
NOTION_INTEGRATION_SECRET=secret_xxx
|
|
3
|
+
|
|
4
|
+
# Required — Primary database data source IDs (run setup_dev.py to auto-discover)
|
|
5
|
+
UB_TASKS_DS_ID=
|
|
6
|
+
UB_PROJECTS_DS_ID=
|
|
7
|
+
UB_NOTES_DS_ID=
|
|
8
|
+
UB_TAGS_DS_ID=
|
|
9
|
+
UB_GOALS_DS_ID=
|
|
10
|
+
|
|
11
|
+
# Optional — Secondary database data source IDs
|
|
12
|
+
UB_WORK_SESSIONS_DS_ID=
|
|
13
|
+
UB_MILESTONES_DS_ID=
|
|
14
|
+
UB_PEOPLE_DS_ID=
|
|
15
|
+
UB_BOOKS_DS_ID=
|
|
16
|
+
UB_READING_LOG_DS_ID=
|
|
17
|
+
UB_GENRES_DS_ID=
|
|
18
|
+
UB_RECIPES_DS_ID=
|
|
19
|
+
UB_MEAL_PLANNER_DS_ID=
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
name: Publish to PyPI
|
|
2
|
+
on:
|
|
3
|
+
push:
|
|
4
|
+
tags: ["v*"]
|
|
5
|
+
jobs:
|
|
6
|
+
publish:
|
|
7
|
+
runs-on: ubuntu-latest
|
|
8
|
+
environment: pypi
|
|
9
|
+
permissions:
|
|
10
|
+
id-token: write
|
|
11
|
+
steps:
|
|
12
|
+
- uses: actions/checkout@v4
|
|
13
|
+
- uses: astral-sh/setup-uv@v4
|
|
14
|
+
- run: uv build
|
|
15
|
+
- run: uv publish
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Bobby Hyam
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: ultimate-brain-mcp
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: MCP server for Thomas Frank's Ultimate Brain Notion system
|
|
5
|
+
License-Expression: MIT
|
|
6
|
+
License-File: LICENSE
|
|
7
|
+
Keywords: mcp,notion,para,productivity,ultimate-brain
|
|
8
|
+
Classifier: Development Status :: 4 - Beta
|
|
9
|
+
Classifier: Intended Audience :: Developers
|
|
10
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
11
|
+
Classifier: Programming Language :: Python :: 3
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
15
|
+
Requires-Python: >=3.11
|
|
16
|
+
Requires-Dist: httpx>=0.28
|
|
17
|
+
Requires-Dist: mcp[cli]<2,>=1.26
|
|
18
|
+
Requires-Dist: pydantic>=2.12
|
|
19
|
+
Description-Content-Type: text/markdown
|
|
20
|
+
|
|
21
|
+
# MCP Server for Ultimate Brain
|
|
22
|
+
|
|
23
|
+
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.
|
|
24
|
+
|
|
25
|
+
## Setup
|
|
26
|
+
|
|
27
|
+
1. Create a [Notion integration](https://www.notion.so/my-integrations) and share your Ultimate Brain databases with it.
|
|
28
|
+
|
|
29
|
+
2. Auto-discover data source IDs:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
uv run python setup_dev.py
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
3. Run the server:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
uv run ultimate-brain-mcp
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Claude Code Integration
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
claude mcp add ultimate-brain \
|
|
45
|
+
-e NOTION_INTEGRATION_SECRET=secret_... \
|
|
46
|
+
-e UB_TASKS_DS_ID=... \
|
|
47
|
+
-e UB_PROJECTS_DS_ID=... \
|
|
48
|
+
-e UB_NOTES_DS_ID=... \
|
|
49
|
+
-e UB_TAGS_DS_ID=... \
|
|
50
|
+
-e UB_GOALS_DS_ID=... \
|
|
51
|
+
-- uvx ultimate-brain-mcp
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Claude Desktop
|
|
55
|
+
|
|
56
|
+
Add to `claude_desktop_config.json`:
|
|
57
|
+
|
|
58
|
+
```json
|
|
59
|
+
{
|
|
60
|
+
"mcpServers": {
|
|
61
|
+
"ultimate-brain": {
|
|
62
|
+
"command": "uvx",
|
|
63
|
+
"args": ["ultimate-brain-mcp"],
|
|
64
|
+
"env": {
|
|
65
|
+
"NOTION_INTEGRATION_SECRET": "secret_...",
|
|
66
|
+
"UB_TASKS_DS_ID": "...",
|
|
67
|
+
"UB_PROJECTS_DS_ID": "...",
|
|
68
|
+
"UB_NOTES_DS_ID": "...",
|
|
69
|
+
"UB_TAGS_DS_ID": "...",
|
|
70
|
+
"UB_GOALS_DS_ID": "..."
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## Tools
|
|
78
|
+
|
|
79
|
+
### Tasks (6)
|
|
80
|
+
- `search_tasks` — Filter by status, project, priority, due date, My Day
|
|
81
|
+
- `create_task` — Create with name, status, due, priority, project, labels
|
|
82
|
+
- `update_task` — Patch any task properties
|
|
83
|
+
- `complete_task` — Mark done with recurrence handling
|
|
84
|
+
- `get_my_day` — My Day tasks sorted by priority
|
|
85
|
+
- `get_inbox_tasks` — Unprocessed tasks needing triage
|
|
86
|
+
|
|
87
|
+
### Projects (4)
|
|
88
|
+
- `search_projects` — Filter by status, tag
|
|
89
|
+
- `get_project_detail` — Properties + task breakdown + recent notes
|
|
90
|
+
- `create_project` — Create with name, status, deadline, tag, goal
|
|
91
|
+
- `update_project` — Patch project properties
|
|
92
|
+
|
|
93
|
+
### Notes (4)
|
|
94
|
+
- `search_notes` — Filter by type, project, tag, favorite, date
|
|
95
|
+
- `get_note_content` — Properties + page body as plain text
|
|
96
|
+
- `create_note` — Create with type, project, tags, URL
|
|
97
|
+
- `update_note` — Patch note properties
|
|
98
|
+
|
|
99
|
+
### Tags (3)
|
|
100
|
+
- `search_tags` — Filter by PARA type
|
|
101
|
+
- `create_tag` — Create with name, type, parent
|
|
102
|
+
- `update_tag` — Patch tag properties
|
|
103
|
+
|
|
104
|
+
### Goals (4)
|
|
105
|
+
- `search_goals` — Filter by status
|
|
106
|
+
- `get_goal_detail` — Properties + linked projects
|
|
107
|
+
- `create_goal` — Create with name, status, deadline
|
|
108
|
+
- `update_goal` — Patch goal properties
|
|
109
|
+
|
|
110
|
+
### Cross-Cutting (2)
|
|
111
|
+
- `daily_summary` — My Day, overdue, inbox, active projects/goals
|
|
112
|
+
- `archive_item` — Archive any UB item
|
|
113
|
+
|
|
114
|
+
### Generic (3)
|
|
115
|
+
- `query_database` — Query any secondary database
|
|
116
|
+
- `get_page` — Fetch any page by ID
|
|
117
|
+
- `update_page` — Update any page properties
|
|
118
|
+
|
|
119
|
+
## Development
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
uv run pytest tests/
|
|
123
|
+
uv run mcp dev src/ultimate_brain_mcp/server.py
|
|
124
|
+
```
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# MCP Server for Ultimate Brain
|
|
2
|
+
|
|
3
|
+
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.
|
|
4
|
+
|
|
5
|
+
## Setup
|
|
6
|
+
|
|
7
|
+
1. Create a [Notion integration](https://www.notion.so/my-integrations) and share your Ultimate Brain databases with it.
|
|
8
|
+
|
|
9
|
+
2. Auto-discover data source IDs:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
uv run python setup_dev.py
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
3. Run the server:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
uv run ultimate-brain-mcp
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Claude Code Integration
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
claude mcp add ultimate-brain \
|
|
25
|
+
-e NOTION_INTEGRATION_SECRET=secret_... \
|
|
26
|
+
-e UB_TASKS_DS_ID=... \
|
|
27
|
+
-e UB_PROJECTS_DS_ID=... \
|
|
28
|
+
-e UB_NOTES_DS_ID=... \
|
|
29
|
+
-e UB_TAGS_DS_ID=... \
|
|
30
|
+
-e UB_GOALS_DS_ID=... \
|
|
31
|
+
-- uvx ultimate-brain-mcp
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Claude Desktop
|
|
35
|
+
|
|
36
|
+
Add to `claude_desktop_config.json`:
|
|
37
|
+
|
|
38
|
+
```json
|
|
39
|
+
{
|
|
40
|
+
"mcpServers": {
|
|
41
|
+
"ultimate-brain": {
|
|
42
|
+
"command": "uvx",
|
|
43
|
+
"args": ["ultimate-brain-mcp"],
|
|
44
|
+
"env": {
|
|
45
|
+
"NOTION_INTEGRATION_SECRET": "secret_...",
|
|
46
|
+
"UB_TASKS_DS_ID": "...",
|
|
47
|
+
"UB_PROJECTS_DS_ID": "...",
|
|
48
|
+
"UB_NOTES_DS_ID": "...",
|
|
49
|
+
"UB_TAGS_DS_ID": "...",
|
|
50
|
+
"UB_GOALS_DS_ID": "..."
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Tools
|
|
58
|
+
|
|
59
|
+
### Tasks (6)
|
|
60
|
+
- `search_tasks` — Filter by status, project, priority, due date, My Day
|
|
61
|
+
- `create_task` — Create with name, status, due, priority, project, labels
|
|
62
|
+
- `update_task` — Patch any task properties
|
|
63
|
+
- `complete_task` — Mark done with recurrence handling
|
|
64
|
+
- `get_my_day` — My Day tasks sorted by priority
|
|
65
|
+
- `get_inbox_tasks` — Unprocessed tasks needing triage
|
|
66
|
+
|
|
67
|
+
### Projects (4)
|
|
68
|
+
- `search_projects` — Filter by status, tag
|
|
69
|
+
- `get_project_detail` — Properties + task breakdown + recent notes
|
|
70
|
+
- `create_project` — Create with name, status, deadline, tag, goal
|
|
71
|
+
- `update_project` — Patch project properties
|
|
72
|
+
|
|
73
|
+
### Notes (4)
|
|
74
|
+
- `search_notes` — Filter by type, project, tag, favorite, date
|
|
75
|
+
- `get_note_content` — Properties + page body as plain text
|
|
76
|
+
- `create_note` — Create with type, project, tags, URL
|
|
77
|
+
- `update_note` — Patch note properties
|
|
78
|
+
|
|
79
|
+
### Tags (3)
|
|
80
|
+
- `search_tags` — Filter by PARA type
|
|
81
|
+
- `create_tag` — Create with name, type, parent
|
|
82
|
+
- `update_tag` — Patch tag properties
|
|
83
|
+
|
|
84
|
+
### Goals (4)
|
|
85
|
+
- `search_goals` — Filter by status
|
|
86
|
+
- `get_goal_detail` — Properties + linked projects
|
|
87
|
+
- `create_goal` — Create with name, status, deadline
|
|
88
|
+
- `update_goal` — Patch goal properties
|
|
89
|
+
|
|
90
|
+
### Cross-Cutting (2)
|
|
91
|
+
- `daily_summary` — My Day, overdue, inbox, active projects/goals
|
|
92
|
+
- `archive_item` — Archive any UB item
|
|
93
|
+
|
|
94
|
+
### Generic (3)
|
|
95
|
+
- `query_database` — Query any secondary database
|
|
96
|
+
- `get_page` — Fetch any page by ID
|
|
97
|
+
- `update_page` — Update any page properties
|
|
98
|
+
|
|
99
|
+
## Development
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
uv run pytest tests/
|
|
103
|
+
uv run mcp dev src/ultimate_brain_mcp/server.py
|
|
104
|
+
```
|