[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-datalayer--jupyter-mcp-server":3,"tool-datalayer--jupyter-mcp-server":61},[4,18,26,36,44,53],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",142651,2,"2026-04-06T23:34:12",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":32,"last_commit_at":42,"category_tags":43,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107888,"2026-04-06T11:32:50",[14,15,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":32,"last_commit_at":50,"category_tags":51,"status":17},4721,"markitdown","microsoft\u002Fmarkitdown","MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具，专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片（含 OCR）、音频（含语音转录）、HTML 乃至 YouTube 链接等多种格式的解析，能够精准提取文档中的标题、列表、表格和链接等关键结构信息。\n\n在人工智能应用日益普及的今天，大语言模型（LLM）虽擅长处理文本，却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点，它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式，成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外，它还提供了 MCP（模型上下文协议）服务器，可无缝集成到 Claude Desktop 等 LLM 应用中。\n\n这款工具特别适合开发者、数据科学家及 AI 研究人员使用，尤其是那些需要构建文档检索增强生成（RAG）系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性，但其核心优势在于为机器",93400,"2026-04-06T19:52:38",[52,14],"插件",{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":10,"last_commit_at":59,"category_tags":60,"status":17},4487,"LLMs-from-scratch","rasbt\u002FLLMs-from-scratch","LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目，旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型（LLM）。它不仅是同名技术著作的官方代码库，更提供了一套完整的实践方案，涵盖模型开发、预训练及微调的全过程。\n\n该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型，却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码，用户能够透彻掌握 Transformer 架构、注意力机制等关键原理，从而真正理解大模型是如何“思考”的。此外，项目还包含了加载大型预训练权重进行微调的代码，帮助用户将理论知识延伸至实际应用。\n\nLLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API，而是渴望探究模型构建细节的技术人员而言，这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计：将复杂的系统工程拆解为清晰的步骤，配合详细的图表与示例，让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础，还是为未来研发更大规模的模型做准备",90106,"2026-04-06T11:19:32",[35,15,13,14],{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":66,"readme_en":67,"readme_zh":68,"quickstart_zh":69,"use_case_zh":70,"hero_image_url":71,"owner_login":72,"owner_name":73,"owner_avatar_url":74,"owner_bio":75,"owner_company":76,"owner_location":76,"owner_email":77,"owner_twitter":76,"owner_website":78,"owner_url":79,"languages":80,"stars":97,"forks":98,"last_commit_at":99,"license":100,"difficulty_score":101,"env_os":102,"env_gpu":103,"env_ram":103,"env_deps":104,"category_tags":113,"github_topics":114,"view_count":32,"oss_zip_url":76,"oss_zip_packed_at":76,"status":17,"created_at":120,"updated_at":121,"faqs":122,"releases":153},4784,"datalayer\u002Fjupyter-mcp-server","jupyter-mcp-server","🪐 🔧 Model Context Protocol (MCP) Server for Jupyter.","jupyter-mcp-server 是一款专为人工智能助手设计的桥梁工具，旨在让 AI 能够实时连接并操控 Jupyter Notebook 环境。它基于模型上下文协议（MCP）构建，解决了传统 AI 无法直接执行代码、查看运行结果或动态调整分析策略的痛点，实现了从“静态代码生成”到“动态交互式编程”的跨越。\n\n这款工具特别适合数据科学家、AI 研究人员以及希望提升开发效率的程序员使用。通过它，AI 助手不仅能读取笔记本中的代码和数据，还能实际运行单元格、根据报错信息自动修正代码，并直观地展示图表、图像等多模态输出结果。其独特的技术亮点在于具备“上下文感知”能力，能理解整个笔记本的逻辑脉络，支持在多个笔记本间无缝切换，并集成了可观测性系统以便追踪执行过程。无论是本地部署、JupyterHub 集群还是云端环境，jupyter-mcp-server 都能灵活适配，并与 Claude Desktop、Cursor 等主流 AI 客户端完美兼容，让智能数据分析变得更加流畅自然。","\u003C!--\n  ~ Copyright (c) 2024- Datalayer, Inc.\n  ~\n  ~ BSD 3-Clause License\n-->\n\n[![Datalayer](https:\u002F\u002Fimages.datalayer.io\u002Fbrand\u002Flogos\u002Fdatalayer-horizontal.svg)](https:\u002F\u002Fdatalayer.io)\n\n[![Become a Sponsor](https:\u002F\u002Fimg.shields.io\u002Fstatic\u002Fv1?label=Become%20a%20Sponsor&message=%E2%9D%A4&logo=GitHub&style=flat&color=1ABC9C)](https:\u002F\u002Fgithub.com\u002Fsponsors\u002Fdatalayer)\n\n\u003Cdiv align=\"center\">\n\n\u003C!-- omit in toc -->\n\n# 🪐🔧 Jupyter MCP Server\n\n**An [MCP](https:\u002F\u002Fmodelcontextprotocol.io) server developed for AI to connect and manage [Jupyter](https:\u002F\u002Fjupyter.org) Notebooks in real-time**\n\n*Developed by [Datalayer](https:\u002F\u002Fgithub.com\u002Fdatalayer)*\n\n[![PyPI - Version](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fjupyter-mcp-server?style=for-the-badge&logo=pypi&logoColor=white)](https:\u002F\u002Fpypi.org\u002Fproject\u002Fjupyter-mcp-server)\n[![Total PyPI downloads](https:\u002F\u002Fimg.shields.io\u002Fpepy\u002Fdt\u002Fjupyter-mcp-server?style=for-the-badge&logo=python&logoColor=white)](https:\u002F\u002Fpepy.tech\u002Fproject\u002Fjupyter-mcp-server)\n[![Docker Pulls](https:\u002F\u002Fimg.shields.io\u002Fdocker\u002Fpulls\u002Fdatalayer\u002Fjupyter-mcp-server?style=for-the-badge&logo=docker&logoColor=white&color=2496ED)](https:\u002F\u002Fhub.docker.com\u002Fr\u002Fdatalayer\u002Fjupyter-mcp-server)\n[![License](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-BSD_3--Clause-blue?style=for-the-badge&logo=open-source-initiative&logoColor=white)](https:\u002F\u002Fopensource.org\u002Flicenses\u002FBSD-3-Clause)\n\n\n![Jupyter MCP Server Demo](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fdatalayer_jupyter-mcp-server_readme_7e0ba4289c27.gif)\n\n\u003C\u002Fdiv>\n\n> [!IMPORTANT]\n> **Breaking change in v1.0.0:** You must configure `MCP_TOKEN` in your MCP client setup.\n> \n> For setup details, see: https:\u002F\u002Fjupyter-mcp-server.datalayer.tech\u002Fproviders\u002Fjupyter-streamable-http-standalone\u002F#3-configure-your-mcp-client\n\n> [!NOTE]\n> **We Need Your Feedback!**\n> \n> We're actively developing support for **JupyterHub** and **Google Colab** deployments. If you're using or planning to use Jupyter MCP Server with these platforms, we'd love to hear from you!\n> \n> - 🏢 **JupyterHub users**: Share your deployment setup and requirements\n> - 🌐 **Google Colab users**: Help us understand your use cases and workflows\n> \n> Join the conversation in our [Community page](https:\u002F\u002Fjupyter-mcp-server.datalayer.tech\u002Fcommunity) - your feedback will help us prioritize features and ensure these integrations work seamlessly for your needs.\n\n## 📖 Table of Contents\n\n- [Key Features](#-key-features)\n- [MCP Overview](#-mcp-overview)\n- [Getting Started](#-getting-started)\n- [Best Practices](#-best-practices)\n- [Contributing](#-contributing)\n- [Resources](#-resources)\n\n## 🚀 Key Features\n\n- ⚡ **Real-time control:** Instantly view notebook changes as they happen.\n- 🔁 **Smart execution:** Automatically adjusts when a cell run fails thanks to cell output feedback.\n- 🧠 **Context-aware:** Understands the entire notebook context for more relevant interactions.\n- 📊 **Multimodal support:** Support different output types, including images, plots, and text.\n- 📚 **Multi-notebook support:** Seamlessly switch between multiple notebooks.\n- 🎨 **JupyterLab integration:** Enhanced UI integration like automatic notebook opening.\n- 🤝 **MCP-compatible:** Works with any MCP client, such as Claude Desktop, Cursor, Windsurf, and more.\n- 🔍 **Observability:** Built-in hook system with OpenTelemetry integration for tracing tool calls and kernel executions.\n\nCompatible with any Jupyter deployment (local, JupyterHub, ...) and with [Datalayer](https:\u002F\u002Fdatalayer.ai) hosted Notebooks.\n\n\n## 🔧 MCP Overview\n\n### 🔧 Tools Overview\n\nThe server provides a rich set of tools for interacting with Jupyter notebooks, categorized as follows. \nFor more details on each tool, their parameters, and return values, please refer to the [official Tools documentation](https:\u002F\u002Fjupyter-mcp-server.datalayer.tech\u002Ftools).\n\n\n#### Server Management Tools\n\n| Name             | Description                                                                                |\n| :--------------- | :----------------------------------------------------------------------------------------- |\n| `list_files`     | List files and directories in the Jupyter server's file system.                            |\n| `list_kernels`   | List all available and running kernel sessions on the Jupyter server.                      |\n| `connect_to_jupyter` | Connect to a Jupyter server dynamically without restarting the MCP server. *Not available when running as Jupyter extension. Useful for switching servers dynamically or avoiding hardcoded configuration.* [Read more](https:\u002F\u002Fjupyter-mcp-server.datalayer.tech\u002Freference\u002Ftools\u002F#3-connect_to_jupyter) |\n\n#### Multi-Notebook Management Tools\n\n| Name               | Description                                                                              |\n| :----------------- | :--------------------------------------------------------------------------------------- |\n| `use_notebook`     | Connect to a notebook file, create a new one, or switch between notebooks.               |\n| `list_notebooks`   | List all notebooks available on the Jupyter server and their status                      |\n| `restart_notebook` | Restart the kernel for a specific managed notebook.                                      |\n| `unuse_notebook`   | Disconnect from a specific notebook and release its resources.                           |\n| `read_notebook`    | Read notebook cells source content with brief or detailed format options.                |\n\n#### Cell Operations and Execution Tools\n\n| Name                       | Description                                                                      |\n| :------------------------- | :------------------------------------------------------------------------------- |\n| `read_cell`                | Read the full content (Metadata, Source and Outputs) of a single cell.           |\n| `insert_cell`              | Insert a new code or markdown cell at a specified position.                      |\n| `delete_cell`              | Delete a cell at a specified index.                                              |\n| `overwrite_cell_source`    | Overwrite the source code of an existing cell.                                   |\n| `execute_cell`             | Execute a cell with timeout, supports multimodal output including images.        |\n| `insert_execute_code_cell` | Insert a new code cell and execute it in one step.                               |\n| `execute_code`             | Execute code directly in the kernel, supports magic commands and shell commands. |\n\n#### JupyterLab Integration\n\n*Available only when JupyterLab mode is enabled. It is enabled by default.*\n\nWhen running in JupyterLab mode, Jupyter MCP Server integrates with [jupyter-mcp-tools](https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-tools) to expose additional JupyterLab commands as MCP tools. By default, the following tools are enabled:\n\n| Name                          | Description                                                                        |\n| :---------------------------- | :--------------------------------------------------------------------------------- |\n| `notebook_run-all-cells`      | Execute all cells in the current notebook sequentially                             |\n| `notebook_get-selected-cell`  | Get information about the currently selected cell                                   |\n\n\u003Cdetails>\n\u003Csummary>\u003Cstrong>📚 Learn how to customize additional tools\u003C\u002Fstrong>\u003C\u002Fsummary>\n\nYou can now customize which tools from `jupyter-mcp-tools` are available using the `allowed_jupyter_mcp_tools` configuration parameter. This allows you to enable additional notebook operations, console commands, file management tools, and more.\n\n```bash\n# Example: Enable additional tools via command-line\njupyter lab --port 4040 --IdentityProvider.token MY_TOKEN --JupyterMCPServerExtensionApp.allowed_jupyter_mcp_tools=\"notebook_run-all-cells,notebook_get-selected-cell,notebook_append-execute,console_create\"\n```\n\nFor the complete list of available tools and detailed configuration instructions, please refer to the [Additional Tools documentation](https:\u002F\u002Fjupyter-mcp-server.datalayer.tech\u002Freference\u002Ftools-additional).\n\n\u003C\u002Fdetails>\n\n### 📝 Prompt Overview\n\nThe server also supports [prompt feature](https:\u002F\u002Fmodelcontextprotocol.io\u002Fspecification\u002F2025-06-18\u002Fserver\u002Fprompts) of MCP, providing a easy way for user to interact with Jupyter notebooks.\n\n| Name           | Description                                                                        |\n| :------------- | :--------------------------------------------------------------------------------- |\n| `jupyter-cite` | Cite specific cells from specified notebook (like `@` in Coding IDE or CLI)        |\n\nFor more details on each prompt, their input parameters, and return content, please refer to the [official Prompt documentation](https:\u002F\u002Fjupyter-mcp-server.datalayer.tech\u002Freference\u002Fprompts).\n\n## 🏁 Getting Started\n\nFor comprehensive setup instructions—including `Streamable HTTP` transport, running as a Jupyter Server extension and advanced configuration—check out [our documentation](https:\u002F\u002Fjupyter-mcp-server.datalayer.tech\u002F). Or, get started quickly with `JupyterLab` and `STDIO` transport here below.\n\n### 1. Set Up Your Environment\n\n```bash\npip install jupyterlab==4.4.1 jupyter-collaboration==4.0.2 jupyter-mcp-tools>=0.1.4 ipykernel\npip uninstall -y pycrdt datalayer_pycrdt\npip install datalayer_pycrdt==0.12.17\n```\n\n> [!TIP]\n> To confirm your environment is correctly configured:\n> 1. Open a notebook in JupyterLab\n> 2. Type some content in any cell (code or markdown)\n> 3. Observe the tab indicator: you should see an \"×\" appear next to the notebook name, indicating unsaved changes\n> 4. Wait a few seconds—the \"×\" should automatically change to a \"●\" without manually saving\n> \n> This automatic saving behavior confirms that the real-time collaboration features are working properly, which is essential for MCP server integration.\n\n### 2. Start JupyterLab\n\n```bash\n# Start JupyterLab on port 8888, allowing access from any IP and setting a token\njupyter lab --port 8888 --IdentityProvider.token MY_TOKEN --ip 0.0.0.0\n```\n\n> [!NOTE]\n> If you are running notebooks through JupyterHub instead of JupyterLab as above, refer to our [JupyterHub setup guide](https:\u002F\u002Fjupyter-mcp-server.datalayer.tech\u002F\u002Fproviders\u002Fjupyterhub-streamable-http\u002F).\n\n### 3. Configure Your Preferred MCP Client\n\nNext, configure your MCP client to connect to the server. We offer two primary methods—choose the one that best fits your needs:\n\n- **📦 Using `uvx` (Recommended for Quick Start):** A lightweight and fast method using `uv`. Ideal for local development and first-time users.\n- **🐳 Using `Docker` (Recommended for Production):** A containerized approach that ensures a consistent and isolated environment, perfect for production or complex setups.\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>📦 Using uvx (Quick Start)\u003C\u002Fb>\u003C\u002Fsummary>\n\nFirst, install `uv`:\n\n```bash\npip install uv\nuv --version\n# should be 0.6.14 or higher\n```\n\nSee more details on [uv installation](https:\u002F\u002Fdocs.astral.sh\u002Fuv\u002Fgetting-started\u002Finstallation\u002F).\n\nThen, configure your client:\n\n```json\n{\n  \"mcpServers\": {\n    \"jupyter\": {\n      \"command\": \"uvx\",\n      \"args\": [\"jupyter-mcp-server@latest\"],\n      \"env\": {\n        \"JUPYTER_URL\": \"http:\u002F\u002Flocalhost:8888\",\n        \"JUPYTER_TOKEN\": \"MY_TOKEN\",\n        \"ALLOW_IMG_OUTPUT\": \"true\"\n      }\n    }\n  }\n}\n```\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>🐳 Using Docker (Production)\u003C\u002Fb>\u003C\u002Fsummary>\n\n**On macOS and Windows:**\n\n```json\n{\n  \"mcpServers\": {\n    \"jupyter\": {\n      \"command\": \"docker\",\n      \"args\": [\n        \"run\", \"-i\", \"--rm\",\n        \"-e\", \"JUPYTER_URL\",\n        \"-e\", \"JUPYTER_TOKEN\",\n        \"-e\", \"ALLOW_IMG_OUTPUT\",\n        \"datalayer\u002Fjupyter-mcp-server:latest\"\n      ],\n      \"env\": {\n        \"JUPYTER_URL\": \"http:\u002F\u002Fhost.docker.internal:8888\",\n        \"JUPYTER_TOKEN\": \"MY_TOKEN\",\n        \"ALLOW_IMG_OUTPUT\": \"true\"\n      }\n    }\n  }\n}\n```\n\n**On Linux:**\n\n```json\n{\n  \"mcpServers\": {\n    \"jupyter\": {\n      \"command\": \"docker\",\n      \"args\": [\n        \"run\", \"-i\", \"--rm\",\n        \"-e\", \"JUPYTER_URL\",\n        \"-e\", \"JUPYTER_TOKEN\",\n        \"-e\", \"ALLOW_IMG_OUTPUT\",\n        \"--network=host\",\n        \"datalayer\u002Fjupyter-mcp-server:latest\"\n      ],\n      \"env\": {\n        \"JUPYTER_URL\": \"http:\u002F\u002Flocalhost:8888\",\n        \"JUPYTER_TOKEN\": \"MY_TOKEN\",\n        \"ALLOW_IMG_OUTPUT\": \"true\"\n      }\n    }\n  }\n}\n```\n\n\u003C\u002Fdetails>\n\n> [!TIP]\n>\n> 1. **Port Configuration**: Ensure the `port` in your Jupyter URLs matches the one used in the `jupyter lab` command. For simplified config, set this in `JUPYTER_URL`.\n> 1. **Server Separation**: Use `JUPYTER_URL` when both services are on the same server, or set individual variables for advanced deployments. The different URL variables exist because some deployments separate notebook storage (`DOCUMENT_URL`) from kernel execution (`RUNTIME_URL`).\n> 1. **Authentication**: In most cases, document and runtime services use the same authentication token. Use `JUPYTER_TOKEN` for simplified config or set `DOCUMENT_TOKEN` and `RUNTIME_TOKEN` individually for different credentials.\n> 1. **Notebook Path**: The `DOCUMENT_ID` parameter specifies the path to the notebook the MCP client default to connect. It should be relative to the directory where JupyterLab was started. If you omit `DOCUMENT_ID`, the MCP client can automatically list all available notebooks on the Jupyter server, allowing you to select one interactively via your prompts.\n> 1. **Image Output**: Set `ALLOW_IMG_OUTPUT` to `false` if your LLM does not support mutimodel understanding.\n\nFor detailed instructions on configuring various MCP clients—including [Claude Desktop](https:\u002F\u002Fjupyter-mcp-server.datalayer.tech\u002Fclients\u002Fclaude_desktop), [VS Code](https:\u002F\u002Fjupyter-mcp-server.datalayer.tech\u002Fclients\u002Fvscode), [Cursor](https:\u002F\u002Fjupyter-mcp-server.datalayer.tech\u002Fclients\u002Fcursor), [Cline](https:\u002F\u002Fjupyter-mcp-server.datalayer.tech\u002Fclients\u002Fcline), and [Windsurf](https:\u002F\u002Fjupyter-mcp-server.datalayer.tech\u002Fclients\u002Fwindsurf) — see the [Clients documentation](https:\u002F\u002Fjupyter-mcp-server.datalayer.tech\u002Fclients).\n\n## ✅ Best Practices\n\n- Interact with LLMs that supports multimodal input (like Gemini 2.5 Pro) to fully utilize advanced multimodal understanding capabilities.\n- Use a MCP client that supports returning image data and can parse it (like Cursor, Gemini CLI, etc.), as some clients may not support this feature.\n- Break down complex task (like the whole data science workflow) into multiple sub-tasks (like data cleaning, feature engineering, model training, model evaluation, etc.) and execute them step-by-step.\n- Provide clearly structured prompts and rules (👉 Visit our [Prompt Templates](prompt\u002FREADME.md) to get started)\n- Provide as much context as possible (like already installed packages, field explanations for existing datasets, current working directory, detailed task requirements, etc.).\n\n## 🤝 Contributing\n\nWe welcome contributions of all kinds! Here are some examples:\n\n- 🐛 Bug fixes\n- 📝 Improvements to existing features\n- 🔧 New feature development\n- 📚 Documentation improvements and prompt templates\n\nFor detailed instructions on how to get started with development and submit your contributions, please see our [**Contributing Guide**](CONTRIBUTING.md).\n\n### Our Contributors\n\n[![Contributors](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fdatalayer_jupyter-mcp-server_readme_253f41f6805d.png)](https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fgraphs\u002Fcontributors)\n\n## 📚 Resources\n\nLooking for blog posts, videos, or other materials about Jupyter MCP Server?\n\n👉 Visit the [**Resources section**](https:\u002F\u002Fjupyter-mcp-server.datalayer.tech\u002Fresources) in our documentation for more!\n\n[![Star History Chart](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fdatalayer_jupyter-mcp-server_readme_149be43f722c.png)](https:\u002F\u002Fstar-history.com\u002F#datalayer\u002Fjupyter-mcp-server&type=Date)\n\n______________________________________________________________________\n\n\u003Cdiv align=\"center\">\n\n**If this project is helpful to you, please give us a ⭐️**\n\nMade with ❤️ by [Datalayer](https:\u002F\u002Fgithub.com\u002Fdatalayer)\n\n\u003C\u002Fdiv>\n\n## Hosted deployment\n\nA hosted deployment is available on [Fronteir AI](https:\u002F\u002Ffronteir.ai\u002Fmcp\u002Fdatalayer-jupyter-mcp-server).\n\n","\u003C!--\n  ~ Copyright (c) 2024- Datalayer, Inc.\n  ~\n  ~ BSD 3-Clause License\n-->\n\n[![Datalayer](https:\u002F\u002Fimages.datalayer.io\u002Fbrand\u002Flogos\u002Fdatalayer-horizontal.svg)](https:\u002F\u002Fdatalayer.io)\n\n[![成为赞助者](https:\u002F\u002Fimg.shields.io\u002Fstatic\u002Fv1?label=Become%20a%20Sponsor&message=%E2%9D%A4&logo=GitHub&style=flat&color=1ABC9C)](https:\u002F\u002Fgithub.com\u002Fsponsors\u002Fdatalayer)\n\n\u003Cdiv align=\"center\">\n\n\u003C!-- omit in toc -->\n\n# 🪐🔧 Jupyter MCP 服务器\n\n**一款为 AI 开发的 [MCP](https:\u002F\u002Fmodelcontextprotocol.io) 服务器，用于实时连接和管理 [Jupyter](https:\u002F\u002Fjupyter.org) 笔记本**\n\n*由 [Datalayer](https:\u002F\u002Fgithub.com\u002Fdatalayer) 开发*\n\n[![PyPI - 版本](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fjupyter-mcp-server?style=for-the-badge&logo=pypi&logoColor=white)](https:\u002F\u002Fpypi.org\u002Fproject\u002Fjupyter-mcp-server)\n[![PyPI 总下载量](https:\u002F\u002Fimg.shields.io\u002Fpepy\u002Fdt\u002Fjupyter-mcp-server?style=for-the-badge&logo=python&logoColor=white)](https:\u002F\u002Fpepy.tech\u002Fproject\u002Fjupyter-mcp-server)\n[![Docker 拉取次数](https:\u002F\u002Fimg.shields.io\u002Fdocker\u002Fpulls\u002Fdatalayer\u002Fjupyter-mcp-server?style=for-the-badge&logo=docker&logoColor=white&color=2496ED)](https:\u002F\u002Fhub.docker.com\u002Fr\u002Fdatalayer\u002Fjupyter-mcp-server)\n[![许可证](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-BSD_3--Clause-blue?style=for-the-badge&logo=open-source-initiative&logoColor=white)](https:\u002F\u002Fopensource.org\u002Flicenses\u002FBSD-3-Clause)\n\n\n![Jupyter MCP 服务器演示](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fdatalayer_jupyter-mcp-server_readme_7e0ba4289c27.gif)\n\n\u003C\u002Fdiv>\n\n> [!IMPORTANT]\n> **v1.0.0 中的重大变更：** 您必须在 MCP 客户端设置中配置 `MCP_TOKEN`。\n> \n> 有关设置详情，请参阅：https:\u002F\u002Fjupyter-mcp-server.datalayer.tech\u002Fproviders\u002Fjupyter-streamable-http-standalone\u002F#3-configure-your-mcp-client\n\n> [!NOTE]\n> **我们需要您的反馈！**\n> \n> 我们正在积极开发对 **JupyterHub** 和 **Google Colab** 部署的支持。如果您正在使用或计划使用 Jupyter MCP 服务器与这些平台配合，我们非常期待听到您的意见！\n> \n> - 🏢 **JupyterHub 用户**：请分享您的部署设置和需求\n> - 🌐 **Google Colab 用户**：请帮助我们了解您的使用场景和工作流程\n> \n> 欢迎加入我们的 [社区页面](https:\u002F\u002Fjupyter-mcp-server.datalayer.tech\u002Fcommunity)，您的反馈将帮助我们确定功能优先级，并确保这些集成能够无缝满足您的需求。\n\n## 📖 目录\n\n- [关键特性](#-key-features)\n- [MCP 概述](#-mcp-overview)\n- [快速入门](#-getting-started)\n- [最佳实践](#-best-practices)\n- [贡献](#-contributing)\n- [资源](#-resources)\n\n## 🚀 关键特性\n\n- ⚡ **实时控制：** 即时查看笔记本中的更改。\n- 🔁 **智能执行：** 根据单元格输出反馈，自动调整失败的单元格运行。\n- 🧠 **上下文感知：** 理解整个笔记本的上下文，以实现更相关的交互。\n- 📊 **多模态支持：** 支持多种输出类型，包括图像、图表和文本。\n- 📚 **多笔记本支持：** 轻松切换多个笔记本。\n- 🎨 **JupyterLab 集成：** 增强的 UI 集成，例如自动打开笔记本。\n- 🤝 **MCP 兼容：** 可与任何 MCP 客户端配合使用，例如 Claude Desktop、Cursor、Windsurf 等。\n- 🔍 **可观测性：** 内置钩子系统，集成 OpenTelemetry，用于跟踪工具调用和内核执行。\n\n兼容任何 Jupyter 部署（本地、JupyterHub 等）以及由 [Datalayer](https:\u002F\u002Fdatalayer.ai) 托管的笔记本。\n\n\n## 🔧 MCP 概述\n\n### 🔧 工具概述\n\n该服务器提供了一组丰富的工具，用于与 Jupyter 笔记本进行交互，分类如下。有关每个工具的详细信息、参数和返回值，请参阅 [官方工具文档](https:\u002F\u002Fjupyter-mcp-server.datalayer.tech\u002Ftools)。\n\n\n#### 服务器管理工具\n\n| 名称             | 描述                                                                                |\n| :--------------- | :----------------------------------------------------------------------------------------- |\n| `list_files`     | 列出 Jupyter 服务器文件系统中的文件和目录。                            |\n| `list_kernels`   | 列出 Jupyter 服务器上所有可用及正在运行的内核会话。                      |\n| `connect_to_jupyter` | 动态连接到 Jupyter 服务器，无需重启 MCP 服务器。 *在作为 Jupyter 扩展运行时不可用。适用于动态切换服务器或避免硬编码配置。* [了解更多](https:\u002F\u002Fjupyter-mcp-server.datalayer.tech\u002Freference\u002Ftools\u002F#3-connect_to_jupyter) |\n\n#### 多笔记本管理工具\n\n| 名称               | 描述                                                                              |\n| :----------------- | :--------------------------------------------------------------------------------------- |\n| `use_notebook`     | 连接到某个笔记本文件、创建新笔记本或在笔记本之间切换。               |\n| `list_notebooks`   | 列出 Jupyter 服务器上所有可用的笔记本及其状态                      |\n| `restart_notebook` | 重启特定受管笔记本的内核。                                      |\n| `unuse_notebook`   | 断开与特定笔记本的连接并释放其资源。                           |\n| `read_notebook`    | 以简略或详细格式选项读取笔记本单元格的源代码内容。                |\n\n#### 单元格操作与执行工具\n\n| 名称                       | 描述                                                                      |\n| :------------------------- | :------------------------------------------------------------------------------- |\n| `read_cell`                | 读取单个单元格的完整内容（元数据、源代码和输出）。           |\n| `insert_cell`              | 在指定位置插入新的代码或 Markdown 单元格。                      |\n| `delete_cell`              | 删除指定索引处的单元格。                                              |\n| `overwrite_cell_source`    | 覆盖现有单元格的源代码。                                   |\n| `execute_cell`             | 执行单元格，支持超时设置，并可生成包括图像在内的多模态输出。        |\n| `insert_execute_code_cell` | 一步完成插入新代码单元格并执行的操作。                               |\n| `execute_code`             | 直接在内核中执行代码，支持魔法命令和 Shell 命令。                   |\n\n#### JupyterLab 集成\n\n*仅在启用 JupyterLab 模式时可用。默认已启用。*\n\n当以 JupyterLab 模式运行时，Jupyter MCP 服务器会与 [jupyter-mcp-tools](https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-tools) 集成，将额外的 JupyterLab 命令暴露为 MCP 工具。默认启用以下工具：\n\n| 名称                          | 描述                                                                        |\n| :---------------------------- | :--------------------------------------------------------------------------------- |\n| `notebook_run-all-cells`      | 依次执行当前笔记本中的所有单元格                             |\n| `notebook_get-selected-cell`  | 获取当前选中单元格的信息                                   |\n\n\u003Cdetails>\n\u003Csummary>\u003Cstrong>📚 了解如何自定义附加工具\u003C\u002Fstrong>\u003C\u002Fsummary>\n\n现在可以通过 `allowed_jupyter_mcp_tools` 配置参数来自定义哪些 `jupyter-mcp-tools` 中的工具可用。这使您可以启用额外的笔记本操作、控制台命令、文件管理工具等。\n\n```bash\n# 示例：通过命令行启用附加工具\njupyter lab --port 4040 --IdentityProvider.token MY_TOKEN --JupyterMCPServerExtensionApp.allowed_jupyter_mcp_tools=\"notebook_run-all-cells,notebook_get-selected-cell,notebook_append-execute,console_create\"\n```\n\n有关可用工具的完整列表及详细的配置说明，请参阅 [附加工具文档](https:\u002F\u002Fjupyter-mcp-server.datalayer.tech\u002Freference\u002Ftools-additional)。\n\n\u003C\u002Fdetails>\n\n### 📝 提示词概述\n\n该服务器还支持 MCP 的 [提示词功能](https:\u002F\u002Fmodelcontextprotocol.io\u002Fspecification\u002F2025-06-18\u002Fserver\u002Fprompts)，为用户提供一种与 Jupyter 笔记本交互的便捷方式。\n\n| 名称           | 描述                                                                        |\n| :------------- | :--------------------------------------------------------------------------------- |\n| `jupyter-cite` | 引用指定笔记本中的特定单元格（类似于编程 IDE 或 CLI 中的 `@`）        |\n\n有关每个提示词的详细信息、输入参数和返回内容，请参阅 [官方提示词文档](https:\u002F\u002Fjupyter-mcp-server.datalayer.tech\u002Freference\u002Fprompts)。\n\n## 🏁 开始使用\n\n如需全面的设置说明，包括 `Streamable HTTP` 传输、作为 Jupyter 服务器扩展运行以及高级配置，请查看 [我们的文档](https:\u002F\u002Fjupyter-mcp-server.datalayer.tech\u002F)。或者，您也可以通过下方的 `JupyterLab` 和 `STDIO` 传输快速开始。\n\n### 1. 设置您的环境\n\n```bash\npip install jupyterlab==4.4.1 jupyter-collaboration==4.0.2 jupyter-mcp-tools>=0.1.4 ipykernel\npip uninstall -y pycrdt datalayer_pycrdt\npip install datalayer_pycrdt==0.12.17\n```\n\n> [!TIP]\n> 若要确认您的环境是否正确配置：\n> 1. 在 JupyterLab 中打开一个笔记本\n> 2. 在任意单元格中输入一些内容（代码或 Markdown）\n> 3. 观察标签指示器：您应该看到笔记本名称旁边出现一个“×”，表示有未保存的更改\n> 4. 等待几秒钟——“×”应自动变为“●”，而无需手动保存\n> \n> 这种自动保存行为表明实时协作功能正常工作，这对于 MCP 服务器集成至关重要。\n\n### 2. 启动 JupyterLab\n\n```bash\n# 在端口 8888 上启动 JupyterLab，允许从任何 IP 访问并设置令牌\njupyter lab --port 8888 --IdentityProvider.token MY_TOKEN --ip 0.0.0.0\n```\n\n> [!NOTE]\n> 如果您是通过 JupyterHub 而不是上述 JupyterLab 来运行笔记本，请参阅我们的 [JupyterHub 设置指南](https:\u002F\u002Fjupyter-mcp-server.datalayer.tech\u002F\u002Fproviders\u002Fjupyterhub-streamable-http\u002F)。\n\n### 3. 配置您首选的 MCP 客户端\n\n接下来，配置您的 MCP 客户端以连接到服务器。我们提供两种主要方法，请选择最适合您需求的方式：\n\n- **📦 使用 `uvx`（推荐用于快速入门）：** 一种轻量级且快速的方法，使用 `uv` 工具。非常适合本地开发和首次使用的用户。\n- **🐳 使用 `Docker`（推荐用于生产环境）：** 一种容器化方案，可确保一致且隔离的环境，非常适合生产环境或复杂部署。\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>📦 使用 uvx（快速入门）\u003C\u002Fb>\u003C\u002Fsummary>\n\n首先，安装 `uv`：\n\n```bash\npip install uv\nuv --version\n# 应该是 0.6.14 或更高版本\n```\n\n更多关于 [uv 安装](https:\u002F\u002Fdocs.astral.sh\u002Fuv\u002Fgetting-started\u002Finstallation\u002F) 的详细信息。\n\n然后，配置您的客户端：\n\n```json\n{\n  \"mcpServers\": {\n    \"jupyter\": {\n      \"command\": \"uvx\",\n      \"args\": [\"jupyter-mcp-server@latest\"],\n      \"env\": {\n        \"JUPYTER_URL\": \"http:\u002F\u002Flocalhost:8888\",\n        \"JUPYTER_TOKEN\": \"MY_TOKEN\",\n        \"ALLOW_IMG_OUTPUT\": \"true\"\n      }\n    }\n  }\n}\n```\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>🐳 使用 Docker（生产环境）\u003C\u002Fb>\u003C\u002Fsummary>\n\n**在 macOS 和 Windows 上：**\n\n```json\n{\n  \"mcpServers\": {\n    \"jupyter\": {\n      \"command\": \"docker\",\n      \"args\": [\n        \"run\", \"-i\", \"--rm\",\n        \"-e\", \"JUPYTER_URL\",\n        \"-e\", \"JUPYTER_TOKEN\",\n        \"-e\", \"ALLOW_IMG_OUTPUT\",\n        \"datalayer\u002Fjupyter-mcp-server:latest\"\n      ],\n      \"env\": {\n        \"JUPYTER_URL\": \"http:\u002F\u002Fhost.docker.internal:8888\",\n        \"JUPYTER_TOKEN\": \"MY_TOKEN\",\n        \"ALLOW_IMG_OUTPUT\": \"true\"\n      }\n    }\n  }\n}\n```\n\n**在 Linux 上：**\n\n```json\n{\n  \"mcpServers\": {\n    \"jupyter\": {\n      \"command\": \"docker\",\n      \"args\": [\n        \"run\", \"-i\", \"--rm\",\n        \"-e\", \"JUPYTER_URL\",\n        \"-e\", \"JUPYTER_TOKEN\",\n        \"-e\", \"ALLOW_IMG_OUTPUT\",\n        \"--network=host\",\n        \"datalayer\u002Fjupyter-mcp-server:latest\"\n      ],\n      \"env\": {\n        \"JUPYTER_URL\": \"http:\u002F\u002Flocalhost:8888\",\n        \"JUPYTER_TOKEN\": \"MY_TOKEN\",\n        \"ALLOW_IMG_OUTPUT\": \"true\"\n      }\n    }\n  }\n}\n```\n\n\u003C\u002Fdetails>\n\n> [!TIP]\n>\n> 1. **端口配置**：请确保 Jupyter URL 中的 `port` 与 `jupyter lab` 命令中使用的端口一致。为简化配置，可在 `JUPYTER_URL` 中设置此值。\n> 1. **服务分离**：当两个服务位于同一台服务器时，可以使用 `JUPYTER_URL`；而在高级部署中，则应分别设置变量。之所以存在不同的 URL 变量，是因为某些部署会将笔记本存储（`DOCUMENT_URL`）与内核执行（`RUNTIME_URL`）分开。\n> 1. **认证**：在大多数情况下，文档服务和运行时服务使用相同的认证令牌。您可以使用 `JUPYTER_TOKEN` 进行简化配置，或者为不同凭据分别设置 `DOCUMENT_TOKEN` 和 `RUNTIME_TOKEN`。\n> 1. **笔记本路径**：`DOCUMENT_ID` 参数指定了 MCP 客户端默认连接的笔记本路径。它应相对于启动 JupyterLab 的目录。如果您省略 `DOCUMENT_ID`，MCP 客户端可以自动列出 Jupyter 服务器上所有可用的笔记本，您可以通过提示交互式地选择一个。\n> 1. **图像输出**：如果您的 LLM 不支持多模态理解，请将 `ALLOW_IMG_OUTPUT` 设置为 `false`。\n\n有关配置各种 MCP 客户端的详细说明——包括 [Claude Desktop](https:\u002F\u002Fjupyter-mcp-server.datalayer.tech\u002Fclients\u002Fclaude_desktop)、[VS Code](https:\u002F\u002Fjupyter-mcp-server.datalayer.tech\u002Fclients\u002Fvscode)、[Cursor](https:\u002F\u002Fjupyter-mcp-server.datalayer.tech\u002Fclients\u002Fcursor)、[Cline](https:\u002F\u002Fjupyter-mcp-server.datalayer.tech\u002Fclients\u002Fcline) 和 [Windsurf](https:\u002F\u002Fjupyter-mcp-server.datalayer.tech\u002Fclients\u002Fwindsurf) ——请参阅 [客户端文档](https:\u002F\u002Fjupyter-mcp-server.datalayer.tech\u002Fclients)。\n\n## ✅ 最佳实践\n\n- 与支持多模态输入的 LLM（如 Gemini 2.5 Pro）交互，以充分利用其先进的多模态理解能力。\n- 使用支持返回并解析图像数据的 MCP 客户端（如 Cursor、Gemini CLI 等），因为有些客户端可能不支持此功能。\n- 将复杂任务（如整个数据科学工作流）分解为多个子任务（如数据清洗、特征工程、模型训练、模型评估等），并逐步执行。\n- 提供结构清晰的提示和规则（👉 请访问我们的 [提示模板](prompt\u002FREADME.md) 开始）。\n- 尽可能提供更多信息（如已安装的包、现有数据集的字段解释、当前工作目录、详细的任务要求等）。\n\n## 🤝 贡献\n\n我们欢迎各种形式的贡献！以下是一些示例：\n\n- 🐛 修复 bug\n- 📝 改进现有功能\n- 🔧 开发新功能\n- 📚 改进文档和提示模板\n\n有关如何开始开发并提交贡献的详细说明，请参阅我们的 [**贡献指南**](CONTRIBUTING.md)。\n\n### 我们的贡献者\n\n[![贡献者](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fdatalayer_jupyter-mcp-server_readme_253f41f6805d.png)](https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fgraphs\u002Fcontributors)\n\n## 📚 资源\n\n正在寻找关于 Jupyter MCP Server 的博客文章、视频或其他资料吗？\n\n👉 请访问我们文档中的 [**资源板块**](https:\u002F\u002Fjupyter-mcp-server.datalayer.tech\u002Fresources)，获取更多信息！\n\n[![星标历史图](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fdatalayer_jupyter-mcp-server_readme_149be43f722c.png)](https:\u002F\u002Fstar-history.com\u002F#datalayer\u002Fjupyter-mcp-server&type=Date)\n\n______________________________________________________________________\n\n\u003Cdiv align=\"center\">\n\n**如果这个项目对您有帮助，请给我们点个 ⭐️**\n\n由 [Datalayer](https:\u002F\u002Fgithub.com\u002Fdatalayer) 用心打造 ❤️\n\n\u003C\u002Fdiv>\n\n## 托管部署\n\n托管部署已在 [Fronteir AI](https:\u002F\u002Ffronteir.ai\u002Fmcp\u002Fdatalayer-jupyter-mcp-server) 上提供。","# Jupyter MCP Server 快速上手指南\n\n**Jupyter MCP Server** 是一个基于模型上下文协议（MCP）的服务器，旨在让 AI 助手实时连接、管理和操作 Jupyter Notebook。它支持代码执行、多模态输出（图片\u002F图表）、多笔记本切换以及与 JupyterLab 的深度集成。\n\n## 1. 环境准备\n\n在开始之前，请确保您的系统满足以下要求：\n\n*   **操作系统**: Linux, macOS 或 Windows (需安装 Docker 或 Python 环境)\n*   **Python 版本**: 推荐 Python 3.9+\n*   **前置工具**:\n    *   `pip` (Python 包管理器)\n    *   `uv` (推荐的快速包管理工具，用于运行 MCP 服务)\n    *   `Docker` (可选，生产环境推荐)\n*   **Jupyter 环境**: 需要运行中的 JupyterLab 实例。\n\n> **注意**：本指南使用 `uv` 作为 MCP 客户端启动器，因为它更轻量且启动速度快。如果您尚未安装 `uv`，请先执行 `pip install uv`。\n\n## 2. 安装与配置步骤\n\n### 第一步：配置 Python 环境\n\n安装必要的 Jupyter 组件及依赖。**重要**：必须安装特定版本的 `datalayer_pycrdt` 以确保实时协作功能正常，这是 MCP 服务器工作的基础。\n\n```bash\n# 安装核心依赖\npip install jupyterlab==4.4.1 jupyter-collaboration==4.0.2 jupyter-mcp-tools>=0.1.4 ipykernel\n\n# 替换默认的 pycrdt 为 datalayer 优化版本\npip uninstall -y pycrdt datalayer_pycrdt\npip install datalayer_pycrdt==0.12.17\n```\n\n> **验证环境**：\n> 启动 JupyterLab 后打开任意笔记本，输入内容并观察标签页指示器。如果看到 `×` 自动变为 `●`（无需手动保存），说明实时协作功能已就绪。\n\n### 第二步：启动 JupyterLab\n\n启动 JupyterLab 服务，并设置访问令牌（Token）。请记下您设置的 `MY_TOKEN` 和端口号（默认为 8888）。\n\n```bash\njupyter lab --port 8888 --IdentityProvider.token MY_TOKEN --ip 0.0.0.0\n```\n\n*   `--IdentityProvider.token`: 替换为您自定义的安全令牌。\n*   `--ip 0.0.0.0`: 允许外部连接（本地开发可设为 `127.0.0.1`）。\n\n### 第三步：配置 MCP 客户端\n\n根据您的 AI 编辑器（如 Cursor, Claude Desktop, Windsurf 等）配置文件格式，添加以下配置。\n\n#### 方案 A：使用 uvx (推荐，快速启动)\n\n适用于本地开发。将以下 JSON 配置添加到您的 MCP 客户端配置文件中：\n\n```json\n{\n  \"mcpServers\": {\n    \"jupyter\": {\n      \"command\": \"uvx\",\n      \"args\": [\"jupyter-mcp-server@latest\"],\n      \"env\": {\n        \"JUPYTER_URL\": \"http:\u002F\u002Flocalhost:8888\",\n        \"JUPYTER_TOKEN\": \"MY_TOKEN\",\n        \"ALLOW_IMG_OUTPUT\": \"true\"\n      }\n    }\n  }\n}\n```\n\n#### 方案 B：使用 Docker (生产环境推荐)\n\n适用于需要环境隔离的场景。\n\n**macOS \u002F Windows:**\n```json\n{\n  \"mcpServers\": {\n    \"jupyter\": {\n      \"command\": \"docker\",\n      \"args\": [\n        \"run\", \"-i\", \"--rm\",\n        \"-e\", \"JUPYTER_URL\",\n        \"-e\", \"JUPYTER_TOKEN\",\n        \"-e\", \"ALLOW_IMG_OUTPUT\",\n        \"datalayer\u002Fjupyter-mcp-server:latest\"\n      ],\n      \"env\": {\n        \"JUPYTER_URL\": \"http:\u002F\u002Fhost.docker.internal:8888\",\n        \"JUPYTER_TOKEN\": \"MY_TOKEN\",\n        \"ALLOW_IMG_OUTPUT\": \"true\"\n      }\n    }\n  }\n}\n```\n\n**Linux:**\n请将 `JUPYTER_URL` 中的 host 改为宿主机 IP（例如 `http:\u002F\u002F172.17.0.1:8888`）。\n\n> **⚠️ 重要提示 (v1.0.0+)**：\n> 从 v1.0.0 版本起，必须在 MCP 客户端配置中正确设置 `JUPYTER_TOKEN` 环境变量，否则连接将失败。\n\n## 3. 基本使用\n\n配置完成后，重启您的 AI 编辑器或 MCP 客户端。现在您可以直接在对话中使用自然语言控制 Jupyter Notebook。\n\n### 核心功能示例\n\n*   **创建并运行代码**：\n    > \"在当前笔记本中创建一个新单元格，计算 1 到 100 的和，并绘制结果的趋势图。\"\n    > *(AI 将自动调用 `insert_execute_code_cell` 和绘图库)*\n\n*   **读取与分析**：\n    > \"读取当前笔记本的所有代码单元格，分析其中的数据清洗逻辑。\"\n    > *(AI 将调用 `read_notebook` 获取上下文)*\n\n*   **多模态交互**：\n    > \"运行这个单元格并把生成的图表显示给我看。\"\n    > *(得益于 `ALLOW_IMG_OUTPUT=true`，AI 可以直接接收并展示图片输出)*\n\n*   **引用特定内容**：\n    > \"@jupyter-cite 查看第 3 个单元格的输出结果。\"\n    > *(使用内置 Prompt 功能精准定位)*\n\n### 可用工具概览\n\nAI 将自动调用以下工具与您交互：\n*   **文件管理**: `list_files`, `list_kernels`\n*   **笔记本控制**: `use_notebook`, `restart_notebook`, `read_notebook`\n*   **单元格操作**: `execute_cell`, `insert_cell`, `overwrite_cell_source`\n*   **JupyterLab 集成**: `notebook_run-all-cells` (一键运行所有单元格)\n\n现在，您已经成功搭建了 Jupyter MCP Server，可以开始体验 AI 驱动的实时数据分析工作流了。","数据科学家小李正在利用大语言模型辅助调试一个复杂的机器学习训练 Notebook，需要频繁迭代代码并分析报错信息。\n\n### 没有 jupyter-mcp-server 时\n- **交互割裂严重**：必须手动将 Notebook 中的报错堆栈和变量状态复制粘贴到聊天窗口，AI 无法直接感知内核实时状态。\n- **调试循环低效**：每次 AI 给出修改建议后，需人工回到编辑器应用代码、重新运行单元格，再截图反馈结果，流程繁琐。\n- **上下文理解缺失**：AI 仅能基于静态文本片段回答问题，无法结合当前 Notebook 中已执行的变量、图表等多模态输出进行综合判断。\n- **多文件协作困难**：当分析涉及多个关联 Notebook 时，难以在对话中灵活切换上下文，导致逻辑断层。\n\n### 使用 jupyter-mcp-server 后\n- **实时双向连接**：jupyter-mcp-server 让 AI 直接连接 Jupyter 内核，实时读取单元格输出、变量值及绘图结果，无需任何手动复制。\n- **智能自动修正**：当代码运行失败时，AI 能立即捕获错误反馈并自动调整代码再次执行，实现“发现报错 - 修复 - 验证”的闭环自动化。\n- **全语境深度感知**：依托工具的全局上下文能力，AI 能理解整个 Notebook 的执行流，结合之前的图表和数据进行精准的多模态分析。\n- **无缝多本切换**：支持在对话中自由指挥 AI 操作不同的 Notebook 文件，轻松处理跨文件的复杂数据流水线任务。\n\njupyter-mcp-server 通过将 Jupyter 内核能力原生赋予 AI，把原本割裂的“问答 - 执行”过程转变为流畅的实时协同编程体验。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fdatalayer_jupyter-mcp-server_a926c1dd.png","datalayer","Datalayer","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fdatalayer_99be9097.png","✨ 🤖 Autonomous Agents for Data-Intensive Cases",null,"info@datalayer.ai","https:\u002F\u002Fdatalayer.ai","https:\u002F\u002Fgithub.com\u002Fdatalayer",[81,85,89,93],{"name":82,"color":83,"percentage":84},"Python","#3572A5",72,{"name":86,"color":87,"percentage":88},"Jupyter Notebook","#DA5B0B",27.3,{"name":90,"color":91,"percentage":92},"Makefile","#427819",0.7,{"name":94,"color":95,"percentage":96},"Dockerfile","#384d54",0.1,988,154,"2026-04-06T15:31:41","BSD-3-Clause",4,"Linux, macOS, Windows","未说明",{"notes":105,"python":106,"dependencies":107},"1. v1.0.0+ 版本必须在 MCP 客户端配置中设置 MCP_TOKEN。2. 推荐使用 uv 工具进行快速安装，或使用 Docker 进行生产环境部署。3. 若使用 Docker 在 macOS\u002FWindows 上运行，需将 JUPYTER_URL 设置为 host.docker.internal。4. 该工具作为 MCP 服务器运行，需配合支持 MCP 协议的客户端（如 Claude Desktop, Cursor 等）使用。5. 默认启用 JupyterLab 模式以集成更多工具。","未说明 (需支持 pip\u002Fuv)",[108,109,110,111,112],"jupyterlab==4.4.1","jupyter-collaboration==4.0.2","jupyter-mcp-tools>=0.1.4","ipykernel","datalayer_pycrdt==0.12.17",[14,13,15],[115,116,117,118,119],"jupyter","mcp-server","ai","mcp","tools","2026-03-27T02:49:30.150509","2026-04-07T10:52:01.646286",[123,128,133,138,143,148],{"id":124,"question_zh":125,"answer_zh":126,"source_url":127},21726,"使用 Claude Code 时，单元格编辑操作（插入\u002F覆盖\u002F删除）在 Jupyter Lab 界面中不生效或未持久化怎么办？","该问题已在版本 0.16.2 中修复。请升级您的 `jupyter-mcp-server` 到最新版本（例如 Docker 用户可使用 `datalayer\u002Fjupyter-mcp-server:0.16.2`）。升级后，MCP 命令的执行结果将能立即且一致地反映在 UI 和服务器端，无需重复发送指令。","https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fissues\u002F96",{"id":129,"question_zh":130,"answer_zh":131,"source_url":132},21727,"如何在同一个项目目录中动态切换多个 Notebook，而无需每次重启 Claude Code？","该功能已在最新发布的版本中实现。现在允许在同一项目目录下的多个 Notebook 文件之间进行动态切换，您不再需要在切换 Notebook 时重新启动 Claude Code。请确保您安装的是最新版本的 MCP 服务器。","https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fissues\u002F32",{"id":134,"question_zh":135,"answer_zh":136,"source_url":137},21728,"Jupyter Lab 中如何显示单元格索引（Cell Index），以便与 Agent 使用相同的语言引用特定单元格？","维护者已更新文档以解释相关逻辑，并在 `jupyter-mcp-tools` 中实现了相应功能。您可以参考官方文档 https:\u002F\u002Fjupyter-mcp-server.datalayer.tech\u002Freference\u002Ftools-additional\u002F 了解如何通过工具让 Agent 准确识别和引用特定的单元格索引，从而解决 Jupyter Lab 默认只显示执行计数 `[NN]` 导致的沟通障碍。","https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fissues\u002F172",{"id":139,"question_zh":140,"answer_zh":141,"source_url":142},21729,"MCP Server 是否支持 Rust 内核？","是的，支持。MCP Server 直接使用 Jupyter Server 中可用的任何内核。因此，只要您在 Jupyter 环境中安装了 Rust 内核（例如 `evcxr`），`jupyter-mcp-server` 就可以直接调用它来执行 Rust 代码，无需额外配置。","https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fissues\u002F128",{"id":144,"question_zh":145,"answer_zh":146,"source_url":147},21730,"是否支持在 MCP Server 中使用 Pre（前置）和 Post（后置）钩子？","是的，该功能已经就绪。开发者可以通过环境变量或命令行参数（tartlets）来配置这些钩子。此前在 Windows 上遇到的环境变量传播问题已通过添加命令行参数支持得到解决，现在 CI 测试也已通过。","https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fissues\u002F216",{"id":149,"question_zh":150,"answer_zh":151,"source_url":152},21731,"如何为常见任务（如数据清洗）创建标准化、可复用的 Prompt？","MCP Server 计划并正在实施对 `@mcp.prompt` 的支持，这将允许用户定义模块化、可复用且带参数的 Prompt。例如，可以定义一个针对“缺失值”或“异常值”处理的数据清洗 Prompt，通过参数驱动生成标准化的指令。这将简化社区贡献和共享新 Prompt 的流程（具体实现进度请参考相关 PR 或最新文档）。","https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fissues\u002F153",[154,159,164,169,174,179,184,189,194,199,204,209,214,219,224],{"id":155,"version":156,"summary_zh":157,"released_at":158},127744,"v1.0.0","## 🚀 版本 1.0.0\n\n### 🔗 链接\n\n- [PyPI](https:\u002F\u002Fpypi.org\u002Fproject\u002Fjupyter-mcp-server\u002F1.0.0\u002F)\n- [Docker Hub](https:\u002F\u002Fhub.docker.com\u002Fr\u002Fdatalayer\u002Fjupyter-mcp-server)\n\n## 变更内容\n* docs: 改进钩子与可观测性文档（跟进 #220）由 @abbbe 在 https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F233 中完成\n* 为 MCP 服务器端点添加认证功能由 @abbbe 在 https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F232 中完成\n\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fcompare\u002Fv0.23.0...v1.0.0","2026-04-03T08:44:10",{"id":160,"version":161,"summary_zh":162,"released_at":163},127745,"v0.23.0","## 🚀 版本 0.23.0\n\n### 🔗 链接\n\n- [PyPI](https:\u002F\u002Fpypi.org\u002Fproject\u002Fjupyter-mcp-server\u002F0.23.0\u002F)\n- [Docker Hub](https:\u002F\u002Fhub.docker.com\u002Fr\u002Fdatalayer\u002Fjupyter-mcp-server)\n\n## 变更内容\n* chore(deps): 更新 actions 组，由 @dependabot[bot] 在 https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F186 中进行了 2 次更新\n* 连接到 Jupyter Server 工具，由 @eleonorecharles 在 https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F192 中实现\n* 文档：allowed-tools 仅在作为 Jupyter Server 扩展运行时适用，由 @echarles 在 https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F195 中添加说明\n* Claude\u002FMCP 服务器安装程序 r7 i19，由 @ccowan190 在 https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F199 中完成\n* 修复在未激活笔记本时调用 read_cell 方法出现的晦涩错误，由 @wolframarnold 在 https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F209 中解决\n* 修复：禁用 ImageContent 工具的结构化输出，由 @davidsfeldman 在 https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F217 中完成\n* 修复多笔记本操作中的自动注册竞争条件，由 @abbbe 在 https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F221 中解决\n* 添加带有 OpenTelemetry 集成的预\u002F后钩子系统，由 @abbbe 在 https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F220 中实现\n* chore(deps): 更新 actions 组，由 @dependabot[bot] 在 https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F204 中进行了 2 次更新\n* 文档：添加 Fronteir AI 托管部署选项，由 @ElishaKay 在 https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F225 中完成\n* 添加 move_cell 工具，由 @abbbe 在 https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F226 中实现\n* 添加 edit_cell_source 工具，用于精细编辑单元格内容，由 @abbbe 在 https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F227 中完成\n* 修复主依赖中缺少 OpenTelemetry 的问题，由 @abbbe 在 https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F228 中解决\n* 在 CI 中添加裸安装烟雾测试，由 @abbbe 在 https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F230 中完成\n* 通过清理 ExecutionStack，修复 MCP 取消后 execute_cell 出现的挂起问题，由 @dimaordercapital 在 https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F231 中完成\n\n## 新贡献者\n* @ccowan190 在 https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F199 中完成了首次贡献\n* @wolframarnold 在 https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F209 中完成了首次贡献\n* @davidsfeldman 在 https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F217 中完成了首次贡献\n* @abbbe 在 https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F221 中完成了首次贡献\n* @ElishaKay 在 https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F225 中完成了首次贡献\n* @dimaordercapital 在 https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F231 中完成了首次贡献\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fcompare\u002Fv0.22.0...v0.23.0","2026-04-01T05:56:53",{"id":165,"version":166,"summary_zh":167,"released_at":168},127746,"v0.22.1","## 🚀 版本 0.22.1\n\n### 🔗 链接\n\n- [PyPI](https:\u002F\u002Fpypi.org\u002Fproject\u002Fjupyter-mcp-server\u002F0.22.1\u002F)\n- [Docker Hub](https:\u002F\u002Fhub.docker.com\u002Fr\u002Fdatalayer\u002Fjupyter-mcp-server)\n\n## 变更内容\n* chore(deps): 使用 @dependabot[bot] 的 2 次更新升级 actions 组，在 https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F186 中\n* 连接到 Jupyter 服务器工具，由 @eleonorecharles 在 https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F192 中完成\n\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fcompare\u002Fv0.22.0...v0.22.1","2026-01-16T14:34:07",{"id":170,"version":171,"summary_zh":172,"released_at":173},127747,"v0.22.0","## 🚀 版本 0.22.0\n\n### 🔗 链接\n\n- [PyPI](https:\u002F\u002Fpypi.org\u002Fproject\u002Fjupyter-mcp-server\u002F0.22.0\u002F)\n- [Docker Hub](https:\u002F\u002Fhub.docker.com\u002Fr\u002Fdatalayer\u002Fjupyter-mcp-server)\n\n## 变更内容\n* 功能：添加工具注解，以提升大模型对工具的理解，由 @triepod-ai 在 https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F185 中实现。\n* 杂项（依赖）：将 actions\u002Fcheckout 从版本 5 升级到 6，由 @dependabot[bot] 在 https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F178 中完成。\n* 文档：重构，由 @echarles 在 https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F188 中完成。\n* 可配置允许的 Jupyter MCP 工具，由 @eleonorecharles 在 https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F190 中实现。\n\n## 新贡献者\n* @triepod-ai 在 https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F185 中做出了首次贡献。\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fcompare\u002Fv0.21.2...v0.22.0","2026-01-09T12:20:47",{"id":175,"version":176,"summary_zh":177,"released_at":178},127748,"v0.21.2","## 🚀 版本 0.21.2\n\n### 🔗 链接\n\n- [PyPI](https:\u002F\u002Fpypi.org\u002Fproject\u002Fjupyter-mcp-server\u002F0.21.2\u002F)\n- [Docker Hub](https:\u002F\u002Fhub.docker.com\u002Fr\u002Fdatalayer\u002Fjupyter-mcp-server)\n\n## 变更内容\n* chore(deps): 由 @dependabot[bot] 在 https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F157 中将 actions 组依赖项升级 5 次\n* fix config propagation，由 @eleonorecharles 在 https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F182 中完成\n\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fcompare\u002Fv0.21.0...v0.21.2","2025-12-19T14:02:04",{"id":180,"version":181,"summary_zh":182,"released_at":183},127749,"v0.21.1","## 🚀 版本 0.21.1\n\n### 🔗 链接\n\n- [PyPI](https:\u002F\u002Fpypi.org\u002Fproject\u002Fjupyter-mcp-server\u002F0.21.1\u002F)\n- [Docker Hub](https:\u002F\u002Fhub.docker.com\u002Fr\u002Fdatalayer\u002Fjupyter-mcp-server)\n\n## 变更内容\n* chore(deps): 由 @dependabot[bot] 在 https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F157 中推动 actions 组的 5 处更新\n\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fcompare\u002Fv0.21.0...v0.21.1","2025-12-16T16:26:34",{"id":185,"version":186,"summary_zh":187,"released_at":188},127750,"v0.21.0","## 🚀 版本 0.21.0\n\n### 🔗 链接\n\n- [PyPI](https:\u002F\u002Fpypi.org\u002Fproject\u002Fjupyter-mcp-server\u002F0.21.0\u002F)\n- [Docker Hub](https:\u002F\u002Fhub.docker.com\u002Fr\u002Fdatalayer\u002Fjupyter-mcp-server)\n\n## 变更内容\n* 添加 `get_tool` 缓存功能，由 @eleonorecharles 在 https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F177 中实现\n\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fcompare\u002Fv0.20.1...v0.21.0","2025-11-27T13:34:25",{"id":190,"version":191,"summary_zh":192,"released_at":193},127751,"v0.20.1","## 🚀 版本 0.20.1\n\n### 🔗 链接\n\n- [PyPI](https:\u002F\u002Fpypi.org\u002Fproject\u002Fjupyter-mcp-server\u002F0.20.1\u002F)\n- [Docker Hub](https:\u002F\u002Fhub.docker.com\u002Fr\u002Fdatalayer\u002Fjupyter-mcp-server)\n\n## 变更内容\n* Ft\u002Fenv tip，由 @eleonorecharles 在 https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F168 中完成\n* 修复：基础 URL 和版权信息，由 @echarles 在 https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F170 中完成\n* 修复：增强 mcp-tools 的健壮性，由 @echarles 在 https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F171 中完成\n* 追加插入执行代码单元格功能，由 @Lazysusan01 在 https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F175 中完成\n\n## 新贡献者\n* @Lazysusan01 在 https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F175 中完成了首次贡献\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fcompare\u002Fv0.19.0...v0.20.1","2025-11-27T08:46:56",{"id":195,"version":196,"summary_zh":197,"released_at":198},127752,"v0.19.0","## 🚀 版本 0.19.0\n\n### 🔗 链接\n\n- [PyPI](https:\u002F\u002Fpypi.org\u002Fproject\u002Fjupyter-mcp-server\u002F0.19.0\u002F)\n- [Docker Hub](https:\u002F\u002Fhub.docker.com\u002Fr\u002Fdatalayer\u002Fjupyter-mcp-server)\n\n## 变更内容\n* 由 @eleonorecharles 在 https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F155 中优化文档结构\n* 由 @ChengJiale150 在 https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F159 中添加提示\u002F引用组件\n* 由 @ChengJiale150 在 https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F161 中为提示功能添加测试\n* 由 @d0nghyun 在 https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F162 中修复 use_notebook 工具中内核重复创建的 bug\n\n## 新贡献者\n* @d0nghyun 在 https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F162 中完成了首次贡献\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fcompare\u002Fv0.18.2...v0.19.0","2025-11-07T09:13:30",{"id":200,"version":201,"summary_zh":202,"released_at":203},127753,"v0.18.2","## 🚀 版本 0.18.2\n\n### 🔗 链接\n\n- [PyPI](https:\u002F\u002Fpypi.org\u002Fproject\u002Fjupyter-mcp-server\u002F0.18.2\u002F)\n- [Docker Hub](https:\u002F\u002Fhub.docker.com\u002Fr\u002Fdatalayer\u002Fjupyter-mcp-server)\n\n## 变更内容\n* 增强：由 @ChengJiale150 在 https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F150 中实现的单元格删除功能\n* 提示框：由 @ChengJiale150 在 https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F151 中进行的一般性增强\n* 更新文档和 Makefile，以使用 jupyter-url 和 jupyter-token，由 @eleonorecharles 在 https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F152 中完成\n\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fcompare\u002Fv0.18.1...v0.18.2","2025-10-30T16:06:09",{"id":205,"version":206,"summary_zh":207,"released_at":208},127754,"v0.18.1","## 🚀 Release 0.18.1\n\n### 🔗 Links\n\n- [PyPI](https:\u002F\u002Fpypi.org\u002Fproject\u002Fjupyter-mcp-server\u002F0.18.1\u002F)\n- [Docker Hub](https:\u002F\u002Fhub.docker.com\u002Fr\u002Fdatalayer\u002Fjupyter-mcp-server)\n\n## What's Changed\n* Init prompt repository by @ChengJiale150 in https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F147\n* Fix: sync error by @ChengJiale150 in https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F148\n\n\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fcompare\u002Fv0.18.0...v0.18.1","2025-10-27T16:25:59",{"id":210,"version":211,"summary_zh":212,"released_at":213},127755,"v0.18.0","## 🚀 Release 0.18.0\n\n### 🔗 Links\n\n- [PyPI](https:\u002F\u002Fpypi.org\u002Fproject\u002Fjupyter-mcp-server\u002F0.18.0\u002F)\n- [Docker Hub](https:\u002F\u002Fhub.docker.com\u002Fr\u002Fdatalayer\u002Fjupyter-mcp-server)\n\n## What's Changed\n* Ft\u002Fdocs improv by @eleonorecharles in https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F131\n* Feat: Enhance Server Manager Tools by @ChengJiale150 in https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F130\n* enhance Notebook Tools by @ChengJiale150 in https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F133\n* rename `execute_ipython` to `execute_code` by @ChengJiale150 in https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F134\n* Fix: Enable RTC mode with jupyter-collaboration to prevent WebSocket disconnections by @delphos-mike in https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F135\n* fix: better and more faster test by @ChengJiale150 in https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F137\n* use jupyter-server-client by @eleonorecharles in https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F140\n* Fix: Add RTC mode to reading tools (read_cell, read_cells, list_cells) by @delphos-mike in https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F138\n* Feat: better cell-tools by @ChengJiale150 in https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F139\n* Docs\u002Fupdate docs version by @ChengJiale150 in https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F142\n* fix the wrong type by @ChengJiale150 in https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F144\n\n## New Contributors\n* @delphos-mike made their first contribution in https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F135\n\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fcompare\u002Fv0.17.0...v0.18.0","2025-10-24T09:20:35",{"id":215,"version":216,"summary_zh":217,"released_at":218},127756,"v0.17.0","## 🚀 Release 0.17.0\r\n\r\n### 🔗 Links\r\n\r\n- [PyPI](https:\u002F\u002Fpypi.org\u002Fproject\u002Fjupyter-mcp-server\u002F0.17.0\u002F)\r\n- [Docker Hub](https:\u002F\u002Fhub.docker.com\u002Fr\u002Fdatalayer\u002Fjupyter-mcp-server)\r\n\r\n---\r\n\r\n### What's Changed\r\n\r\n* docs: enhance docs by @ChengJiale150 in https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F126\r\n* Add the tools returned by jupyter_mcp_tools by @echarles in https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fpull\u002F109\r\n\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fdatalayer\u002Fjupyter-mcp-server\u002Fcompare\u002Fv0.16.3...v0.17.0","2025-10-17T12:40:51",{"id":220,"version":221,"summary_zh":222,"released_at":223},127757,"v0.16.3","## 🚀 Release 0.16.3\n\n### 🔗 Links\n\n- [PyPI](https:\u002F\u002Fpypi.org\u002Fproject\u002Fjupyter-mcp-server\u002F0.16.3\u002F)\n- [Docker Hub](https:\u002F\u002Fhub.docker.com\u002Fr\u002Fdatalayer\u002Fjupyter-mcp-server)","2025-10-16T09:33:06",{"id":225,"version":226,"summary_zh":227,"released_at":228},127758,"v0.16.2","## 🚀 Release 0.16.2\n\n### 🔗 Links\n\n- [PyPI](https:\u002F\u002Fpypi.org\u002Fproject\u002Fjupyter-mcp-server\u002F0.16.2\u002F)\n- [Docker Hub](https:\u002F\u002Fhub.docker.com\u002Fr\u002Fdatalayer\u002Fjupyter-mcp-server)","2025-10-14T14:53:10"]