Token导航 LogoToken导航TokenDH.com
Ipython MCP logo
开发工具stdio官方级别未说明来源级核验

Ipython MCP

MCP Server

一个连接现有IPython内核的MCP服务器,允许Claude在共享的持久环境中执行代码,支持实时协作和完整IPython功能。

工具数

7

提示词数

0

GitHub Stars

1

资源数

0
代码执行PythonClaudeClaude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

gabiteodoru

提供方

gabiteodoru

最后核验

2026/5/17 20:22

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

pip install ipython-mcp

详细介绍

IPython内核MCP服务器

一个连接到现有IPython内核的MCP服务器,允许Claude在与IDE共享的持久环境中执行代码。

MCP是Anthropic创建的一个开放协议,它使AI系统能够与外部工具和数据源进行交互。虽然目前由Claude(桌面和CLI)支持,但开放标准允许其他LLM在未来采用它。

特性

  • 连接到现有的IPython内核 通过连接文件
  • 持久状态 -Claude和IDE之间共享的变量和导入
  • 完全支持IPython -魔术命令、丰富的显示等。
  • 实时协作 -你在IDE中编码,Claude可以检查/调试

Windows用户:WSL建议

⚠️ 对Windows用户很重要:为了获得最佳功能,强烈建议在WSL(Linux的Windows子系统)中运行MCP服务器和IPython内核。这确保了服务器可以中断LLM可能意外生成的无限循环和失控查询。

在Windows(WSL外部)上运行MCP服务器会禁用中断功能,这对于在人工智能辅助开发会话中逃逸有问题的代码至关重要。

需求

  • Python 3.8+
  • ipython, zmqmcp Python包

快速开始

对于首次使用的用户,最快的入门方法是:

  1. 启动IPython内核:
   ipython kernel
  1. 将ipython mcp添加到Claude CLI:
   claude mcp add ipython-kernel "uv run ipython_mcp/server.py"
  1. 开始使用Claude CLI:
   claude

然后连接到内核:

   > connect to my ipython kernel using connection file ~/.local/share/jupyter/runtime/kernel-12345.json

   ● ipython-kernel:connect_to_kernel (MCP)(connection_file: "~/.local/share/jupyter/runtime/kernel-12345.json")
     ⎿  ✅ Connected to IPython kernel at 127.0.0.1:5555

   > execute x = 42; print(f"x = {x}")

   ● ipython-kernel:execute_code (MCP)(code: "x = 42; print(f'x = {x}')")
     ⎿  x = 42

安装

轻量级安装(仅限Claude CLI)

直接使用uv运行(无需安装pip,启动时可能会变慢;最好先尝试一下):

claude mcp add ipython-kernel "uv run ipython_mcp/server.py"

完整安装

pip(建议经常使用)

pip install ipython-mcp

*注意:考虑使用虚拟环境来避免依赖冲突:*

python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate
pip install ipython-mcp

添加到Claude CLI

安装后:

claude mcp add ipython-kernel ipython-mcp

添加到Claude桌面

添加到您的Claude Desktop配置文件中:

{
  "mcpServers": {
    "ipython-kernel": {
      "command": "ipython-mcp"
    }
  }
}

对于基于紫外线的安装:

{
  "mcpServers": {
    "ipython-kernel": {
      "command": "uv",
      "args": [
        "--directory",
        "/absolute/path/to/ipython-mcp",
        "run",
        "ipython_mcp/server.py"
      ]
    }
  }
}

用法

启动IPython内核

选项1:使用演示连接文件(建议用于测试)

ipython kernel --ConnectionFileMixin.connection_file=~/ipython-mcp/demo_connection.json

这使用了可预测的端口(5555-5559),使连接变得容易。

选项2:基本内核启动

ipython kernel

IPython将创建一个随机连接文件。注意输出路径:

[IPKernelApp] Connection file: /home/user/.local/share/jupyter/runtime/kernel-12345.json

选项3:从IDE

  • 大多数支持Jupyter的IDE都会自动启动内核
  • 在IDE设置/状态中查找内核连接信息

选项4:使用自定义连接文件

ipython kernel --ConnectionFileMixin.connection_file=my_connection.json

查找连接文件

连接文件通常位于:

# List active kernels
ls ~/.local/share/jupyter/runtime/

# Example files:
# kernel-12345.json
# kernel-67890.json

工具

  1. start_kernel(connection_file=None) -启动新的IPython内核并自动连接
  2. connect_to_kernel(connection_file=None) -连接到现有的IPython内核
  3. execute_code(code) -在连接的内核上执行Python代码
  4. kernel_status() -检查当前连接状态
  5. disconnect_kernel() -与当前内核断开连接

连接文件解析

这些工具使用此优先级查找连接文件:

  1. 显式参数 - connection_file 参数(最高优先级)
  2. 环境变量 - IPYTHON_MCP_CONNECTION
  3. 包默认值 -内置 default_connection.json (端口5555-5559)

