Skip to content

docs: document list_environments and all update_project settings - #18

Merged
tkislan merged 4 commits into
mainfrom
tk/document-list-environments
Sep 30, 2026
Merged

tkislan merged 4 commits into
mainfrom
tk/document-list-environments

Conversation

@tkislan

@tkislan tkislan commented Sep 25, 2026 •

Copy link
Copy Markdown
Contributor

Why

The nightly Deepnote MCP drift check reopened #10: the hosted server now advertises list_environments, and no SKILL.md mentions it.

That tool is part of a larger product change, deepnote-internal #20858 and #20859. create_project and update_project now accept environmentId, and get_project returns the project's environment. That made the deepnote-mcp capability boundary wrong, since it said the server cannot change environments.

The update_project entry had two more gaps:

  • It didn't mention streamlitAppApiAccessEnabled from deepnote-internal #20811. The drift check can't catch that because it only compares tool names.
  • It didn't say that the tool needs full access to the project.

What

Every statement below comes from the implementation on deepnote-internal develop (apps/webapp/server/mcp/tools/*, public-api/v2/contracts/{environments,projects}.ts, public-api/v2/projects.ts, libs/access-control).

  • deepnote-mcp
    • New list_environments catalogue entry: one unpaginated response with id, name, image, type, language, isDefault, isGpu and isDeprecated. It also says deprecated environments should not be chosen and that private-registry images need their registry integration attached.
    • create_project gains environmentId. Omitting it gives the default environment.
    • update_project now covers all three settings: staticFiles, streamlitAppApiAccessEnabled and environmentId.
      • Every call needs Full access to the project (UPDATE_PROJECT_SETTINGS); Edit is not enough.
      • Changing the environment restarts a running machine in the background, which clears kernel state.
    • get_project now lists streamlitAppApiAccessEnabled and environment. environment is null for Dockerfile-built projects.
    • General rule 2 resolves environment names with list_environments, and all project setting changes count as persistent writes.
    • The capability boundary now says the server can change a project's Streamlit app API access and environment, but cannot create custom environments.
  • deepnote-workspace: the project-inspection line lists environment among the get_project fields.
  • README:
    • new capability bullet for choosing a project's environment
    • troubleshooting entry for update_project failing with Insufficient permissions
  • Manifests: 0.4.0 → 0.5.0 in both, following docs: document the 13 hosted MCP tools missing from the skills #16. Drop this if you'd rather batch releases.

Verification

  • Ran the real scripts/detect-deepnote-mcp-drift.sh with curl stubbed to return the tool list from develop's apps/webapp/server/mcp/mcp-tools-manifest.json (35 tools):
    • on main: MISSING list_environments, exit 1
    • on this branch: 35/35 ok, exit 0
  • claude plugin validate --strict . and claude plugin validate --strict plugins/deepnote pass, and every JSON manifest parses.

Not run: the drift script against the live https://deepnote.com/mcp, because I have no DEEPNOTE_TOKEN locally. Running the workflow with workflow_dispatch after merge will confirm it.

Follow-up (not in this PR)

docs/deepnote-mcp.md in deepnote/deepnote doesn't mention list_environments or environmentId yet.

Closes #10

🤖 Generated with Claude Code

https://claude.ai/code/session_01SufsVX7Qvru6rvNpVm8pui

Summary by CodeRabbit

  • Documentation
    • Clarified that changing static-site access, Streamlit app API access, or a project environment requires full project access; edit access alone is not sufficient.
    • Added details about environment options and custom images. Environment changes restart a running machine in the background, and changing machine type or environment can clear kernel state.
    • Updated the Deepnote plugin version to 0.6.0.

tkislan and others added 2 commits September 25, 2026 09:43
The hosted MCP server now advertises list_environments, and create_project
and update_project accept an environmentId, so agents can put a project on
a chosen Docker image. The nightly drift check flags list_environments as
undocumented, and the capability boundary still said the server cannot
change environments.

Document the tool and the new environmentId arguments from the
deepnote-internal implementation, including that changing a project's
environment needs admin access to the project and restarts a running
machine. Bump both manifests to 0.5.0 so installed plugins pick it up.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SufsVX7Qvru6rvNpVm8pui
update_project also accepts streamlitAppApiAccessEnabled, which lets a
project's hosted Streamlit apps call the public API as their signed-in
viewers, and get_project returns it. Neither was documented.

Every update_project call needs full access to the project
(UPDATE_PROJECT_SETTINGS), not only environment changes, so state the
requirement once for the whole tool, and point the README troubleshooting
at update_project instead of environment changes alone.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SufsVX7Qvru6rvNpVm8pui
@coderabbitai

coderabbitai Bot commented Sep 25, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Essentials

Run ID: 47bf1ce5-b487-4361-88be-6eaa77540737

📥 Commits

Reviewing files that changed from the base of the PR and between 2d793eb and 186e718.

📒 Files selected for processing (4)
  • README.md
  • plugins/deepnote/.claude-plugin/plugin.json
  • plugins/deepnote/.codex-plugin/plugin.json
  • plugins/deepnote/skills/deepnote-mcp/SKILL.md

Included review availability: This review used your included allowance. 1 included review remains after this review. Your included PR review attempts over the past 7 days set your current allowance at 5 reviews per hour.


📝 Walkthrough

Walkthrough

The Deepnote MCP documentation adds environment details and lookup guidance. It clarifies update_project requirements, environment-change restart timing, persistent writes, kernel-state effects, and capability limits. The README adds a troubleshooting note about full project access. Both plugin manifests change version from 0.5.0 to 0.6.0.

Priority: ⬇️ Low

Estimated code review effort: 2 (Simple) | ~8 minutes

Change: Other

Merge Risk: ⚪ Minimal · up to 186e7

The documentation and matching version updates have no identified merge-blocking issue. They are ready to merge subject to normal checks.

🚥 Pre-merge checks | ✅ 4 | ❌ 2

❌ Failed checks (2 warnings)

Check name Status Explanation Resolution
Out of Scope Changes check ⚠️ Warning Issue #10 covers the missing list_environments documentation only. The PR also changes update_project permission guidance, adds README troubleshooting for permission errors, changes Streamlit and … Keep the list_environments documentation and directly related environment guidance. Move the unrelated update_project, Streamlit, static-site, troubleshooting, and manifest-version changes to a separate issue and pull request, or link t…
Updates Docs ⚠️ Warning The PR updates the plugin skill and README, but it does not update the primary documentation in deepnote/deepnote. The current docs/deepnote-mcp.md contains no references to list_environments, `… Update deepnote/deepnote/docs/deepnote-mcp.md with the new tool and project-setting behavior. Confirm that the corresponding roadmap or landing-page documentation in deepnote-internal is also updated.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main documentation changes: it adds list_environments coverage and documents the update_project settings.
Linked Issues check ✅ Passed Issue #10 requires documentation for list_environments. The PR adds list_environments documentation to plugins/deepnote/skills/deepnote-mcp/SKILL.md, including environment details and usage guid…
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Full details: Out of Scope Changes check

Explanation

Issue #10 covers the missing list_environments documentation only. The PR also changes update_project permission guidance, adds README troubleshooting for permission errors, changes Streamlit and static-site access guidance, and bumps both plugin manifest versions. These changes are not required by issue #10. The environment guidance directly supports list_environments and is in scope.

Resolution

Keep the list_environments documentation and directly related environment guidance. Move the unrelated update_project, Streamlit, static-site, troubleshooting, and manifest-version changes to a separate issue and pull request, or link the appropriate active issue that requires them.

Full details: Updates Docs

Explanation

The PR updates the plugin skill and README, but it does not update the primary documentation in deepnote/deepnote. The current docs/deepnote-mcp.md contains no references to list_environments, environmentId, update_project, or the new environment settings. The private deepnote-internal repository is not accessible, so its roadmap entry cannot be verified.

  • Fix all pre-merge checks with AI

Warning

Some tools did not complete. Review the errors below.

🔧 LanguageTool

LanguageTool checks were skipped: reviews.tools.languagetool.enabled_only requires at least one selection in enabled_rules or enabled_categories. Select rules/categories, set enabled_only to false to use the default rules, or set enabled to false to disable LanguageTool.


Comment @coderabbitai help to get the list of available commands.

@tkislan
tkislan marked this pull request as ready for review September 26, 2026 11:25
@tkislan
tkislan requested review from dinohamzic and m1so September 26, 2026 11:25
tkislan and others added 2 commits September 30, 2026 08:41
#20 documented list_environments, environmentId, and the machine tools
while this branch was open. Conflicts keep main's wording and add only
what main lacked: streamlitAppApiAccessEnabled and a null environment on
get_project, full access and the background restart on update_project,
Streamlit app API access as a persistent write, and "cannot create
custom environments". list_environments keeps this branch's fuller entry.
"hardware" leaves the capability boundary now that the machine tools
exist, and the README environment bullet that duplicated main's is gone.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QBB91ZL2r3Qn3T2Bokxfuq
main reached 0.5.0 with #20, so this branch's own 0.4.0 -> 0.5.0 bump
merged away. Bump again so the environment and update_project details
ship as a new version.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QBB91ZL2r3Qn3T2Bokxfuq
@tkislan
tkislan requested a review from m1so September 30, 2026 09:27
@tkislan
tkislan merged commit 132d19a into main Sep 30, 2026
1 check passed
@linear-code

linear-code Bot commented Sep 30, 2026

Copy link
Copy Markdown

BLU-6437

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[mcp-drift]: Add missing Deepnote MCP tools descriptions

2 participants