You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit c8a2825
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: README.md
+48-7Lines changed: 48 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,13 +1,13 @@
1
1
# Deepnote Codex Plugin
2
2
3
-
Use Deepnote from Codex to search workspaces, inspect notebooks, list integrations, start notebook runs, and summarize run status and outputs.
3
+
Use Deepnote from Codex to identify the current workspace, search resources, inspect notebooks, list projects and integrations, map integration usage, read Deepnote docs, start notebook runs, and summarize run status and outputs.
4
4
5
5
## What Is Included
6
6
7
7
- Codex marketplace manifest in `.agents/plugins/marketplace.json`
8
8
- Deepnote plugin manifest in `plugins/deepnote/.codex-plugin/plugin.json`
9
9
- Hosted Deepnote MCP configuration in `plugins/deepnote/.mcp.json`
10
-
- Deepnote skills for workspace search, notebook inspection, and notebook execution workflows
10
+
- Deepnote skills for workspace search, docs lookup, integration mapping, notebook inspection, and notebook execution workflows
11
11
- Deepnote branding assets
12
12
13
13
## Requirements
@@ -60,15 +60,21 @@ This marketplace marks authentication as `ON_INSTALL`, so Codex may show Deepnot
60
60
The hosted Deepnote MCP server currently exposes these tools:
61
61
62
62
-`search`: search workspace resources across projects, notebooks, blocks, and integrations
63
-
-`list_projects`: list workspace projects, optionally filtered by name
63
+
-`get_me`: get the calling API key, creator user, workspace, and access level
64
+
-`list_projects`: list workspace projects, optionally filtered by name, with cursor pagination
64
65
-`list_integrations`: list workspace integrations, optionally filtered by name or type
66
+
-`list_integration_project_usages`: list projects connected to an integration
67
+
-`list_integration_notebook_usages`: list notebooks containing SQL blocks that use an integration
68
+
-`list_integration_block_usages`: list SQL blocks that use an integration
65
69
-`get_notebook`: inspect notebook details, blocks, input variables, and last-run metadata
66
70
-`create_run`: start a full notebook run, optionally with input values
67
71
-`get_run`: inspect run status, errors, completion time, and snapshot content when available
72
+
-`list_docs`: list Deepnote docs sections and article slugs
73
+
-`get_doc`: fetch a Deepnote documentation article by slug
68
74
69
75
The current hosted MCP toolset does not expose notebook editing, single-block execution, direct database schema browsing, environment mutation, permissions changes, publishing, or scheduling changes.
70
76
71
-
When Deepnote MCP is connected, Codex should introduce it in one sentence: Deepnote MCP can search workspaceresources, list projects and integrations, inspect notebooks, start notebook runs, and fetch run status; if you are not registered yet, register at deepnote.com and ready your Deepnote API key from the [Deepnote API docs](https://deepnote.com/docs/deepnote-api).
77
+
When Deepnote MCP is connected, Codex should introduce it in one sentence: Deepnote MCP can identify the current workspace, search resources, list projects and integrations, inspect notebooks, map integration usage, read Deepnote docs, start notebook runs, and fetch run status; if you are not registered yet, register at deepnote.com and ready your Deepnote API key from the [Deepnote API docs](https://deepnote.com/docs/deepnote-api).
72
78
73
79
By default, Deepnote responses should be brief, concise, and information dense. Codex should lead with the answer, use tables and counts where they improve scanning, and avoid long explanations, raw snapshots, full logs, or exhaustive block listings unless the user asks for more detail.
74
80
@@ -78,7 +84,7 @@ Workspace status and heartbeat responses should read like a compact operations d
78
84
| --- | --- | --- | --- | --- |
79
85
|`Project name`|`Notebook name`|`Last run: YYYY-MM-DD HH:MM UTC` or `No recent run visible`|`Yes` or `No`|`Integration name (type)` or `None visible via MCP`|
80
86
81
-
For large workspaces, Codex should include active notebooks, scheduled notebooks, and notebooks with visible linked connections first, then summarize remaining notebooks by count.
87
+
For large workspaces, Codex should request `list_projects` with `pageSize: 100` and follow `pagination.nextPageToken` while `pagination.hasMore` is true when a complete inventory is needed. If the user only needs a sample or filtered answer, Codex can stop once it has enough evidence. Codex should include active notebooks, scheduled notebooks, and notebooks with visible linked connections first, then summarize remaining notebooks by count.
82
88
83
89
Notebook inspection responses should help the user understand purpose, safety, and next action. Start with a one-sentence brief, then use compact tables for status, inputs, block map, and visible connections:
84
90
@@ -88,10 +94,39 @@ Notebook inspection responses should help the user understand purpose, safety, a
88
94
| Notebook |`Notebook name`|
89
95
| Scheduled |`Yes` or `No`|
90
96
| Last Run |`status/date/run id` or `No run visible`|
91
-
| Visible Connections |`Integration name (type)` or `None visible via MCP`|
97
+
| Visible Connections |`Integration name (type)`, `Usage not checked`, or `None visible via MCP`|
92
98
93
99
When a notebook includes cells that print environment variables, credentials, large datasets, start servers, send network requests, or mutate external systems, Codex should call that out before running the notebook.
94
100
101
+
## Workspace Identity And Project Pagination
102
+
103
+
Use `get_me` when a response needs to name the authenticated workspace, debug access issues, or report the caller's access level. The response includes API key metadata, user metadata, workspace `{ id, name, slug }`, and `accessLevel`.
104
+
105
+
`list_projects` returns a paginated response:
106
+
107
+
```json
108
+
{
109
+
"projects": [],
110
+
"pagination": {
111
+
"pageSize": 100,
112
+
"nextPageToken": "opaque-token-or-null",
113
+
"hasMore": true
114
+
}
115
+
}
116
+
```
117
+
118
+
Pass `pageToken` from `pagination.nextPageToken` to fetch the next page. Treat page tokens as opaque and tied to the original filters.
119
+
120
+
## Integration Usage Mapping
121
+
122
+
Use `list_integrations` first to discover integration IDs. Then use the usage tools for the needed granularity:
123
+
124
+
-`list_integration_project_usages` for connected projects
125
+
-`list_integration_notebook_usages` for notebooks containing SQL blocks that use the integration
126
+
-`list_integration_block_usages` for the exact SQL blocks and block content
127
+
128
+
Each usage tool can be narrowed with `projectId`. If usage is not checked, say `Usage not checked`; if the tool returns no usages, say `No usage returned`.
129
+
95
130
## Run Notebooks With Inputs
96
131
97
132
Use `get_notebook` before `create_run` when a notebook may need inputs. `get_notebook` returns input variables in notebook order with their `blockId`, `name`, `type`, current `value`, and optional human-readable `label`.
@@ -119,6 +154,8 @@ Input values must match the notebook input block type:
119
154
120
155
If an input name is not defined for the notebook, or a value does not match the input block type, Deepnote returns a validation error and the run is not started. Input values apply to that run only; they do not change the notebook's saved defaults.
121
156
157
+
If `create_run` fails before returning a run ID, Codex should surface the MCP/API error directly and should not poll `get_run`. This includes user-facing errors such as workspace or parallel run limits.
158
+
122
159
## Install From GitHub
123
160
124
161
After this repo is pushed to GitHub, add it as a Codex marketplace:
-`Search my Deepnote workspace for customer retention notebooks.`
225
+
-`Which Deepnote workspace am I connected to?`
188
226
-`Inspect this Deepnote notebook and summarize its inputs.`
189
227
-`Run this Deepnote notebook with customer_name set to Acme.`
190
228
-`List Deepnote integrations matching Snowflake.`
229
+
-`Show me where this Deepnote integration is used.`
230
+
-`Look up the Deepnote docs for scheduled notebooks.`
191
231
192
232
## Troubleshooting
193
233
194
234
- If authentication fails, confirm `DEEPNOTE_MCP_TOKEN` is set in the environment Codex actually starts from.
195
235
- If a resource is missing, check that the API key creator has access to the workspace, project, notebook, or integration.
236
+
- If project listings look incomplete, check whether `pagination.hasMore` is true and continue with `pagination.nextPageToken`.
196
237
- If a notebook run with inputs fails before starting, check that each input key matches a `get_notebook` input `name` and that each value matches the input type.
197
238
- If a run fails, ask Codex to inspect the run with `get_run` and summarize the error.
198
-
- If Codex suggests an edit or environment change, remember that the current hosted MCP server is read/search plus full-notebook execution only.
239
+
- If Codex suggests an edit or environment change, remember that the current hosted MCP server is read/search/docs/usage mapping plus full-notebook execution only.
Copy file name to clipboardExpand all lines: plugins/deepnote/.codex-plugin/plugin.json
+5-4Lines changed: 5 additions & 4 deletions
Original file line number
Diff line number
Diff line change
@@ -1,7 +1,7 @@
1
1
{
2
2
"name": "deepnote",
3
-
"version": "0.1.0",
4
-
"description": "Search Deepnote workspaces, inspect notebooks, list integrations, and run notebooks from Codex.",
3
+
"version": "0.1.1",
4
+
"description": "Search Deepnote workspaces, inspect notebooks, map integrations, read docs, and run notebooks from Codex.",
5
5
"author": {
6
6
"name": "Deepnote",
7
7
"url": "https://deepnote.com"
@@ -21,8 +21,8 @@
21
21
"mcpServers": "./.mcp.json",
22
22
"interface": {
23
23
"displayName": "Deepnote",
24
-
"shortDescription": "Work with Deepnote projectsand notebooks from Codex.",
25
-
"longDescription": "Adds Deepnote skills and hosted MCP configuration for Codex. Use it to search workspaceresources, list projects and integrations, inspect notebook structure and inputs, start notebook runs with optional input values, and summarize run status and outputs.",
24
+
"shortDescription": "Work with Deepnote workspaces, projects, notebooks, and docs from Codex.",
25
+
"longDescription": "Adds Deepnote skills and hosted MCP configuration for Codex. Use it to identify the current workspace, search resources, list paginated projects and integrations, map integration usage, inspect notebook structure and inputs, read Deepnote docs, start notebook runs with optional input values, and summarize run status and outputs.",
Copy file name to clipboardExpand all lines: plugins/deepnote/skills/deepnote-data-execution/SKILL.md
+5-2Lines changed: 5 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -11,8 +11,10 @@ Use the Deepnote MCP server for the execution and context it currently exposes:
11
11
12
12
-`get_notebook` for notebook blocks, input variables, last-run metadata, and integration references visible in blocks.
13
13
-`list_integrations` for workspace integration names and types.
14
+
-`list_integration_project_usages`, `list_integration_notebook_usages`, and `list_integration_block_usages` for direct integration usage mapping.
14
15
-`create_run` to start full-notebook execution, optionally with input values.
15
16
-`get_run` for run status, errors, completion time, and snapshot content when available.
17
+
-`get_me` for the authenticated workspace, API key type, and caller access level when execution permissions or workspace identity matter.
16
18
17
19
Do not claim direct access to database schemas, table previews, file metadata, query previews, or environment configuration unless a current MCP tool explicitly exposes that data.
18
20
@@ -23,7 +25,8 @@ Do not claim direct access to database schemas, table previews, file metadata, q
23
25
3. If the notebook has inputs and the user supplied values, map values to the exact input `name` fields returned by `get_notebook`.
24
26
4. Check whether execution may mutate data, call external services, trigger schedules, or consume significant compute.
25
27
5. Use `create_run` only for full-notebook execution by `notebookId`; the hosted MCP server does not currently expose single-block execution.
26
-
6. Use `get_run` to inspect status, errors, completion time, and snapshot content before reporting results.
28
+
6. If `create_run` returns an MCP error, report that error and stop; do not call `get_run` unless a run ID was returned.
29
+
7. Use `get_run` to inspect status, errors, completion time, and snapshot content before reporting results.
27
30
28
31
Before starting a run, inspect the notebook for cells that print environment variables, secrets, credentials, or entire configuration objects. If found, warn the user and get explicit confirmation before running. Also warn before running notebooks that start servers, send bulk requests, call external services, or mutate data.
29
32
@@ -49,7 +52,7 @@ The hosted Deepnote MCP server currently does not expose environment mutation to
49
52
50
53
## Reporting Results
51
54
52
-
For successful runs, include the executed notebook name or ID, run ID, status, any input overrides that are safe to mention, and the important result from snapshot content when available. For failures, include concise error detail and the next fix to try. Avoid pasting long logs unless the user asks for them.
55
+
For successful runs, include the executed notebook name or ID, run ID, status, any input overrides that are safe to mention, and the important result from snapshot content when available. For failures, include concise error detail and the next fix to try. If a run fails before it starts, such as a workspace or parallel run limit, report the user-facing API error directly. Avoid pasting long logs unless the user asks for them.
53
56
54
57
Keep run reports brief and information-dense unless the user asks for detail. Prefer one compact run table plus the most important result or first actionable error. Do not paste long logs, raw snapshots, or full notebook outputs by default.
0 commit comments