Akkadian is an MCP server for ML competition workflows. It provides tools for Kaggle interaction, experiment tracking (MLflow), hyperparameter tuning (Optuna), and a knowledge graph for tracking artifacts.
pytest # All tests
pytest tests/test_server.py -v # Specific file
pytest -k "mlflow" -v # By keywordsrc/akkadian_mcp/server.py— MCP server, tool registrationsrc/akkadian_mcp/state.py— Singleton state, config, feature detectionsrc/akkadian_mcp/handlers/— One file per tool (bootstrap, kaggle, knowledge, mlflow, optuna)src/akkadian_mcp/knowledge_graph/— SQLite-backed entity/relation storetests/— Pytest tests, one per handler
- Tools use operation enums — one MCP tool per handler, operations dispatched internally
- Optional extras detected via
importlib.util.find_spec()— tools only registered if deps available - State is a module-level singleton (
get_state()) - Knowledge graph uses ID prefix convention:
model:,kernel:,dataset:,score:, etc. - Config stored in
.akkadian/config.json
- Create
src/akkadian_mcp/handlers/newhandler.pywithhandle_newhandler(arguments: dict) -> str - Add tool definition in
server.py(_newtool_tool()function) - Add dispatch case in
_dispatch() - Add to
build_tools()(withhas_extra()guard if optional) - Write tests in
tests/test_newhandler.py