[project] name = "llm-wiki-mcp" version = "0.1.1" description = "MCP server + Claude Code skills for Karpathy-style LLM wikis: persistent markdown knowledge bases your agent grows over time." readme = "README.md" license = { text = "MIT" } requires-python = ">=3.11" authors = [ { name = "Steven Wu", email = "flsteven87@gmail.com" }, ] keywords = ["mcp", "llm", "wiki", "knowledge-base", "karpathy", "obsidian", "markdown"] classifiers = [ "Development Status :: 3 - Alpha", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Topic :: Software Development :: Libraries", "Topic :: Software Development :: Libraries :: Python Modules", "Typing :: Typed", ] dependencies = [ # Upper bounds are deliberate for a first PyPI publish: both fastmcp # and pydantic have load-bearing runtime behavior (schema generation, # tool annotations, initialize handshake) that can move on a major # bump. Re-evaluate the ceilings on each release. "fastmcp>=3.0.0,<4", "pydantic>=2.10.0,<3", "python-frontmatter>=1.1.0,<2", "anyio>=4.6.0,<5", ] [project.optional-dependencies] dev = [ "pytest>=8.3.0", "pytest-asyncio>=0.25.0", "ruff>=0.8.0", "pyright>=1.1.390", ] [project.scripts] llm-wiki-mcp = "llm_wiki_mcp.server:main" [project.urls] Homepage = "https://github.com/flsteven87/llm-wiki-mcp" Repository = "https://github.com/flsteven87/llm-wiki-mcp" Issues = "https://github.com/flsteven87/llm-wiki-mcp/issues" Changelog = "https://github.com/flsteven87/llm-wiki-mcp/blob/master/CHANGELOG.md" [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] packages = ["src/llm_wiki_mcp"] [tool.hatch.build.targets.sdist] exclude = [ ".claude/", ".claude-plugin/", ".venv/", ".pytest_cache/", ".ruff_cache/", "dist/", ] [tool.ruff] target-version = "py311" line-length = 100 src = ["src", "tests"] [tool.ruff.lint] select = [ "E", "W", # pycodestyle "F", # pyflakes "I", # isort "B", # bugbear "UP", # pyupgrade "C90", # mccabe complexity "SIM", # simplify "RUF", # ruff-specific "PTH", # use pathlib "S", # bandit (security) ] ignore = ["S101"] # allow `assert` in tests [tool.ruff.lint.mccabe] max-complexity = 10 [tool.ruff.lint.per-file-ignores] "tests/**" = ["S"] # tests can use anything [tool.pyright] include = ["src/llm_wiki_mcp"] exclude = ["**/__pycache__"] pythonVersion = "3.11" typeCheckingMode = "standard" reportMissingTypeStubs = false [tool.pytest.ini_options] asyncio_mode = "auto" testpaths = ["tests"] addopts = "-ra --strict-markers --strict-config"