René's URL Explorer Experiment


Title: feat(runtime-core,mcp): keep deepnote-toolkit servers warm across MCP runs by jamesbhobbs · Pull Request #520 · deepnote/deepnote · GitHub

Open Graph Title: feat(runtime-core,mcp): keep deepnote-toolkit servers warm across MCP runs by jamesbhobbs · Pull Request #520 · deepnote/deepnote

X Title: feat(runtime-core,mcp): keep deepnote-toolkit servers warm across MCP runs by jamesbhobbs · Pull Request #520 · deepnote/deepnote

Description: Third in the chain: stacked on #519 (runtime hardening), which is stacked on #518 (interpreter resolution). Merge those first. Part of #162. Problem Every deepnote_run tool call in the MCP spawns a deepnote-toolkit server (a Python process that imports Jupyter and the toolkit), waits for it, starts a kernel, runs, and kills everything. That is several seconds of overhead on every agent step, and none of it is the kernel work the agent asked for. Starting a kernel session on a running server is cheap; starting the server is what costs. Change ServerPool (@deepnote/runtime-core). Keeps one toolkit server warm per interpreter, working directory, port and environment. Callers acquire() a lease and release() it; concurrent acquires for the same key share one startup; a server with no lease is stopped after idleTimeoutMs (default 5 min, 0 stops immediately). shutdown() stops everything and rejects later acquires; killAll() is the synchronous last resort for process.on('exit') and signals the recorded Jupyter and language-server children before the supervisor. ExecutionEngine attaches to a provided server. new ExecutionEngine(config, { server }) starts its own kernel on an existing server and, on stop(), disconnects only the kernel. The engine watches the server with a removable process listener that it detaches on stop, so engines attached to a long-lived server do not accumulate. MCP. deepnote_run leases a warm server for each call and attaches a fresh engine, so every call still gets a fresh kernel and no variables leak between calls. DEEPNOTE_MCP_SERVER_IDLE_SECONDS tunes the idle timeout. Pooled servers are stopped on SIGINT/SIGTERM and when the MCP transport closes, and killed on exit, so no toolkit server outlives its host. Review findings folded in Three issues raised against the earlier combined PR are fixed here with tests against real Jupyter: Concurrent runs could share a kernel. KernelClient always requested the session path deepnote-cli, and Jupyter returns the existing session for a known path, so two engines on one server got the same kernel and either cleanup shut it down. Each connection now uses a unique session path. An integration test runs two engines concurrently on one server and asserts neither sees the other's variables. A server whose Jupyter had crashed stayed reusable. The pool only evicted on supervisor exit, and the supervisor survives a dead Jupyter child. acquire() now health-checks a warm server before handing it out and replaces one that no longer answers. An integration test kills Jupyter under a pooled server and asserts the next acquire gets a fresh server and the old supervisor is stopped. An unexpectedly exited supervisor left its children behind. Eviction on exit now runs the same child cleanup as stopServer, so a Jupyter or language server that outlived its supervisor is terminated. Further findings on the pool's edge cases are fixed here as well: in-flight stops are tracked, so shutdown() waits for a server that is already being stopped (and tolerates one that fails to stop) and killAll() can still signal it; acquire() rechecks that the pool is open after its health probe and replacement stop, so a shutdown during the probe cannot start and abandon a replacement; only idle servers are probed, so a false alarm can never stop a server from under a run that holds it; the MCP releases its lease even when engine.stop() rejects; and DEEPNOTE_MCP_SERVER_IDLE_SECONDS is capped at the Node timer limit so an oversized value cannot make the idle timer fire at once. Tests Unit: pool (reuse, shared startup, idle stop, immediate stop, eviction on exit with cleanup, health-check replacement, startup failure, shutdown semantics, killAll child signalling), engine (attach to a provided server, no listener accumulation), kernel client (unique session paths), MCP (pooled runs, lease release on failure, idle env var parsing). Integration (pnpm test:integration): concurrent engines on one server; pool recovery after a Jupyter crash, with the leak guard confirming nothing survives. Docs packages/mcp/README.md: warm servers and DEEPNOTE_MCP_SERVER_IDLE_SECONDS. 🤖 Generated with Claude Code Summary by CodeRabbit New Features MCP executions reuse warm servers for faster repeated runs while creating a fresh kernel for each call. Healthy servers can be shared by concurrent executions, while unresponsive servers are automatically replaced. Configure server idle duration with DEEPNOTE_MCP_SERVER_IDLE_SECONDS; the default is five minutes. Separate connections now receive unique sessions to prevent interference. Execution timeouts now apply to agent activity and dynamically run code. Bug Fixes Improved cleanup, shutdown handling, and error reporting during execution failures. Documentation Clarified server reuse, shutdown behavior, interpreter discovery, and environment metadata.

