[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.build.targets.wheel]
packages = ["openended_philosophy"]
[project]
name = "openended-philosophy-mcp"
version = "0.1.0"
description = "An open-ended philosophical framework implemented as a Model Context Protocol server"
authors = [
{ name = "angrysky56" }
]
readme = "README.md"
requires-python = ">=3.10"
dependencies = [
"mcp>=1.0.0",
"pydantic>=2.5.0",
"numpy>=1.24.0",
"networkx>=3.0",
"uvloop>=0.20.0; sys_platform != 'win32'",
"nltk>=3.8.0",
"scikit-learn>=1.3.0",
"python-dotenv>=1.0.0",
"ona>=0.9.2",
"pygls>=1.3.1",
"sentence-transformers>=4.1.0",
"Jinja2>=3.1.0",
]
[project.optional-dependencies]
dev = [
"pytest>=8.0.0",
"ruff>=0.1.0",
"mypy>=1.8.0",
"pytest-asyncio>=0.23.0"
]
[project.scripts]
openended-philosophy-server = "openended_philosophy.server:cli_main"
[tool.ruff]
line-length = 88
target-version = "py310"
select = ["E", "F", "I", "B", "UP", "N", "C4", "SIM"]
ignore = ["E501"] # Line too long (handled by formatter)
[tool.ruff.format]
quote-style = "double"
indent-style = "space"
docstring-code-format = true
[tool.mypy]
python_version = "3.10"
warn_return_any = true
warn_unused_configs = true
disallow_untyped_defs = true
check_untyped_defs = true
[tool.pytest.ini_options]
asyncio_mode = "auto"
testpaths = ["tests"]
addopts = "-v --tb=short"