Loading...
Loading...
Manage Jupyter notebooks — create, execute cells, manage kernels via the container's Jupyter Server REST API.
npx skill4agent add prismer-ai/prismer academic-jupyterhttp://localhost:8888$JUPYTER_TOKEN# Token is available as environment variable
echo $JUPYTER_TOKEN
# Use in requests:
curl -sf "http://localhost:8888/api/status?token=$JUPYTER_TOKEN" | jq .curl -sf "http://localhost:8888/api/kernels?token=$JUPYTER_TOKEN" | jq .curl -sf -X POST "http://localhost:8888/api/kernels?token=$JUPYTER_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "python3"}' | jq .
# → {"id": "<kernel-id>", "name": "python3", "state": "starting", ...}curl -sf -X POST "http://localhost:8888/api/kernels/<kernel-id>/restart?token=$JUPYTER_TOKEN" | jq .curl -sf -X DELETE "http://localhost:8888/api/kernels/<kernel-id>?token=$JUPYTER_TOKEN"curl -sf "http://localhost:8888/api/contents/notebooks?token=$JUPYTER_TOKEN" | jq '.content[] | {name, path, type}'curl -sf -X PUT "http://localhost:8888/api/contents/notebooks/analysis.ipynb?token=$JUPYTER_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"type": "notebook",
"content": {
"cells": [
{
"cell_type": "markdown",
"source": "# Analysis Notebook\nCreated by Prismer Academic Assistant.",
"metadata": {}
},
{
"cell_type": "code",
"source": "import numpy as np\nimport matplotlib.pyplot as plt\nprint(\"Ready!\")",
"metadata": {},
"outputs": [],
"execution_count": null
}
],
"metadata": {
"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"},
"language_info": {"name": "python", "version": "3.12.3"}
},
"nbformat": 4,
"nbformat_minor": 5
}
}' | jq '{name, path, created}'curl -sf "http://localhost:8888/api/contents/notebooks/analysis.ipynb?token=$JUPYTER_TOKEN" | jq .curl -sf -X DELETE "http://localhost:8888/api/contents/notebooks/analysis.ipynb?token=$JUPYTER_TOKEN".py# Write a cell's code to temp file and execute
cat > /tmp/cell.py << 'PYTHON'
import numpy as np
x = np.random.randn(1000)
print(f"Mean: {x.mean():.4f}, Std: {x.std():.4f}")
PYTHON
python3 /tmp/cell.py# 1. Start kernel
KERNEL_ID=$(curl -sf -X POST "http://localhost:8888/api/kernels?token=$JUPYTER_TOKEN" \
-H "Content-Type: application/json" -d '{"name":"python3"}' | jq -r '.id')
# 2. Execute code via the kernel (uses WebSocket internally)
# For simple cases, write the notebook with cells and outputs.
# For complex interactive sessions, guide the user to open Jupyter in browser.| Endpoint | Method | Purpose |
|---|---|---|
| GET | Server status |
| GET | List kernels |
| POST | Start kernel ( |
| DELETE | Shutdown kernel |
| POST | Restart kernel |
| GET | Read file/notebook |
| PUT | Create/update file/notebook |
| DELETE | Delete file/notebook |
?token=$JUPYTER_TOKEN/workspace/notebooks//workspace//workspace/notebooks/<name>.ipynbpython3matplotlib.use('Agg').ipynb