- To do
- Done
- [~] In progress
- Write PLAN.md with milestones
- Write TASKS.md with actionable tasks
- Write SPECIFICATIONS.md with global technical specs
- Create .gitignore
- Create directory structure
- Remove unused
python/andts/directories (never created)
- Create
rust/Cargo.tomlwith dependencies (oxigraph, rmcp, tokio, serde, schemars) - Implement
rust/src/main.rs— MCP server entry point with stdio transport - Implement
rust/src/store.rs— Oxigraph store init (on-disk RocksDB,OXIGRAPH_STORE_PATH) - Implement
rust/src/tools/sparql.rs:-
sparql_querytool -
sparql_updatetool
-
- Implement
rust/src/tools/rdf.rs:-
load_rdftool (file path and inline content, format auto-detection) -
list_graphstool
-
- Implement
rust/src/tools/mod.rs— tool registration - Manual test: register as Claude Code MCP server and run SPARQL queries
- Define
LanguageLoadertrait inrust/src/loaders/mod.rs - Implement loader registry and language auto-detection
- Implement
rust/src/tools/code.rs—load_codegeneric dispatcher tool - Implement
rust/src/loaders/rust.rs— Rust loader:- Cargo.toml parsing (project metadata, dependencies)
-
.rsfile AST extraction viasyn:- Module structure and hierarchy
- Functions and methods (name, params, return type, visibility, doc comments)
- Structs and enums
- Traits and impl blocks
- Use/import statements
- Register
load_rust_codetool
- Manual test: load a Rust project and query its structure via SPARQL
- Implement
rust/src/loaders/python.rs— Python loader:- pyproject.toml / setup.py / requirements.txt parsing for dependencies
-
.pyfile AST extraction (Rust-based parser):- Modules and packages
- Functions and methods (name, params, decorators, docstrings)
- Classes (name, bases, methods)
- Import statements
- Type annotations
- Register
load_python_codetool
- Manual test: load a Python project and query its structure via SPARQL
- Implement
rust/src/loaders/typescript.rs— TypeScript loader:- package.json parsing for project metadata and dependencies
-
.ts/.tsx/.js/.jsxfile AST extraction (oxc_parser):- Modules and exports
- Functions (name, params, return type, JSDoc)
- Classes and interfaces
- Type aliases
- Import/export statements
- Register
load_ts_codetool
- Manual test: load a TypeScript project and query its structure via SPARQL
- Integration tests for generic RDF tools (sparql_query, sparql_update, load_rdf, list_graphs)
- Integration tests for Rust loader
- Integration tests for Python loader
- Integration tests for TypeScript loader
- Write README.md with installation and usage instructions
- Add Claude Code MCP configuration examples
- Add
git2crate dependency torust/Cargo.toml - Implement
rust/src/loaders/git.rs— Git history loader:- Open repository via
git2::Repository::open() - Walk commit graph from HEAD (or specified branch/ref)
- Extract commit metadata (hash, author, committer, date, message, parents)
- Extract per-commit file changes via diff-tree (added, modified, deleted, renamed)
- Generate
code:Commitandcode:FileChangeRDF triples - Link
code:FileChangetocode:Moduleviacode:affectsModule(same-graph join) - Respect
max_commitslimit
- Open repository via
- Implement
rust/src/tools/git.rs—load_git_historytool:- Tool parameter schema (path, graph, max_commits, branch)
- Pure sync function taking
&Store - Summary output (commit count, file change count)
- Register
load_git_historytool inmain.rs - Unit tests:
- Test commit metadata extraction with a temp git repo
- Test file change detection (add, modify, delete, rename)
- Test max_commits limiting
- Test module linking via
code:affectsModule
- Manual test: load git history and query commits/changes via SPARQL
-
list_namespaces/add_namespacetools for prefix management -
store_statstool (triple count, graph count, store size) -
export_rdftool (dump store or graph in chosen format) -
drop_graphtool (remove a named graph) - Bulk loading with progress reporting
- Additional language loaders (Go, Java, C/C++, etc.)