jupyter-ai-hermes
Hermes Agent as an ACP persona for Jupyter AI, with live notebook context injection and custom MCP tools for cell metadata management.
What it does
- Injects live notebook context into every Hermes prompt — active notebook path, current cell ID, and cell content — so Hermes always knows what you're working on.
- Documents all available MCP CLI tools so Hermes prefers them over raw
nbformatscripts. - Registers custom MCP tools (
set_cell_metadata,get_cell_metadata,list_cell_tags) for operations the built-in toolkit doesn't cover.
Requirements
- Python >= 3.12
- Jupyter AI with ACP client support
- Hermes Agent installed (the
hermesbinary must be on PATH)
Installation
pip install jupyter-ai-hermes
Then restart JupyterLab. The "Hermes" persona will appear in the Jupyter AI chat panel.
Configuration
By default the package searches for hermes in PATH. Override with:
export HERMES_BIN_PATH=/path/to/hermes
The MCP server URL defaults to http://localhost:3001/mcp. Override with:
export JUPYTER_MCP_URL=http://localhost:3002/mcp
Related Packages
- jupyter-hermes-proxy — Launch the Hermes Agent dashboard from the JupyterLab launcher panel with automatic port management via jupyter-server-proxy.
Both packages share the same HERMES_BIN_PATH environment variable convention.
MCP Tools
The package registers 3 custom MCP tools alongside the 18 built-in Jupyter AI notebook tools:
| Tool | What it does |
|---|---|
set_cell_metadata |
Set cell metadata (e.g. Rise slideshow types, custom tags) |
get_cell_metadata |
View cell metadata for debugging |
list_cell_tags |
List all cells matching specific tags |
All tools are also available via the jupyter-mcp-cli command-line bridge:
# Set a cell as a Rise slideshow slide
jupyter-mcp-cli set_cell_metadata \
--arg file_path=notebook.ipynb \
--arg cell_id=cell-abc123 \
--arg 'metadata={"slideshow":{"slide_type":"slide"}}'
# List all cells tagged with "important"
jupyter-mcp-cli list_cell_tags \
--arg file_path=notebook.ipynb \
--arg tags='["important"]'
Entry Points
| Group | Name | Target |
|---|---|---|
jupyter_ai.personas |
hermes-acp |
jupyter_ai_hermes.hermes:HermesAcpPersona |
jupyter_server_mcp.tools |
hermes_mcp_tools |
jupyter_ai_hermes.mcp_tools:TOOLS |
console_scripts |
jupyter-mcp-cli |
jupyter_ai_hermes.mcp_cli:main |
Architecture
┌──────────────────────────────────────────────┐
│ JupyterLab │
│ ┌─────────────┐ ┌─────────────────────┐ │
│ │ Notebook UI │ │ Jupyter AI Chat │ │
│ │ (YDoc) │◄──►│ ┌─────────────────┐ │ │
│ └─────────────┘ │ │ Hermes Persona │ │ │
│ │ │ ├─ gather_ctx │ │ │
│ ┌─────────────┐ │ │ ├─ MCP docs │ │ │
│ │ MCP Server │◄──►│ │ └─ forward ──► │ │ │
│ │ :3001 │ │ └─────────────────┘ │ │
│ └─────────────┘ └─────────────────────┘ │
│ │
│ ┌─────────────────────┐ │
│ │ jupyter-mcp-cli │ │
│ │ (CLI bridge) │ │
│ └─────────────────────┘ │
└──────────────────────────────────────────────┘
│
▼
┌──────────────────────┐
│ Hermes Agent (ACP) │
│ ┌────────────────┐ │
│ │ Tool execution │ │
│ │ jupyter-mcp-cli│ │
│ └────────────────┘ │
└──────────────────────┘
Development
git clone git@github.com:dive4dec/jupyter-ai-hermes.git
cd jupyter-ai-hermes
pip install -e ".[dev]"
pytest
License
MIT
Metadata
Release files for jupyter-ai-hermes 0.1.7
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| jupyter_ai_hermes-0.1.7.tar.gz | 13.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| jupyter_ai_hermes-0.1.7-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 26.7 kB
Release files / jupyter_ai_hermes-0.1.7.tar.gz
| Download URL | jupyter_ai_hermes-0.1.7.tar.gz |
|---|---|
| Size | 13.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2919a5d1ae6091cf2130984e570e5d927067e386c29fa4a2abf321cb47598268
|
|
BLAKE2b-256 checksum How to use checksums |
4a104348a5b19d63c9bd322d620a8f13262e6e04230f83d405a96b55e81a67fb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.15
|
Release files / jupyter_ai_hermes-0.1.7-py3-none-any.whl
| Download URL | jupyter_ai_hermes-0.1.7-py3-none-any.whl |
|---|---|
| Size | 13.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
843c6efad7524296fc5f3c476afba7c97fac03ba2222df73ec5d681f9bf15dd7
|
|
BLAKE2b-256 checksum How to use checksums |
6c613fbcdd2c838f0e197a72ede2be1816b0fb99c52dadc41ecf0e336cacf2ec
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.15
|