PostHog MCP Server
Official
by PostHog
[project]
name = "posthog-mcp"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.13"
dependencies = [
"httpx>=0.28.1",
"mcp[cli]>=1.3.0",
"python-dotenv>=1.0.1",
]
[dependency-groups]
dev = [
"ruff>=0.9.10",
]
[tool.ruff]
# Enable pycodestyle (E), pyflakes (F), mccabe (C90), isort (I), pep8-naming (N),
# flake8-bugbear (B), flake8-comprehensions (C4), flake8-simplify (SIM),
# flake8-unused-arguments (ARG), pylint (PL)
select = ["E", "F", "C90", "I", "N", "B", "C4", "SIM", "ARG", "PL"]
ignore = [
"E501", # Line too long (handled by formatter)
"B008", # Do not perform function call in argument defaults
"C901", # Too complex
]
# Same as Black
line-length = 88
indent-width = 4
# Assume Python 3.8+
target-version = "py38"
[tool.ruff.format]
quote-style = "double"
indent-style = "space"
skip-magic-trailing-comma = false
line-ending = "auto"
[tool.ruff.lint.isort]
# known-first-party = ["our_package_name"]
known-third-party = ["pytest", "requests"]
section-order = ["future", "standard-library", "third-party", "first-party", "local-folder"]
[tool.ruff.lint.mccabe]
max-complexity = 10
[tool.ruff.lint.pep8-naming]
classmethod-decorators = ["classmethod", "pydantic.validator"]
[tool.ruff.lint.per-file-ignores]
"__init__.py" = ["F401"] # Ignore unused imports in __init__.py
"tests/*" = ["ARG", "PLR2004"] # Ignore unused arguments and magic numbers in tests