🧠 jupyter-server-ai-tools
A Jupyter Server extension for discovering and aggregating callable tools from other extensions.
This project provides a structured way for extensions to declare tools using Tool objects, and for agents or other consumers to retrieve those tools.
✨ Features
- ✅ Simple, declarative
ToolkitAPI for registering callable tools - ✅ Toolkit registration with unique names
- ✅ Retrieve toolkits by name and capabilities
- ✅ Clean separation between tool metadata and callable execution
- ✅ Optional tool capability filtering (read, write, execute, delete)
📦 Install
pip install jupyter_server_ai_tools
To install for development:
git clone https://github.com/Abigayle-Mercer/jupyter-server-ai-tools.git
cd jupyter-server-ai-tools
pip install -e ".[lint,test]"
Usage
Expose tools in your own extensions:
from jupyter_server_ai_tools.models import Tool, Toolkit
def greet(name: str):
"""Say hello to someone."""
return f"Hello, {name}!"
For configurable extension apps
class MyExtensionApp(ExtensionApp)
# Get the tookit registry from settings
@property
def toolkit_registry(self):
return self.settings["toolkit_registry"]
async def _start_jupyter_server_extension(self):
# Create a tool
greet_tool = Tool(callable=greet, read=True)
# Create a toolkit
greeting_toolkit = Toolkit(name="GreetingToolkit")
greeting_toolkit.add_tool(greet_tool)
# Register the toolkit
self.toolkit_registry.register_toolkit(greeting_toolkit)
For basic extensions
async def _start_jupyter_server_extension(serverapp):
toolkit_registry = serverapp.web_app.settings["toolkit_registry"]
# Create a tool
greet_tool = Tool(callable=greet, read=True)
# Create a toolkit
greeting_toolkit = Toolkit(name="GreetingToolkit")
greeting_toolkit.add_tool(greet_tool)
# Register the toolkit
self.toolkit_registry.register_toolkit(greeting_toolkit)
Retrieve Toolkits:
# Get a specific toolkit
greeting_toolkit = registry.get_toolkit("GreetingToolkit")
# Get toolkit with specific tool capabilities
read_toolkits = registry.get_toolkit("GreetingToolkit", read=True)
🧪 Running Tests
pip install -e ".[test]"
pytest
🧼 Linting and Formatting
pip install -e ".[lint]"
bash .github/workflows/lint.sh
Impact
This system enables:
- Extension authors to register tools with minimal effort
- Flexible tool discovery and retrieval
- Capability-based tool filtering
🧹 Uninstall
pip uninstall jupyter_server_ai_tools
Release files for jupyter_server_ai_tools 0.2.0
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_server_ai_tools-0.2.0.tar.gz | 10.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| jupyter_server_ai_tools-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 17.9 kB
Release files / jupyter_server_ai_tools-0.2.0.tar.gz
| Download URL | jupyter_server_ai_tools-0.2.0.tar.gz |
|---|---|
| Size | 10.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
27009274de29a8e5e27407c47e456d91a3a4f5fbbf77467732c58438b5ecb052
|
|
BLAKE2b-256 checksum How to use checksums |
07bfedb5f0ac27e95915a7d613476753b94503ca4f9d1fb2942bd49f177f5b6d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
python-httpx/0.28.1
|
Release files / jupyter_server_ai_tools-0.2.0-py3-none-any.whl
| Download URL | jupyter_server_ai_tools-0.2.0-py3-none-any.whl |
|---|---|
| Size | 7.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c16229c11be19dd91a819408fb5c5520ce8f4594e362dacf17f107fa0a100528
|
|
BLAKE2b-256 checksum How to use checksums |
ccb633555d5eaab69e7d7e641ed8d451f229b67dc98890e03f5516401562eaba
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
python-httpx/0.28.1
|