Open Graph Description: Third in the chain: stacked on #519 (runtime hardening), which is stacked on #518 (interpreter resolution). Merge those first. Part of #162. Problem Every deepnote_run tool call in the MCP spawns a...

X Description: Third in the chain: stacked on #519 (runtime hardening), which is stacked on #518 (interpreter resolution). Merge those first. Part of #162. Problem Every deepnote_run tool call in the MCP spawns a...

Opengraph URL: https://github.com/deepnote/deepnote/pull/520

X: @github

direct link

Domain: github.com

react-profiling0
react-import-mapreact,react-dom,react-dom/client,react-dom/profiling,react-is,react-reconciler,react/compiler-runtime,react/jsx-dev-runtime,react/jsx-runtime,scheduler@d5750093facf
route-pattern/:user_id/:repository/pull/:id/commits/:range(.:format)
route-controllerpull_requests
route-actioncommits
fetch-noncev2:551f46d1-dbf4-849b-1252-a2d5f374f70b
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-id857A:6F80E:8D5CB4:BB752D:6AEDC868
html-safe-noncef8c940902fb58ab60f5e16cc9779a80f48ebfad94bedfb6ac05fd30394443738
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI4NTdBOjZGODBFOjhENUNCNDpCQjc1MkQ6NkFFREM4NjgiLCJ2aXNpdG9yX2lkIjoiMzA4MDk2NTU1ODk5Nzk5NjU2IiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0=
visitor-hmac929815b89a53c794f23d3faa2469602a46c35366980ad34c36ded387209ad928
hovercard-subject-tagpull_request:4486340344
github-keyboard-shortcutsrepository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///pull_requests/show/commits
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7
twitter:imagehttps://avatars.githubusercontent.com/u/15235276?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/u/15235276?s=400&v=4
og:image:altThird in the chain: stacked on #519 (runtime hardening), which is stacked on #518 (interpreter resolution). Merge those first. Part of #162. Problem Every deepnote_run tool call in the MCP spawns a...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
Nonec7d2f3ac4f4f560c56267b765892ba5b093e8a5fb2c0ed937edd8947746942e9
turbo-cache-controlno-preview
diff-viewunified
go-importgithub.com/deepnote/deepnote git https://github.com/deepnote/deepnote.git
octolytics-dimension-user_id45339858
octolytics-dimension-user_logindeepnote
octolytics-dimension-repository_id1066509034
octolytics-dimension-repository_nwodeepnote/deepnote
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id1066509034
octolytics-dimension-repository_network_root_nwodeepnote/deepnote
turbo-body-classeslogged-out env-production page-responsive full-width
disable-turbofalse
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release0cac2d0cb993b0ad48c49b076135ac558c742c30
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7#start-of-content
https://github.com/
Sign inhttps://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fdeepnote%2Fdeepnote%2Fpull%2F520%2Fcommits%2F90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7
GitHubRepository hosting, code review, and collaborationhttps://github.com/platform
CopilotAI coding agent for tasks, projects, and automated workhttps://github.com/features/copilot
ActionsCI/CD and automationhttps://github.com/features/actions
Code QualityQuality analysis, fixes, and enforcementhttps://github.com/features/code-quality
CodespacesCloud development environmentshttps://github.com/features/codespaces
Code SecurityVulnerability detection and remediationhttps://github.com/security/advanced-security/code-security
Secret ProtectionSecret scanning and leak preventionhttps://github.com/security/advanced-security/secret-protection
All Featureshttps://github.com/features
Documentationhttps://docs.github.com/en
Traininghttps://learn.github.com/skills
Certificationshttps://learn.github.com/credentials
Build with Copilothttps://github.com/features/ai
Customize Copilothttps://docs.github.com/en/copilot/how-tos/copilot-on-github/customize-copilot/customize-copilot-overview
Integrationshttps://github.com/marketplace
Trending reposhttps://github.com/trending
GitHub Sponsorshttps://github.com/open-source/sponsors
Developer articleshttps://github.com/resources/articles
ChangelogYour source for the latest features, improvements, and fixes across GitHub products, all in one place.https://github.blog/changelog/
Enterpriseshttps://github.com/enterprise
Teamhttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
See all industrieshttps://github.com/solutions/industry
Why GitHubhttps://github.com/why-github
Customer Storieshttps://github.com/customer-stories
Business insightshttps://github.com/solutions/executive-insights
Trust Centerhttps://github.com/trust-center
GitHub Advanced SecurityEnterprise-grade code securityhttps://github.com/security/advanced-security
Copilot for businessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/enterprise/premium-support
Documentationhttps://docs.github.com/en
Resource centerhttps://github.com/resources
Bloghttps://github.blog/
Events & webinarshttps://github.com/resources/events
Community Forumhttps://github.com/orgs/community/discussions
Customer Storieshttps://github.com/customer-stories
Integrationshttps://github.com/marketplace
Customer supporthttps://help.github.com/
Traininghttps://learn.github.com/skills
GitHub Statushttps://www.githubstatus.com/
Abouthttps://github.com/about
Partnershttps://github.com/partners
Changeloghttps://github.blog/changelog/
GitHub UniverseThe event for developers, by developers — talks, workshops, and what’s next for GitHub.https://githubuniverse.com/
Pricinghttps://github.com/pricing
Sign inhttps://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fdeepnote%2Fdeepnote%2Fpull%2F520%2Fcommits%2F90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7
Sign uphttps://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fpull_requests%2Fshow%2Fcommits&source=header-repo&source_repo=deepnote%2Fdeepnote
Reloadhttps://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7
Reloadhttps://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7
Reloadhttps://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7
deepnotehttps://github.com/deepnote
deepnotehttps://github.com/deepnote/deepnote
Codehttps://github.com/deepnote/deepnote
Issues14 (14)https://github.com/deepnote/deepnote/issues
Pull requests24 (24)https://github.com/deepnote/deepnote/pulls
Discussionshttps://github.com/deepnote/deepnote/discussions
Actionshttps://github.com/deepnote/deepnote/actions
Security and qualityhttps://github.com/deepnote/deepnote/security
Insightshttps://github.com/deepnote/deepnote/pulse
Sign up for GitHub https://github.com/signup?return_to=%2Fdeepnote%2Fdeepnote%2Fissues%2Fnew%2Fchoose
terms of servicehttps://docs.github.com/terms
privacy statementhttps://docs.github.com/privacy
Sign inhttps://github.com/login?return_to=%2Fdeepnote%2Fdeepnote%2Fissues%2Fnew%2Fchoose
jamesbhobbshttps://github.com/jamesbhobbs
mainhttps://github.com/deepnote/deepnote/tree/main
feat/mcp-warm-servershttps://github.com/deepnote/deepnote/tree/feat/mcp-warm-servers
Conversation 47 https://github.com/deepnote/deepnote/pull/520
Commits 51 https://github.com/deepnote/deepnote/pull/520/commits
Checks 21 https://github.com/deepnote/deepnote/pull/520/checks
Files changed https://github.com/deepnote/deepnote/pull/520/files
Please reload this pagehttps://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7
feat(runtime-core,mcp): keep deepnote-toolkit servers warm across MCP runs https://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7#top
Show all changes 51 commits https://github.com/deepnote/deepnote/pull/520/files
c159ebc feat(runtime-core,cli,mcp): use the Deepnote extension's environment … jamesbhobbs Sep 9, 2026 https://github.com/deepnote/deepnote/pull/520/commits/c159ebcf2909215e2a8904e03d1381930e271db3
df389aa fix(cli): report an explicit --python interpreter in human output jamesbhobbs Sep 9, 2026 https://github.com/deepnote/deepnote/pull/520/commits/df389aad56173563a612ca88a98a209f8d85ad25
1717109 docs(skill): fix stale .agent/ folder and scope the lint python claim… jamesbhobbs Sep 9, 2026 https://github.com/deepnote/deepnote/pull/520/commits/17171099daa340ab5b743f229a80b5b6d567f873
d77732c feat(runtime-core,cli,mcp): typed runtime failures, fail-fast shutdow… jamesbhobbs Sep 9, 2026 https://github.com/deepnote/deepnote/pull/520/commits/d77732cb3e6e53b04d4c52205fd322f5ea88f360
1f201e4 chore(repo): merge feat/ide-python-resolution into feat/runtime-harde… jamesbhobbs Sep 9, 2026 https://github.com/deepnote/deepnote/pull/520/commits/1f201e4cfc5d6e3773b1b98441f252e5fb584efb
6fd96d2 fix(runtime-core): address review feedback on runtime hardening jamesbhobbs Sep 9, 2026 https://github.com/deepnote/deepnote/pull/520/commits/6fd96d265637b992c21978aca0949c44f519b848
90ea0a4 refactor(runtime-core,mcp): move warm server pooling to a follow-up PR jamesbhobbs Sep 9, 2026 https://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7
8f7ee33 feat(runtime-core,mcp): keep deepnote-toolkit servers warm across MCP… jamesbhobbs Sep 9, 2026 https://github.com/deepnote/deepnote/pull/520/commits/8f7ee3331ee5f16c3fe98cfb36303aa3f9c12839
6fa4c0e fix(runtime-core): bound every startup health request by the remainin… jamesbhobbs Sep 9, 2026 https://github.com/deepnote/deepnote/pull/520/commits/6fa4c0e4cc666c3dc74a8520e045957c200358e3
5845f6a Merge branch 'feat/runtime-hardening' into feat/mcp-warm-servers jamesbhobbs Sep 9, 2026 https://github.com/deepnote/deepnote/pull/520/commits/5845f6a4dec56340c0102749859d33fa4feaeab1
c72faa7 fix(runtime-core): make ServerPool shutdown wait for in-flight stops … jamesbhobbs Sep 9, 2026 https://github.com/deepnote/deepnote/pull/520/commits/c72faa77a0dde7836602f02e2c075a6392536e73
85e7d6b fix(runtime-core): never return an exited server, stop waiting exactl… jamesbhobbs Sep 9, 2026 https://github.com/deepnote/deepnote/pull/520/commits/85e7d6b9f2d28295fc2a5384e44d111bb8b9494a
fa41a94 fix(runtime-core,mcp): harden ServerPool edge cases from review jamesbhobbs Sep 9, 2026 https://github.com/deepnote/deepnote/pull/520/commits/fa41a94d0fa31ee0049d429ca95762a88975ab2e
351b810 Merge branch 'feat/runtime-hardening' into feat/mcp-warm-servers jamesbhobbs Sep 9, 2026 https://github.com/deepnote/deepnote/pull/520/commits/351b810fd9396474861c7144b1be3b628331eb2e
99637fa docs: note that integration suites must not run concurrently on one m… jamesbhobbs Sep 9, 2026 https://github.com/deepnote/deepnote/pull/520/commits/99637fafd592a7637960bd54076bc59899462d3b
d2d1dc4 Merge branch 'feat/runtime-hardening' into feat/mcp-warm-servers jamesbhobbs Sep 9, 2026 https://github.com/deepnote/deepnote/pull/520/commits/d2d1dc40b7484d79188f7195910574c1c5b65019
88a1476 feat(runtime-core): accept interpreter-only Deepnote extension sidecars jamesbhobbs Sep 10, 2026 https://github.com/deepnote/deepnote/pull/520/commits/88a14769534ad989e4a57fec5e3f28f61ab3e163
5bd95ca docs(cli): describe the extension tier as the selected interpreter in… jamesbhobbs Sep 10, 2026 https://github.com/deepnote/deepnote/pull/520/commits/5bd95ca419bcb25c7067dfa91a100f50524f11a3
387bda3 chore(repo): merge feat/ide-python-resolution into feat/runtime-harde… jamesbhobbs Sep 10, 2026 https://github.com/deepnote/deepnote/pull/520/commits/387bda3cc11a92f5f63d600f892614632a826215
7118d3b chore(repo): merge feat/ide-python-resolution into feat/runtime-harde… jamesbhobbs Sep 10, 2026 https://github.com/deepnote/deepnote/pull/520/commits/7118d3b631c5bdcc1795becc6dc074b80b75d0f1
4bb3bd2 chore(repo): merge feat/runtime-hardening into feat/mcp-warm-servers jamesbhobbs Sep 10, 2026 https://github.com/deepnote/deepnote/pull/520/commits/4bb3bd29f647f53dbf762019b82a16747add5b1b
938cbc4 docs(skill): point the interpreter prerequisite at pythonInterpreter,… jamesbhobbs Sep 10, 2026 https://github.com/deepnote/deepnote/pull/520/commits/938cbc49523027a46c493bd9b16bb1003ac1714e
e4bb755 chore(repo): merge feat/ide-python-resolution into feat/runtime-harde… jamesbhobbs Sep 10, 2026 https://github.com/deepnote/deepnote/pull/520/commits/e4bb755d3e9a9327452c49fc0aa1db11fba44a44
41a19e6 chore(repo): merge feat/runtime-hardening into feat/mcp-warm-servers jamesbhobbs Sep 10, 2026 https://github.com/deepnote/deepnote/pull/520/commits/41a19e600ffcbf030ae9467ab788e3dfb35e511c
da10623 fix(runtime-core): list every sidecar location in the bare-Python hint jamesbhobbs Sep 10, 2026 https://github.com/deepnote/deepnote/pull/520/commits/da10623564f14f7c3fa27b2ef480f5aec4386ed3
d3cfaf9 chore(repo): merge feat/ide-python-resolution into feat/runtime-harde… jamesbhobbs Sep 10, 2026 https://github.com/deepnote/deepnote/pull/520/commits/d3cfaf97cb704b39fc35f4ab0083a56d34c53a34
d325c36 fix(runtime-core): keep a warm server another run leased during a fai… jamesbhobbs Sep 10, 2026 https://github.com/deepnote/deepnote/pull/520/commits/d325c36f9d97d2ed0b88215d55a2f7de22c62114
ea72fae chore(repo): merge feat/runtime-hardening into feat/mcp-warm-servers jamesbhobbs Sep 10, 2026 https://github.com/deepnote/deepnote/pull/520/commits/ea72faee35b346e1189c98b25c8b833e49e4bf7f
b7f4954 fix(mcp): search the workspace root for the sidecar by default, and d… jamesbhobbs Sep 10, 2026 https://github.com/deepnote/deepnote/pull/520/commits/b7f495481d4506e7d414817051d59cb04261ecd2
bf976e5 chore(repo): merge feat/ide-python-resolution into feat/runtime-harde… jamesbhobbs Sep 10, 2026 https://github.com/deepnote/deepnote/pull/520/commits/bf976e53239cf651eae961a27514517fb0bccdcb
70ba6d3 docs(mcp): mention the .venv tier in the deepnote_run interpreter docs jamesbhobbs Sep 10, 2026 https://github.com/deepnote/deepnote/pull/520/commits/70ba6d334a24aa4ce5fdecc13d1af7b7b1f1bb8b
4860447 chore(repo): merge feat/runtime-hardening into feat/mcp-warm-servers jamesbhobbs Sep 10, 2026 https://github.com/deepnote/deepnote/pull/520/commits/48604472edd921e760ae02e9e58846e65351dd1c
4cb3b49 docs(mcp): say the venv search also starts from the workspace root jamesbhobbs Sep 10, 2026 https://github.com/deepnote/deepnote/pull/520/commits/4cb3b496c8a7a591d36791107fc71072100d9d6c
8697e6c chore(repo): merge feat/runtime-hardening into feat/mcp-warm-servers jamesbhobbs Sep 10, 2026 https://github.com/deepnote/deepnote/pull/520/commits/8697e6c565a167022966d9116958fa9c9571cfef
4e038d1 feat(runtime-core,cli,mcp): use the Deepnote extension's environment … jamesbhobbs Sep 9, 2026 https://github.com/deepnote/deepnote/pull/520/commits/4e038d1adec4c04e874ed3367aef2d4eb9884c0a
a5eb73f fix(cli): report an explicit --python interpreter in human output jamesbhobbs Sep 9, 2026 https://github.com/deepnote/deepnote/pull/520/commits/a5eb73f072650e3814268baee83006e667de2610
27181f5 docs(skill): fix stale .agent/ folder and scope the lint python claim… jamesbhobbs Sep 9, 2026 https://github.com/deepnote/deepnote/pull/520/commits/27181f5c90e3470d71d69ee05e67510374331dc5
c0d220f feat(runtime-core): accept interpreter-only Deepnote extension sidecars jamesbhobbs Sep 10, 2026 https://github.com/deepnote/deepnote/pull/520/commits/c0d220f6134f8283be395fe5f61415c30bfc72cd
c70381a docs(cli): describe the extension tier as the selected interpreter in… jamesbhobbs Sep 10, 2026 https://github.com/deepnote/deepnote/pull/520/commits/c70381aaca4695b7bd2aa871791e3c1119b695e8
6827457 docs(skill): point the interpreter prerequisite at pythonInterpreter,… jamesbhobbs Sep 10, 2026 https://github.com/deepnote/deepnote/pull/520/commits/6827457c5a3021f4109b1282fa174220d9b45458
760fc03 fix(runtime-core): list every sidecar location in the bare-Python hint jamesbhobbs Sep 10, 2026 https://github.com/deepnote/deepnote/pull/520/commits/760fc0389ee69bdafeb402df0ab0bab6a36f6def
7de8b74 fix(mcp): search the workspace root for the sidecar by default, and d… jamesbhobbs Sep 10, 2026 https://github.com/deepnote/deepnote/pull/520/commits/7de8b746ec292ff9aa686548196a1104eff7c0d4
29983a7 chore(repo): merge feat/ide-python-resolution into feat/runtime-harde… jamesbhobbs Sep 14, 2026 https://github.com/deepnote/deepnote/pull/520/commits/29983a7b9e6255ce6307d7e287e9f015f021ca82
eaea265 chore(repo): merge feat/runtime-hardening into feat/mcp-warm-servers jamesbhobbs Sep 14, 2026 https://github.com/deepnote/deepnote/pull/520/commits/eaea26510758de630ced8b616f0219be5668495b
4a2562c chore(repo): merge main into warm server branch jamesbhobbs Sep 16, 2026 https://github.com/deepnote/deepnote/pull/520/commits/4a2562cce6414d20be19cdb9dcd005e89670488f
643eea6 fix(runtime-core): share concurrent pool shutdown cleanup jamesbhobbs Sep 16, 2026 https://github.com/deepnote/deepnote/pull/520/commits/643eea6d0a10685cf0100df5c37b7d983a3c8c14
129dc04 fix(mcp): shut down warm servers on stdin disconnect jamesbhobbs Sep 16, 2026 https://github.com/deepnote/deepnote/pull/520/commits/129dc045b2dce8666c1e09b19403edd96e5d567e
aa6939d fix(runtime-core): retain server handles during pool startup jamesbhobbs Sep 16, 2026 https://github.com/deepnote/deepnote/pull/520/commits/aa6939d68981a0c2f539d45f7130d1c67ae5c1f4
a0ed244 refactor(mcp): use stream completion for stdin shutdown jamesbhobbs Sep 16, 2026 https://github.com/deepnote/deepnote/pull/520/commits/a0ed244afa64ad58a1190ddf32dc052a92d27f73
87633e6 test(runtime-core): use vitest waitUntil for server exit jamesbhobbs Sep 16, 2026 https://github.com/deepnote/deepnote/pull/520/commits/87633e650189362bd52879d1ab2b502cdd022b3b
b114d72 fix(runtime-core): discover startup children during synchronous shutdown jamesbhobbs Sep 16, 2026 https://github.com/deepnote/deepnote/pull/520/commits/b114d72a5911a52fecbc3b2bb65847274e9022f7
Clear filters https://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7
Please reload this pagehttps://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7
Please reload this pagehttps://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7
README.md https://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7#diff-ba5dea79fe8446f1a9461322ff9b3158efbf2e11e1bf709973a2c146fba55539
runtime.test.ts https://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7#diff-2b32d9684c82bfd4f5d0e732faa676e83a8547cbc5086206c35dccdf7b96f93a
runtime.ts https://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7#diff-9bd9c27ee68db8d9b16429c5e4ed222c25313ff67db2bf56735a60c9c40fdcfc
server.ts https://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7#diff-6712a8dfb545cac462bfe960b0d0dc9478518b49409122b36ea9dc96b02d27ab
execution.runtime.test.ts https://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7#diff-1d82f617bbb5cbbd97a8d04350a6c4e59be649a44b2b430b045775ab7e82ed89
execution.ts https://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7#diff-095624d6ede0941c52740c7ffd973262d526100b6f239941d06490ef592f9129
execution-engine.integration.test.ts https://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7#diff-b37b85f9e67e3169af51c47c1b29c96a3d528afe3e7f10d4e556d00639e7d669
execution-engine.test.ts https://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7#diff-0b627d37726333e896c042864adff1322f8bb6d41faa228b1a5f357d1ce805c0
execution-engine.ts https://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7#diff-a98a106038f750a12d33bc3ad1423bcbe1a622f45ebff6a7655e10ed0b4489ed
index.ts https://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7#diff-5ab5fe7b450649335062cee0ca4f1499ae23f78f1460b187873afbe21093ef0b
server-pool.test.ts https://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7#diff-9a0bdefe3c8d0c5fb45980fd67c5ef0a4db5eb9fa01a3bbd7cc9d2ad51df501f
server-pool.ts https://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7#diff-044daa8ef2a6048b656aecefc8ecb2b7df2636d8316fba1c0d644466d957fa4a
Prev https://github.com/deepnote/deepnote/pull/520/commits/6fd96d265637b992c21978aca0949c44f519b848
Next https://github.com/deepnote/deepnote/pull/520/commits/8f7ee3331ee5f16c3fe98cfb36303aa3f9c12839
Please reload this pagehttps://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7
https://github.com/jamesbhobbs
https://github.com/claude
jamesbhobbshttps://github.com/deepnote/deepnote/commits?author=jamesbhobbs
claudehttps://github.com/deepnote/deepnote/commits?author=claude
https://github.com/deepnote/deepnote/blob/main/.github/CODEOWNERS#L2
packages/mcp/README.mdhttps://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7#diff-ba5dea79fe8446f1a9461322ff9b3158efbf2e11e1bf709973a2c146fba55539
View file https://github.com/deepnote/deepnote/blob/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7/packages/mcp/README.md
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/deepnote/deepnote/pull/520/commits/{{ revealButtonHref }}
https://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7#diff-ba5dea79fe8446f1a9461322ff9b3158efbf2e11e1bf709973a2c146fba55539
https://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7#diff-ba5dea79fe8446f1a9461322ff9b3158efbf2e11e1bf709973a2c146fba55539
https://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7#diff-ba5dea79fe8446f1a9461322ff9b3158efbf2e11e1bf709973a2c146fba55539
https://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7#diff-ba5dea79fe8446f1a9461322ff9b3158efbf2e11e1bf709973a2c146fba55539
https://github.com/deepnote/deepnote/blob/main/.github/CODEOWNERS#L2
packages/mcp/src/runtime.test.tshttps://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7#diff-2b32d9684c82bfd4f5d0e732faa676e83a8547cbc5086206c35dccdf7b96f93a
View file https://github.com/deepnote/deepnote/blob/6fd96d265637b992c21978aca0949c44f519b848/packages/mcp/src/runtime.test.ts
Open in desktop https://desktop.github.com
Please reload this pagehttps://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7
https://github.com/deepnote/deepnote/blob/main/.github/CODEOWNERS#L2
packages/mcp/src/runtime.tshttps://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7#diff-9bd9c27ee68db8d9b16429c5e4ed222c25313ff67db2bf56735a60c9c40fdcfc
View file https://github.com/deepnote/deepnote/blob/6fd96d265637b992c21978aca0949c44f519b848/packages/mcp/src/runtime.ts
Open in desktop https://desktop.github.com
Please reload this pagehttps://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7
https://github.com/deepnote/deepnote/blob/main/.github/CODEOWNERS#L2
packages/mcp/src/server.tshttps://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7#diff-6712a8dfb545cac462bfe960b0d0dc9478518b49409122b36ea9dc96b02d27ab
View file https://github.com/deepnote/deepnote/blob/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7/packages/mcp/src/server.ts
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/deepnote/deepnote/pull/520/commits/{{ revealButtonHref }}
https://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7#diff-6712a8dfb545cac462bfe960b0d0dc9478518b49409122b36ea9dc96b02d27ab
https://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7#diff-6712a8dfb545cac462bfe960b0d0dc9478518b49409122b36ea9dc96b02d27ab
https://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7#diff-6712a8dfb545cac462bfe960b0d0dc9478518b49409122b36ea9dc96b02d27ab
https://github.com/deepnote/deepnote/blob/main/.github/CODEOWNERS#L2
packages/mcp/src/tools/execution.runtime.test.tshttps://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7#diff-1d82f617bbb5cbbd97a8d04350a6c4e59be649a44b2b430b045775ab7e82ed89
View file https://github.com/deepnote/deepnote/blob/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7/packages/mcp/src/tools/execution.runtime.test.ts
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/deepnote/deepnote/pull/520/commits/{{ revealButtonHref }}
https://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7#diff-1d82f617bbb5cbbd97a8d04350a6c4e59be649a44b2b430b045775ab7e82ed89
https://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7#diff-1d82f617bbb5cbbd97a8d04350a6c4e59be649a44b2b430b045775ab7e82ed89
https://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7#diff-1d82f617bbb5cbbd97a8d04350a6c4e59be649a44b2b430b045775ab7e82ed89
https://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7#diff-1d82f617bbb5cbbd97a8d04350a6c4e59be649a44b2b430b045775ab7e82ed89
https://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7#diff-1d82f617bbb5cbbd97a8d04350a6c4e59be649a44b2b430b045775ab7e82ed89
https://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7#diff-1d82f617bbb5cbbd97a8d04350a6c4e59be649a44b2b430b045775ab7e82ed89
https://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7#diff-1d82f617bbb5cbbd97a8d04350a6c4e59be649a44b2b430b045775ab7e82ed89
https://github.com/deepnote/deepnote/blob/main/.github/CODEOWNERS#L2
packages/mcp/src/tools/execution.tshttps://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7#diff-095624d6ede0941c52740c7ffd973262d526100b6f239941d06490ef592f9129
View file https://github.com/deepnote/deepnote/blob/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7/packages/mcp/src/tools/execution.ts
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/deepnote/deepnote/pull/520/commits/{{ revealButtonHref }}
https://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7#diff-095624d6ede0941c52740c7ffd973262d526100b6f239941d06490ef592f9129
https://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7#diff-095624d6ede0941c52740c7ffd973262d526100b6f239941d06490ef592f9129
https://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7#diff-095624d6ede0941c52740c7ffd973262d526100b6f239941d06490ef592f9129
https://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7#diff-095624d6ede0941c52740c7ffd973262d526100b6f239941d06490ef592f9129
https://github.com/deepnote/deepnote/blob/main/.github/CODEOWNERS#L2
packages/runtime-core/src/execution-engine.integration.test.tshttps://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7#diff-b37b85f9e67e3169af51c47c1b29c96a3d528afe3e7f10d4e556d00639e7d669
View file https://github.com/deepnote/deepnote/blob/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7/packages/runtime-core/src/execution-engine.integration.test.ts
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/deepnote/deepnote/pull/520/commits/{{ revealButtonHref }}
https://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7#diff-b37b85f9e67e3169af51c47c1b29c96a3d528afe3e7f10d4e556d00639e7d669
https://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7#diff-b37b85f9e67e3169af51c47c1b29c96a3d528afe3e7f10d4e556d00639e7d669
https://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7#diff-b37b85f9e67e3169af51c47c1b29c96a3d528afe3e7f10d4e556d00639e7d669
https://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7#diff-b37b85f9e67e3169af51c47c1b29c96a3d528afe3e7f10d4e556d00639e7d669
https://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7#diff-b37b85f9e67e3169af51c47c1b29c96a3d528afe3e7f10d4e556d00639e7d669
https://github.com/deepnote/deepnote/blob/main/.github/CODEOWNERS#L2
packages/runtime-core/src/execution-engine.test.tshttps://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7#diff-0b627d37726333e896c042864adff1322f8bb6d41faa228b1a5f357d1ce805c0
View file https://github.com/deepnote/deepnote/blob/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7/packages/runtime-core/src/execution-engine.test.ts
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/deepnote/deepnote/pull/520/commits/{{ revealButtonHref }}
https://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7#diff-0b627d37726333e896c042864adff1322f8bb6d41faa228b1a5f357d1ce805c0
https://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7#diff-0b627d37726333e896c042864adff1322f8bb6d41faa228b1a5f357d1ce805c0
https://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7#diff-0b627d37726333e896c042864adff1322f8bb6d41faa228b1a5f357d1ce805c0
https://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7#diff-0b627d37726333e896c042864adff1322f8bb6d41faa228b1a5f357d1ce805c0
Please reload this pagehttps://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7
Please reload this pagehttps://github.com/deepnote/deepnote/pull/520/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.