Jupyter MCP Server
by datalayer
# Copyright (c) 2023-2024 Datalayer, Inc.
#
# BSD 3-Clause License
[build-system]
requires = ["hatchling~=1.21"]
build-backend = "hatchling.build"
[project]
name = "jupyter_mcp_server"
authors = [{ name = "Datalayer", email = "info@datalayer.io" }]
dynamic = ["version"]
readme = "README.md"
requires-python = ">=3.10"
keywords = ["Jupyter"]
classifiers = [
"Intended Audience :: Developers",
"Intended Audience :: System Administrators",
"License :: OSI Approved :: BSD License",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
]
dependencies = [
"jupyter-kernel-client>=0.5.1",
"jupyter-nbmodel-client==0.6.0",
"mcp[cli]>=1.2.1",
"rich"
]
[project.optional-dependencies]
test = ["ipykernel", "jupyter_server>=1.6,<3", "pytest>=7.0"]
lint = ["mdformat>0.7", "mdformat-gfm>=0.3.5", "ruff"]
typing = ["mypy>=0.990"]
[project.license]
file = "LICENSE"
[project.urls]
Home = "https://github.com/datalayer/jupyter-mcp-server"
[tool.hatch.version]
path = "jupyter_mcp_server/__version__.py"
[tool.pytest.ini_options]
filterwarnings = [
"error",
"ignore:There is no current event loop:DeprecationWarning",
"module:make_current is deprecated:DeprecationWarning",
"module:clear_current is deprecated:DeprecationWarning",
"module:Jupyter is migrating its paths to use standard platformdirs:DeprecationWarning",
]
[tool.mypy]
check_untyped_defs = true
disallow_incomplete_defs = true
no_implicit_optional = true
pretty = true
show_error_context = true
show_error_codes = true
strict_equality = true
warn_unused_configs = true
warn_unused_ignores = true
warn_redundant_casts = true
[tool.ruff]
target-version = "py39"
line-length = 100
[tool.ruff.lint]
select = [
"A",
"B",
"C",
"E",
"F",
"FBT",
"I",
"N",
"Q",
"RUF",
"S",
"T",
"UP",
"W",
"YTT",
]
ignore = [
# FBT001 Boolean positional arg in function definition
"FBT001",
"FBT002",
"FBT003",
]
[tool.ruff.lint.per-file-ignores]
# S101 Use of `assert` detected
"jupyter_mcp_server/tests/*" = ["S101"]