环境变量

  • IPYTHON_MCP_CONNECTION -未指定时使用的默认连接文件路径

工作流示例

最简单的方法-让MCP服务器处理一切:

# In Claude CLI, start a kernel using package defaults
> start a new ipython kernel

# The tool will:
# 1. Use built-in default_connection.json (ports 5555-5559)
# 2. Start IPython kernel in background
# 3. Auto-connect to it
# 4. Return connection details

# Now execute code
> run: import pandas as pd; df = pd.DataFrame({'a': [1,2,3]})

使用环境变量:

# Set your preferred connection file
export IPYTHON_MCP_CONNECTION=/path/to/my/connection.json

# In Claude CLI
> start a new ipython kernel
# Will use your env var connection file

手动启动内核(传统方法):

# 1. Start kernel manually
ipython kernel

# 2. In Claude CLI, connect to the kernel  
> connect to my ipython kernel using ~/.local/share/jupyter/runtime/kernel-12345.json

# 3. Execute code
> run: import pandas as pd; df = pd.DataFrame({'a': [1,2,3]})

IDE集成

该项目的设计 Spyder IDE 由于其独特的功能:

  • 内联图 -图形直接在IDE中显示,无需单独的窗口
  • 灵活的代码执行 -无缝运行单个行、选择或整个文件
  • 集成IPython控制台 -没有困扰其他IDE的复制/粘贴工件
  • 变量浏览器 -实时检查Claude和IDE之间的共享状态

虽然其他IDE可以与此MCP服务器配合使用,但Spyder为数据科学工作流程提供了流畅的体验,您需要在同一个持久的Python环境中进行交互式编码和人工智能辅助。

安全考虑

此MCP服务器使用Jupyter的标准连接协议和HMAC-SHA256消息签名。

连接文件安全

如果你在本地使用这个 (单用户机器):

  • 带有演示密钥的默认连接文件(demo-key-12345)很好
  • 仅绑定到本地主机(127.0.0.1)-无法从网络访问
  • 使用可预测的端口和密钥简化设置和调试

但如果您需要增强安全性 (共享机器、网络访问、生产):

# Generate a secure connection file with random key
python -c "
import json, secrets
conn = {
    'shell_port': 5555, 'iopub_port': 5556, 'stdin_port': 5557,
    'control_port': 5558, 'hb_port': 5559, 'ip': '127.0.0.1',
    'key': secrets.token_hex(32), 'transport': 'tcp',
    'signature_scheme': 'hmac-sha256', 'kernel_name': ''
}
print(json.dumps(conn, indent=2))
" > secure_connection.json

# Use your secure connection file (via env var or explicit parameter)
export IPYTHON_MCP_CONNECTION=secure_connection.json
ipython kernel --ConnectionFileMixin.connection_file=secure_connection.json

附加安全措施:

  • 设置限制性文件权限: chmod 600 your_connection.json
  • 使用不同的端口以避免冲突
  • 永远不要将带有真实密钥的连接文件提交给版本控制
  • 如果绑定到非本地主机地址,请考虑防火墙规则

WSL/Windows集成

在Windows上使用Claude CLI(在WSL中运行)时,您可能希望在Windows端运行IPython内核,同时将MCP服务器保持在WSL中。这允许您使用Windows Python环境(如Miniconda),同时仍然可以从Claude CLI访问它们。

从WSL启动Windows IPython内核:

# Using PowerShell to start kernel in background
powershell.exe -Command "Start-Process -WindowStyle Hidden cmd -ArgumentList '/c', 'C:\Users\\miniconda3\Scripts\activate.bat C:\Users\\miniconda3 && python -m ipykernel_launcher -f 
'"

哪里 可以是:

  • 您自己的连接文件: \\\\wsl.localhost\\Ubuntu\\home\\\\my_connection.json
  • 包默认值(如果WSL上安装了pip): \\\\wsl.localhost\\Ubuntu\\home\\\\.local\\lib\\python3.x\\site-packages\\ipython_mcp\\default_connection.json
  • 开发版本: \\\\wsl.localhost\\Ubuntu\\home\\\\ipython-mcp\\src\\ipython_mcp\\default_connection.json

这种方法:

  • 激活您的Windows Miniconda环境
  • 使用共享连接文件启动IPython内核
  • 在隐藏的背景窗口中运行
  • 允许基于WSL的Claude CLI连接到Windows Python环境

WSL2端口通信(Windows用户)

*如果您不在Windows上,请跳过此部分。*

由于Claude CLI仅在Windows上是WSL,但您可能希望使用Windows Python环境或IDE,因此您需要在WSL2和Windows之间进行适当的端口通信。

.wslconfig文件设置

地点: C:\Users\{YourUsername}\.wslconfig

