Establishes a multi-language monorepo structure for MCP interceptors with Python and TypeScript SDKs alongside the existing Go implementation. Implements an efficient CI/CD system that only tests what changes. #### 🏗️ SDK Scaffolding - **Python SDK** (`python/sdk/`): Modern Python package using `pyproject.toml`, aligned with official MCP Python SDK patterns - **TypeScript SDK** (`typescript/sdk/`): ESM-based package structure, compatible with official MCP TypeScript SDK - **Monorepo structure**: Consistent `{language}/sdk/` pattern across all implementations #### 🚀 CI/CD Pipeline - **Path-based workflow triggering**: Only runs CI for languages that actually changed - Change Python → only Python CI runs - Change multiple languages → only those CIs run - **Status check workflow**: Single required check that dynamically validates based on changes - **Comment triggers**: Maintainers can run all checks with `/test all` PR comment
71 lines
No EOL
1.8 KiB
TOML
71 lines
No EOL
1.8 KiB
TOML
[project]
|
|
name = "mcp-ext-interceptors"
|
|
version = "0.1.0"
|
|
description = "Python SDK for Model Context Protocol interceptors"
|
|
authors = [{name = "The MCP Interceptors Authors"}]
|
|
readme = "README.md"
|
|
license = {text = "Apache-2.0"}
|
|
requires-python = ">=3.10"
|
|
classifiers = [
|
|
"Development Status :: 3 - Alpha",
|
|
"Intended Audience :: Developers",
|
|
"License :: OSI Approved :: Apache Software License",
|
|
"Programming Language :: Python :: 3",
|
|
"Programming Language :: Python :: 3.10",
|
|
"Programming Language :: Python :: 3.11",
|
|
"Programming Language :: Python :: 3.12",
|
|
]
|
|
dependencies = [
|
|
"mcp>=1.0.0",
|
|
]
|
|
|
|
[project.urls]
|
|
"Homepage" = "https://github.com/modelcontextprotocol/ext-interceptors"
|
|
"Bug Reports" = "https://github.com/modelcontextprotocol/ext-interceptors/issues"
|
|
"Source" = "https://github.com/modelcontextprotocol/ext-interceptors"
|
|
|
|
[build-system]
|
|
requires = ["hatchling"]
|
|
build-backend = "hatchling.build"
|
|
|
|
[tool.hatch.build.targets.wheel]
|
|
packages = ["src/mcp_ext_interceptors"]
|
|
|
|
[tool.ruff]
|
|
line-length = 120
|
|
target-version = "py310"
|
|
|
|
[tool.ruff.lint]
|
|
select = [
|
|
"E", # pycodestyle
|
|
"F", # pyflakes
|
|
"I", # isort
|
|
"UP", # pyupgrade
|
|
"C4", # flake8-comprehensions
|
|
"PERF", # Perflint
|
|
]
|
|
|
|
[tool.ruff.lint.per-file-ignores]
|
|
"__init__.py" = ["F401"] # Allow unused imports in __init__.py
|
|
|
|
[tool.ruff.format]
|
|
quote-style = "double"
|
|
indent-style = "space"
|
|
|
|
[tool.mypy]
|
|
python_version = "3.10"
|
|
warn_return_any = true
|
|
warn_unused_configs = true
|
|
disallow_untyped_defs = true
|
|
ignore_missing_imports = true
|
|
|
|
[tool.pyright]
|
|
typeCheckingMode = "basic"
|
|
include = ["src/mcp_ext_interceptors", "tests"]
|
|
venvPath = "."
|
|
venv = ".venv"
|
|
|
|
[tool.pytest.ini_options]
|
|
testpaths = ["tests"]
|
|
python_files = ["test_*.py", "*_test.py"]
|
|
addopts = "--strict-markers --verbose" |