Files
obsidian-wiki/pyproject.toml
T
nac 76a480a0b7 feat(mcp): serve safe source file assets
Add a stdio MCP server for searching and reading safe engineering source files from the wiki file asset index.

The implementation uses registry-backed ACL checks, engineering-file whitelisting, asset:// resource URIs, read-only SQLite access, CLI entrypoints, optional MCP packaging, and unittest coverage for search, metadata, resource reads, blocked sources, bot ACLs, and size limits.

Validation: python3 -m unittest discover -v; python3 -m py_compile obsidian_wiki/config.py obsidian_wiki/file_assets.py obsidian_wiki/mcp_assets.py obsidian_wiki/mcp_server.py obsidian_wiki/cli.py tests/test_mcp_assets.py; real BJD vault search/read smoke tests.
2026-07-05 11:10:41 +00:00

93 lines
3.5 KiB
TOML

[build-system]
requires = ["hatchling", "hatch-vcs"]
build-backend = "hatchling.build"
[project]
name = "obsidian-wiki"
dynamic = ["version"]
description = "A skill-based framework for building and maintaining an AI-maintained Obsidian knowledge base (Karpathy's LLM Wiki pattern) across any AI coding agent."
readme = "README.md"
requires-python = ">=3.9"
license = "MIT"
license-files = ["LICENSE"]
authors = [{ name = "Ar9av" }]
keywords = [
"obsidian",
"wiki",
"knowledge-base",
"llm",
"claude",
"agent-skills",
"second-brain",
]
classifiers = [
"Development Status :: 4 - Beta",
"Environment :: Console",
"Intended Audience :: Developers",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3",
"Topic :: Documentation",
"Topic :: Text Processing :: Markup :: Markdown",
"Topic :: Utilities",
]
# Pure-stdlib CLI — installing skills needs no third-party runtime dependencies.
dependencies = []
[project.optional-dependencies]
mcp = ["mcp>=1.28,<2"]
[project.urls]
Homepage = "https://github.com/Ar9av/obsidian-wiki"
Repository = "https://github.com/Ar9av/obsidian-wiki"
Issues = "https://github.com/Ar9av/obsidian-wiki/issues"
[project.scripts]
obsidian-wiki = "obsidian_wiki.cli:main"
obsidian-wiki-mcp = "obsidian_wiki.mcp_server:main"
# Version is derived from the git tag (CalVer, e.g. v2026.05.2 -> 2026.5.2),
# matching the repo's release tags. Tagging a release is the version bump.
[tool.hatch.version]
source = "vcs"
# ── Build configuration ──────────────────────────────────────────────────────
# The Python package is just the thin CLI in obsidian_wiki/. The actual product
# is the markdown skill content under .skills/ plus the agent bootstrap files.
# We force-include those into the wheel under obsidian_wiki/_data/ so the
# installed package is self-contained and the CLI can install skills without a
# cloned repo. Source paths stay at the repo root (single source of truth).
[tool.hatch.build.targets.wheel]
packages = ["obsidian_wiki"]
[tool.hatch.build.targets.wheel.force-include]
".skills" = "obsidian_wiki/_data/skills"
".env.example" = "obsidian_wiki/_data/.env.example"
"AGENTS.md" = "obsidian_wiki/_data/bootstrap/AGENTS.md"
".cursor/rules/obsidian-wiki.mdc" = "obsidian_wiki/_data/bootstrap/cursor/rules/obsidian-wiki.mdc"
".windsurf/rules/obsidian-wiki.md" = "obsidian_wiki/_data/bootstrap/windsurf/rules/obsidian-wiki.md"
".kiro/steering/obsidian-wiki.md" = "obsidian_wiki/_data/bootstrap/kiro/steering/obsidian-wiki.md"
".agent/rules/obsidian-wiki.md" = "obsidian_wiki/_data/bootstrap/agent/rules/obsidian-wiki.md"
".agent/workflows/obsidian-wiki.md" = "obsidian_wiki/_data/bootstrap/agent/workflows/obsidian-wiki.md"
".github/copilot-instructions.md" = "obsidian_wiki/_data/bootstrap/github/copilot-instructions.md"
[tool.hatch.build.targets.sdist]
# Prune build noise and the committed agent symlink mirrors (the CLI
# regenerates those; left in, hatchling's VCS walker treats them as the
# canonical path for each skill and drops the real .skills/<name> files).
exclude = [
"/.claude",
"/.cursor/skills",
"/.windsurf/skills",
"/.agents/skills",
"/.pi/skills",
"/.kiro/skills",
"/dist",
"/build",
]
# Force the real .skills/ tree into the sdist regardless of the VCS walker, so
# the wheel (built from the sdist) can in turn force-include it under _data/.
[tool.hatch.build.targets.sdist.force-include]
".skills" = ".skills"