Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,7 @@ Things to know:
- Sign-in says the workspace cannot use the MCP connector, or that MCP access is disabled: a workspace admin needs to enable MCP access for that workspace.
- A project, notebook, or integration is missing: the signed-in user, or the API key's creator, needs access to it.
- Creating or editing fails with `Insufficient permissions`: use an editor or admin key, or a user with edit access to the project.
- `update_project` fails with `Insufficient permissions`: changing a project's static-site access, Streamlit app API access, or environment needs full access to the project, not just edit access.
- Attaching or detaching an integration returns a conflict: inspect the project because the integration is already in the requested state.
- `copy_file` reports `File already exists`: the target project already has the same path; the tool never overwrites.
- A Streamlit app remains `starting`: it may be slow or may have failed during startup; check the app logs in Deepnote.
Expand Down
2 changes: 1 addition & 1 deletion plugins/deepnote/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "deepnote",
"version": "0.5.0",
"version": "0.6.0",
"description": "Search Deepnote workspaces, inspect and edit projects and notebooks, manage integrations and project machines, publish static sites and Streamlit apps, generate links, read docs, and run notebooks from Claude Code.",
"author": {
"name": "Deepnote",
Expand Down
2 changes: 1 addition & 1 deletion plugins/deepnote/.codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "deepnote",
"version": "0.5.0",
"version": "0.6.0",
"description": "Search Deepnote workspaces, inspect and edit projects and notebooks, manage integrations and project machines, publish static sites and Streamlit apps, generate links, read docs, and run notebooks from Codex.",
"author": {
"name": "Deepnote",
Expand Down
12 changes: 6 additions & 6 deletions plugins/deepnote/skills/deepnote-mcp/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ This is the authoritative summary of tool arguments. Workflow skills add only th
- `search`: search workspace resources across projects, notebooks, blocks, and integrations.
- `list_folders`: list all workspace folders and their `parentFolderId` relationships, optionally filtered by `nameContains`.
- `list_projects`: list workspace projects, optionally filtered by name, with cursor pagination (`pageSize`, `pageToken`, `pagination.nextPageToken`, `pagination.hasMore`). Notebook rows expose `isInit`, `isScheduled`, and `lastRunAt`.
- `get_project`: get a project's type, folder, notebooks, attached integration summaries, recursive file inventory, static-site settings, and environment (Docker image) by `projectId`.
- `list_environments`: list the environments (Docker images) projects can run on, Deepnote's and the workspace's custom images, with `id`, `image`, `language`, `isDefault`, `isGpu`, and `isDeprecated`. A custom image from a private registry also needs its registry integration attached to the project.
- `get_project`: get a project's type, folder, notebooks, attached integration summaries, recursive file inventory, static-site settings, `streamlitAppApiAccessEnabled`, and environment (Docker image) by `projectId`. `environment` is `null` when the project builds its image from a Dockerfile or has none set.
- `list_environments`: list the environments (Docker images) projects in the workspace can run on, Deepnote's and the workspace's custom ones, in one unpaginated response. Each has `id`, `name`, `image`, `type` (`deepnote` or `custom`), `language` (`python` or `r`), `isDefault` (one CPU and one GPU default), `isGpu`, and `isDeprecated`; deprecated environments keep working for projects already on them but should not be chosen. A custom image from a private registry is pulled only when its registry integration is attached to the project.
- `list_integrations`: list workspace integrations, optionally filtered by name or type.
- `get_integration`: get integration details and cached table structure, optionally filtered by `databaseName`, `schemaName`, or exact `tableName`.
- `list_integration_project_usages`: list projects connected to an integration, optionally narrowed to one `projectId`.
Expand All @@ -42,7 +42,7 @@ This is the authoritative summary of tool arguments. Workflow skills add only th
- `reorder_notebook_blocks`: move one or more existing blocks. Requires `notebookId`, non-empty unique `blockIds` in the desired moved-block order, and `placement` of `{ "type": "start" }`, `{ "type": "end" }`, or `{ "type": "after", "blockId": "anchor-block-id" }`.
- `copy_file`: copy one file to a different project at the same normalized path. Requires `sourceProjectId`, `targetProjectId`, and `sourceFilePath`; it accepts no destination path and never overwrites.
- `publish_static_site`: publish files beneath a project's static-site root and enable sharing. Requires `projectId` and a non-empty `files` array of `{ path, content, encoding? }`; accepts optional `prune` and `apiAccess` (`enabled` or `disabled`), and returns the canonical URL.
- `update_project`: change a project's static-site access, hosted Streamlit app API access, or environment. Requires `projectId`; accepts `staticFiles` (at least one of `sharingEnabled` or `apiAccessEnabled`; API access cannot be enabled while sharing is disabled), `streamlitAppApiAccessEnabled`, and `environmentId` from `list_environments`. Changing the environment restarts a running machine, which clears kernel state.
- `update_project`: change a project's static-site access, hosted Streamlit app API access, or environment. Requires `projectId`, full access to the project, and at least one of `staticFiles` (`sharingEnabled` and/or `apiAccessEnabled`; API access cannot be enabled while sharing is disabled), `streamlitAppApiAccessEnabled`, or `environmentId` from `list_environments`. `streamlitAppApiAccessEnabled` lets the project's hosted Streamlit apps call the public API as their signed-in viewers. Changing the environment restarts a running machine in the background, which clears kernel state.
- `create_streamlit_app`: serve an existing project file as a Streamlit app. Requires `projectId` and project-relative `entrypoint`; returns the app record and URL.
- `list_streamlit_apps`: list all Streamlit apps served by a project. Requires `projectId`; the response is unpaginated.
- `get_streamlit_app_status`: return `running`, `starting`, or `unavailable` for a `streamlitAppId`.
Expand All @@ -62,7 +62,7 @@ Before telling a user that a Deepnote action is impossible, check the tools the
## General Rules

1. Use `get_me` when workspace identity, caller role, or API key context would help the answer or troubleshooting.
2. Resolve ambiguous project, folder, notebook, block, or integration names with `search`, `list_projects`, `list_folders`, or `list_integrations` before acting on them.
2. Resolve ambiguous project, folder, notebook, block, integration, or environment names with `search`, `list_projects`, `list_folders`, `list_integrations`, or `list_environments` before acting on them.
3. For complete inventories, page `list_projects` or `list_notebook_runs` with `pageSize: 100` and follow `pagination.nextPageToken` while `pagination.hasMore` is true. Stop early when the user only needs a sample or a filtered answer. Treat page tokens as opaque and tied to the original filters.
4. Use `get_project` for project-wide notebook, integration, file, or static-site state. Call `get_notebook` before reasoning about, editing, or running an existing notebook.
5. Report results with Deepnote object names and IDs when useful, and surface execution errors, missing permissions, input validation errors, or unavailable MCP capabilities.
Expand All @@ -74,10 +74,10 @@ Before telling a user that a Deepnote action is impossible, check the tools the
- Avoid downloading or printing large datasets. Sample, summarize, or aggregate unless the user explicitly asks for an export.
- Do not paste `snapshotDownloadUrl` values into answers unless the user asks for a download or file handoff. Snapshot handling is defined in `deepnote-runs`.
- Treat notebook execution as potentially stateful and costly.
- Treat resource creation, notebook duplication or renaming, block edits or deletion, file copies, integration creation or attachment changes, app creation, static-site publishing or sharing changes, environment changes, and machine type or idle shutdown changes as persistent writes. Do them only when the user asked, resolve targets carefully, and report affected IDs.
- Treat resource creation, notebook duplication or renaming, block edits or deletion, file copies, integration creation or attachment changes, app creation, static-site publishing or sharing changes, Streamlit app API access changes, environment changes, and machine type or idle shutdown changes as persistent writes. Do them only when the user asked, resolve targets carefully, and report affected IDs.
- A running machine uses machine time. Start, stop, or restart it, or change its type or the project's environment, only when the user asked; a live run the user asked for may start it. Stopping or restarting it, changing its type with `restart: true`, and changing the project's environment clear kernel state for everyone working in the project, so say that kernel state will be lost.
- If a tool returns `isError`, surface the user-facing error message concisely.
- Capability boundary: the hosted server can create projects, notebooks, blocks, integrations, and Streamlit apps; rename and duplicate notebooks; update, reorder, and delete blocks; copy existing files between projects; attach and detach integrations; publish or change access to static sites; change a project's environment; and start, stop, restart, or resize the project machine. It cannot upload arbitrary project files, delete projects, notebooks, or Streamlit apps, move notebooks between projects, or change schedules, permissions, package versions, credentials, or secrets. Check the advertised tools before relying on this boundary.
- Capability boundary: the hosted server can create projects, notebooks, blocks, integrations, and Streamlit apps; rename and duplicate notebooks; update, reorder, and delete blocks; copy existing files between projects; attach and detach integrations; publish or change access to static sites; change a project's Streamlit app API access and environment; and start, stop, restart, or resize the project machine. It cannot upload arbitrary project files, delete projects, notebooks, or Streamlit apps, move notebooks between projects, create custom environments, or change schedules, permissions, package versions, credentials, or secrets. Check the advertised tools before relying on this boundary.

## Response Style

Expand Down