MCP server for tangled
1[project]
2name = "tangled-mcp"
3dynamic = ["version"]
4description = "MCP server for Tangled git collaboration platform"
5readme = "README.md"
6authors = [{ name = "nate", email = "zzstoatzz@protonmail.com" }]
7requires-python = ">=3.10"
8dependencies = [
9 "atproto",
10 "fastmcp>=2.12.4",
11 "httpx>=0.28.1",
12 "pydantic-settings>=2.11.0",
13 "python-dotenv>=1.1.1",
14 "websockets>=15.0.1",
15]
16
17[project.scripts]
18tangled-mcp = "tangled_mcp.__main__:main"
19
20[build-system]
21requires = ["hatchling", "uv-dynamic-versioning>=0.7.0"]
22build-backend = "hatchling.build"
23
24[tool.hatch.version]
25source = "uv-dynamic-versioning"
26
27[tool.uv-dynamic-versioning]
28vcs = "git"
29style = "pep440"
30bump = true
31fallback-version = "0.0.0"
32
33[tool.hatch.metadata]
34allow-direct-references = true
35
36[tool.uv.sources]
37atproto = { git = "https://github.com/MarshalX/atproto.git", rev = "refs/pull/605/head" }
38
39[dependency-groups]
40dev = [
41 "pre-commit>=4.3.0",
42 "pytest>=8.4.2",
43 "pytest-asyncio>=1.2.0",
44 "ruff>=0.14.0",
45 "ty>=0.0.1a22",
46]
47
48[tool.pytest.ini_options]
49asyncio_mode = "auto"
50asyncio_default_fixture_loop_scope = "session"
51testpaths = ["tests"]
52python_files = ["test_*.py"]
53python_classes = ["Test*"]
54python_functions = ["test_*"]
55filterwarnings = [
56 # upstream atproto issue: https://github.com/MarshalX/atproto/issues/625
57 "ignore::pydantic.warnings.UnsupportedFieldAttributeWarning",
58 # upstream: atproto SDK uses deprecated httpx API
59 "ignore::DeprecationWarning:httpx",
60]
61
62[tool.ty.src]
63include = ["src", "tests"]
64exclude = ["**/node_modules", "**/__pycache__", ".venv", ".git", "dist"]
65
66[tool.ty.environment]
67python-version = "3.10"
68
69[tool.ruff.lint]
70extend-select = ["I", "UP"]
71
72[tool.ruff.lint.per-file-ignores]
73"__init__.py" = ["F401"]