添加镜像网络配置:

# Mirrored networking mode for seamless port communication
networkingMode=mirrored
dnsTunneling=true
firewall=true
autoProxy=true

重新启动WSL2

从Windows PowerShell/CMD运行(不是从WSL中运行):

wsl --shutdown
# Wait a few seconds, then start WSL again

镜像网络提供了什么

  • ✅ 双向直接本地主机通信
  • ✅ 无需手动端口转发
  • ✅ 更好的VPN兼容性
  • ✅ 简化的网络连接(Windows和WSL2共享网络接口)
  • ✅ 自动处理防火墙规则

测试端口通信

测试WSL2→ Windows(本地主机):

# In WSL2, test connection to Windows IPython kernel
python -c "import zmq; ctx = zmq.Context(); sock = ctx.socket(zmq.REQ); sock.connect('tcp://127.0.0.1:5555'); print('Connection successful')"

测试窗口→ WSL2(本地主机):

# In Windows, test connection to WSL2 service
python -c "import zmq; ctx = zmq.Context(); sock = ctx.socket(zmq.REQ); sock.connect('tcp://127.0.0.1:5555'); print('Connection successful')"

镜像网络的已知局限性

  1. 仅本地主机服务:某些服务可能未完全镜像
  2. mDNS不起作用 在镜像模式下
  3. 一些Docker配置 可能有问题
  4. 需要Windows 11 22H2+ (建筑22621+)

建筑

此MCP服务器充当 在Claude和现有的IPython内核之间:

  • 克劳德MCP服务器IPython内核您的IDE
  • 各方共享相同的持久Python环境
  • 变量、导入和状态在所有连接中持续存在
  • 使用标准的Jupyter消息传递协议(ZMQ)进行通信

责任界限

MCP服务器管理:

  • 通过ZMQ套接字连接到现有内核
  • 消息格式和协议合规性
  • 代码执行请求和响应处理

用户管理:

  • 内核生命周期(启动、停止、监控)
  • 连接文件创建和安全
  • 内核配置和环境设置

为什么要分开?

  • 灵活性:以您喜欢的方式启动内核(CLI、IDE、Jupyter等)
  • 持久性:内核可以超过MCP连接,并在工具之间共享
  • 控制:您决定内核配置、环境和生命周期
  • 简洁:MCP服务器侧重于通信,而不是流程管理

start_kernel 工具作为 便利助手 -不是要求。许多用户更喜欢通过IDE、Jupyter或自定义脚本启动内核。

内核中断和关闭

IPython内核中断模式

IPython内核支持两种不同的中断模式,这两种模式决定了客户端如何停止运行代码:

1.信号模式(默认)

  • 使用操作系统信号(Unix上的SIGINT,Windows上的等效信号)
  • 只有直接向内核进程发送信号才能中断执行
  • 忽略通过Jupyter协议发送中断请求的IDE客户端
  • 这就是为什么IDE中的CTRL+C通常不起作用,但内核窗口中的CTRL+C却起作用的原因

2.消息模式

  • 用途 interrupt_request 通过控制套接字(Jupyter协议)发送消息
  • IDE客户端可以通过标准Jupyter协议消息中断
  • 直接向进程发送操作系统信号可能会被忽略
  • 必须在内核的kernelspec中配置 "interrupt_mode": "message"

实现

此MCP服务器实现了 双重方法 它适用于两种中断模式:

方法1:Jupyter协议(第一次尝试)

  • 发送 interrupt_request 通过控制套接字发送消息
  • 适用于配置为的内核 interrupt_mode: "message"
  • 干净、符合协议的方法

方法2:OS信号回退

  • 用途 psutil 将信号情报直接发送到内核进程
  • 适用于默认内核,使用 interrupt_mode: "signal"
  • 处理99%的标准IPython安装
  • 局限性:信号情报功能在以下情况下禁用:

- MCP服务器在Windows上运行(WSL之外) - MCP服务器和IPython内核在WSL/Windows划分的两侧运行

中断工具首先尝试控制套接字方法,然后在需要时回退到直接SIGINT。

可用工具

  • interrupt_kernel() -使用双方法停止当前运行的代码
  • shutdown_kernel() -通过Jupyter协议优雅地关闭内核,并强制终止回退

这种方法确保了跨不同配置和平台的可靠内核管理,而不需要用户修改其内核设置。

已知限制

内核中断(SIGINT)限制

  • Windows平台:MCP服务器在Windows上运行时(WSL之外)禁用内核中断
  • 跨平台设置:当MCP服务器和IPython内核在WSL/Windows划分的相对侧运行时,禁用内核中断
  • 影响:在这些配置中,LLM无法自动逃脱无限循环或取消失控代码

目录标签

目录标签

代码执行PythonClaudeIPython集成本地部署AI开发工具实时协作IDE扩展

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

7

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP