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 4c7cc9b
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: README.md
+30-3Lines changed: 30 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -63,21 +63,27 @@ The hosted Deepnote MCP server currently exposes these tools:
63
63
-`get_me`: get the calling API key, creator user, workspace, and access level
64
64
-`list_projects`: list workspace projects, optionally filtered by name, with cursor pagination
65
65
-`list_integrations`: list workspace integrations, optionally filtered by name or type
66
+
-`get_integration`: inspect integration details and cached table structure
66
67
-`list_integration_project_usages`: list projects connected to an integration
67
68
-`list_integration_notebook_usages`: list notebooks containing SQL blocks that use an integration
68
69
-`list_integration_block_usages`: list SQL blocks that use an integration
69
70
-`get_notebook`: inspect notebook details, blocks, input variables, and last-run metadata
70
71
-`create_project`: create a new project, optionally inside a folder
71
72
-`create_notebook`: create an empty notebook inside a project
72
73
-`create_block`: create a new block in a notebook
74
+
-`update_block`: update an existing block's content or SQL integration
75
+
-`reorder_notebook_blocks`: move existing blocks within a notebook
73
76
-`create_run`: start a full notebook run, optionally with input values
77
+
-`list_notebook_runs`: list recent and historical notebook runs
74
78
-`get_run`: inspect run status, errors, completion time, and snapshot content when available
75
79
-`list_docs`: list Deepnote docs sections and article slugs
76
80
-`get_doc`: fetch a Deepnote documentation article by slug
77
81
78
-
The current hosted MCP toolset does not expose single-block execution, direct database schema browsing, environment mutation, permissions changes, publishing, or scheduling changes.
82
+
The hosted MCP server also exposes capabilities beyond the tools listed above. It can create, inspect, attach, and detach integrations, and it can enable or disable static-site sharing and viewer API access. Once `publish_static_site` appears in the connected server's advertised tools, it can also publish a small HTML/CSS/JavaScript site in one call. Treat the list above as the documented subset rather than a complete inventory; check the tools advertised by the connected server before telling a user that something is impossible.
79
83
80
-
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, create projects/notebooks/blocks, 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).
84
+
The hosted MCP server cannot execute a single block, browse database schemas directly, upload arbitrary project files, or change schedules, permissions, environments, hardware, credentials, or secrets.
85
+
86
+
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, create and edit notebook structure, map integration usage and cached table structure, read Deepnote docs, start notebook runs, and fetch run status and history; 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).
81
87
82
88
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.
83
89
@@ -101,6 +107,23 @@ Notebook inspection responses should help the user understand purpose, safety, a
101
107
102
108
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.
103
109
110
+
## Publish Static Dashboards
111
+
112
+
Author HTML, CSS, and JavaScript in the agent's local workspace. When a shell and the Deepnote CLI
113
+
are available, publish the finished directory with `deepnote publish ./dist --project-id <uuid>`.
114
+
When deployment must happen through hosted MCP, use `publish_static_site` only if the connected
115
+
server advertises it. Supply the final file contents in that one tool call; do not use notebook
116
+
execution or generic project-file writes as a deployment workaround.
117
+
118
+
`publish_static_site` enables sharing after its file operations succeed and returns the canonical
119
+
site URL. To change access later without re-uploading or deleting files, call `update_project` with
120
+
`staticFiles.sharingEnabled` and/or `staticFiles.apiAccessEnabled`. Disabling sharing also disables
121
+
viewer API access. Re-enabling sharing serves the retained files again.
122
+
123
+
Published files are served to people who can view the project. Never put API keys, personal tokens,
124
+
`.env` contents, or other secrets in them. Viewer API access is a separate explicit setting; enable
125
+
it only when the browser app needs the viewer-scoped Deepnote run API.
126
+
104
127
## Workspace Identity And Project Pagination
105
128
106
129
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`.
- If a SQL block creation fails, confirm `integrationId` references a SQL integration in the same workspace and pass it as a top-level field.
265
292
- 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.
266
293
- If a run fails, ask Codex to inspect the run with `get_run` and summarize the error.
267
-
- If Codex suggests an unsupported edit or environment change, remember that the current hosted MCP server can create projects, notebooks, and blocks, but does not change environments, permissions, publishing, or schedules.
294
+
- If Codex suggests an unsupported edit or environment change, remember the boundary: the hosted MCP server can create projects, notebooks, and blocks, update and reorder blocks, create, inspect, attach, and detach integrations, and enable or disable static-site sharing and viewer API access. If `publish_static_site` is advertised, it can publish files only beneath the static-site root; it still cannot upload arbitrary project files or change schedules, permissions, environments, hardware, credentials, or secrets.
Copy file name to clipboardExpand all lines: plugins/deepnote/.codex-plugin/plugin.json
+3-3Lines changed: 3 additions & 3 deletions
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
{
2
2
"name": "deepnote",
3
-
"version": "0.1.2",
3
+
"version": "0.1.3",
4
4
"description": "Search Deepnote workspaces, inspect notebooks, generate links, map integrations, read docs, and run notebooks from Codex.",
5
5
"author": {
6
6
"name": "Deepnote",
@@ -22,9 +22,9 @@
22
22
"interface": {
23
23
"displayName": "Deepnote",
24
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, construct workspace-aware project and notebook links, map integration usage, inspect notebook structure and inputs, read Deepnote docs, start notebook runs with optional input values, and summarize run status and outputs.",
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, inspect cached integration structure, construct workspace-aware project and notebook links, inspect and edit notebook structure, read Deepnote docs, start notebook runs with optional input values, and summarize run history, status, and outputs.",
Copy file name to clipboardExpand all lines: plugins/deepnote/skills/deepnote-data-execution/SKILL.md
+25-5Lines changed: 25 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
---
2
2
name: deepnote-data-execution
3
-
description: Use when running Deepnote notebooks, inspecting notebook inputs, reviewing integration references, or interpreting run status and snapshot outputs through the Deepnote MCP server.
3
+
description: Use when running Deepnote notebooks, inspecting notebook inputs, reviewing integration references and cached table structure, listing run history, or interpreting run status and snapshot outputs through the Deepnote MCP server.
4
4
---
5
5
6
6
# Deepnote Data And Execution
@@ -11,17 +11,19 @@ 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
+
-`get_integration` for integration details and cached table structure, optionally filtered by `databaseName`, `schemaName`, or exact `tableName`.
14
15
-`list_integration_project_usages`, `list_integration_notebook_usages`, and `list_integration_block_usages` for direct integration usage mapping.
15
16
-`create_run` to start full-notebook execution, optionally with input values.
17
+
-`list_notebook_runs` for historical notebook runs, newest first, with `pageSize` and `pageToken` pagination.
16
18
-`get_run` for run status, errors, completion time, and run snapshots. When `snapshotDelivery` is omitted, it returns a short-lived `snapshotDownloadUrl` when a snapshot is available; this is equivalent to `snapshotDelivery: "downloadUrl"`. Request `snapshotDelivery: "inline"` only when you need `snapshotContent` in the tool response.
17
19
-`get_me` for the authenticated workspace, API key type, and caller access level when execution permissions or workspace identity matter.
18
20
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.
21
+
Use `get_integration` for cached table and column structure when the user asks about integration schemas, tables, columns, or whether a table exists. Do not claim live database introspection, table previews, query previews, file metadata, or environment configuration unless a current MCP tool explicitly exposes that data.
20
22
21
23
## Execution Workflow
22
24
23
25
1. Read the notebook context first with `get_notebook`.
24
-
2. Identify whether the user needs a fresh run or whether existing run metadata is enough.
26
+
2. Identify whether the user needs a fresh run, a specific run status, or notebook run history.
25
27
3. If the notebook has inputs and the user supplied values, map values to the exact input `name` fields returned by `get_notebook`.
26
28
4. Check whether execution may mutate data, call external services, trigger schedules, or consume significant compute.
27
29
5. Use `create_run` only for full-notebook execution by `notebookId`; the hosted MCP server does not currently expose single-block execution.
@@ -30,6 +32,22 @@ Do not claim direct access to database schemas, table previews, file metadata, q
30
32
31
33
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.
32
34
35
+
## Run History
36
+
37
+
Use `list_notebook_runs` when the user asks about recent runs, failed runs, run history, or anything older than the latest run metadata returned by `get_notebook`. The tool returns runs newest first with `runId`, `notebookId`, `status`, `createdAt`, `completedAt`, and `pagination`.
38
+
39
+
For short history requests, call `list_notebook_runs` with the default `pageSize` of 20. For broader audits, use `pageSize: 100` and follow `pagination.nextPageToken` while `pagination.hasMore` is true, stopping once you have enough evidence for the user's question.
40
+
41
+
Use `get_run` only after selecting a specific run that needs detail, snapshot availability, output inspection, or failure debugging. If the user asks "why did the last run fail?" and no run ID is provided, list recent runs first, pick the newest failed run, then call `get_run` for that run.
42
+
43
+
## Cached Integration Structure
44
+
45
+
Use `list_integrations` to resolve an integration name or type to an ID, then call `get_integration` for cached table structure. The response includes integration details plus `tables`, where each table has `name`, `schema`, optional `database`, and cached `columns` with names and database-native types.
46
+
47
+
Use `databaseName`, `schemaName`, and `tableName` filters when the user asks about a specific database, schema, or exact table. These filters apply to cached structure rows; an empty table list means no matching cached structure is visible through MCP, not proof that the live database has no such table.
48
+
49
+
When reporting cached structure, say it is cached. Do not present it as a fresh live database scan, and do not claim access to row previews or query results unless you obtained them from a notebook run snapshot or another exposed MCP tool.
50
+
33
51
## Notebook Run Inputs
34
52
35
53
`create_run` accepts an optional `inputs` object. Keys must be notebook input names from `get_notebook`, not labels or block IDs. Values must match the input block type:
@@ -54,9 +72,11 @@ If the current MCP tool schema does not expose `snapshotDelivery`, use the field
54
72
55
73
When snapshot content, snapshot download URLs, or errors include sensitive, proprietary, personal, or production-like data, minimize exposure in the response. Summarize the result, shape, quality issues, aggregates, or failure mode instead of dumping raw records, presigned URLs, or long logs.
56
74
57
-
## Environment Changes
75
+
## Configuration Changes
76
+
77
+
The hosted Deepnote MCP server can create, inspect, attach, and detach integrations, and it can enable or disable static-site sharing and viewer API access. It cannot upload the website files behind a static site, and it cannot change schedules, permissions, environments, hardware, credentials, or secrets.
58
78
59
-
The hosted Deepnote MCP server currently does not expose environment mutation tools. Do not claim to change package versions, environment images, hardware, integrations, credentials, secrets, scheduled runs, or shared app settings through MCP.
79
+
So do not claim to change package versions, environment images, hardware, credentials, secrets, scheduled runs, or permissions through MCP. Equally, do not tell a user that integration or static-site sharing changes are impossible through MCP; check the tools the connected server advertises in the current session, and use them if they are exposed.
Copy file name to clipboardExpand all lines: plugins/deepnote/skills/deepnote-links/SKILL.md
+11Lines changed: 11 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -14,6 +14,15 @@ Use this skill to build user-facing Deepnote web links from MCP data. Prefer lin
14
14
3. Resolve notebook links with `get_notebook` when possible. Use the notebook `id`, `name`, and parent project data.
15
15
4. If the exact project or notebook is ambiguous, ask a short clarification or provide a compact candidate list with links only for unambiguous matches.
16
16
17
+
## Creation Link Rules
18
+
19
+
When linking after a creation workflow, use the resource IDs returned by the write tools as the source of truth:
20
+
21
+
- If `create_notebook` returned a notebook, build the notebook link for that returned notebook ID. Do not substitute the first notebook on the project or the default notebook created by `create_project`.
22
+
- If `create_project` created a project and no separate `create_notebook` call was made, use the default notebook created with the project only when a notebook link is needed for that active notebook.
23
+
- If both the project default notebook and a later `create_notebook` result are present, the later `create_notebook` result is the notebook to link unless the user explicitly asks for the default notebook.
24
+
- If parent project data is missing for the created notebook, call `get_notebook` for the target notebook ID or use the known project ID from the creation workflow before constructing the link.
25
+
17
26
## URL Shapes
18
27
19
28
Use the production web origin `https://deepnote.com` for Deepnote MCP links. Do not derive the web origin from API or MCP hosts.
@@ -80,6 +89,8 @@ For notebook links, set `utm_content` to the notebook ID. For project-only links
80
89
81
90
Set `utm_term` to the MCP tool or workflow that produced or grounded the link, such as `list_projects`, `search`, `get_notebook`, or `workspace_summary`. Use lowercase snake_case values and URL-encode if needed.
82
91
92
+
For links to newly created notebooks, set `utm_content` to the created notebook ID and set `utm_term` to the tool that produced the notebook: `create_notebook` when a `create_notebook` call returned it, `create_project` when the link points at the default notebook of a project created without a separate `create_notebook` call. Use `utm_term=get_notebook` when a follow-up `get_notebook` call provided the fields needed to construct the link.
93
+
83
94
Add UTM parameters before any URL fragment. Use `?` when the URL has no existing query string, otherwise use `&`. Preserve non-UTM query parameters if they already exist, and replace any existing `utm_source`, `utm_medium`, `utm_campaign`, `utm_content`, or `utm_term` values instead of duplicating them.
0 commit comments