1+ # ----------------------------------------------------------------
2+ # 💡 Build system (PEP 517)
3+ # • setuptools ≥ 77 gives SPDX licence support (PEP 639)
4+ # • wheel is needed by most build front-ends
5+ # ----------------------------------------------------------------
16[build-system ]
2- requires = [ " setuptools>=42 " , " wheel" , ]
7+ requires = [" setuptools>=77 " , " wheel" ]
38build-backend = " setuptools.build_meta"
49
10+ # ----------------------------------------------------------------
11+ # 📦 Core project metadata (PEP 621)
12+ # ----------------------------------------------------------------
513[project ]
614name = " mcpgateway"
7- version = " 1.0 .0"
8- description = " A production-ready MCP Gateway built with FastAPI and the official MCP Python SDK "
15+ version = " 0.1 .0"
16+ description = " A production-ready MCP Gateway built with FastAPI and support for virtual servers "
917keywords = [" MCP" , " Gateway" , " API" , " Agents" , " Tools" ]
1018classifiers = [
11- " Development Status :: 3 - Alpha " ,
19+ " Development Status :: 4 - Beta " ,
1220 " Intended Audience :: Developers" ,
13- " License :: OSI Approved :: Apache Software License" ,
1421 " Programming Language :: Python :: 3" ,
1522 " Programming Language :: Python :: 3.10" ,
1623 " Programming Language :: Python :: 3.11" ,
1724 " Programming Language :: Python :: 3.12" ,
1825 " Framework :: FastAPI" ,
1926]
2027readme = " README.md"
21- requires-python = " >=3.10"
28+ requires-python = " >=3.10,<3.13"
29+
30+ # SPDX licence expression + explicit licence file (PEP 639)
31+ license = " Apache-2.0"
32+ license-files = [" LICENSE" ]
33+
34+ # Maintainers
35+ maintainers = [
36+ {
name =
" Mihai Criveti" ,
email =
" [email protected] " }
37+ ]
38+
39+ # ----------------------------------------------------------------
40+ # Runtime dependencies
41+ # ----------------------------------------------------------------
2242dependencies = [
2343 " cryptography>=45.0.3" ,
2444 " fastapi>=0.115.12" ,
@@ -39,14 +59,18 @@ dependencies = [
3959 " uvicorn>=0.34.2" ,
4060 " zeroconf>=0.147.0" ,
4161]
42- [[project .authors ]]
43- name = " Mihai Criveti"
44- 45-
46- [project .license ]
47- text = " Apache License 2.0"
4862
63+ # ----------------------------------------------------------------
64+ # Optional dependency groups (extras)
65+ # ----------------------------------------------------------------
4966[project .optional-dependencies ]
67+
68+ # Optional dependency groups (runtime)
69+ redis = [
70+ " redis>=6.1.0" ,
71+ ]
72+
73+ # Optional dependency groups (development)
5074dev = [
5175 " argparse-manpage>=4.6" ,
5276 " autoflake>=2.3.1" ,
@@ -84,26 +108,75 @@ dev = [
84108 " pytest-rerunfailures>=15.1" ,
85109 " pytest-xdist>=3.6.1" ,
86110 " pytype>=2024.10.11" ,
87- " pytype>=2024.10.11" ,
88111 " radon>=6.0.1" ,
89112 " ruff>=0.11.11" ,
90113 " settings-doc>=4.3.2" ,
91114 " snakeviz>=2.2.2" ,
92115 " ty>=0.0.1a6" ,
116+ " twine>=6.1.0" ,
93117 " types-tabulate>=0.9.0.20241207" ,
94118]
95- redis = [
96- " redis>=6.1.0" ,
97- ]
119+
120+ # Convenience meta-extras
121+ all = [" mcpgateway[redis]" ]
122+ dev-all = [" mcpgateway[redis,dev]" ]
123+
124+ # --------------------------------------------------------------------
125+ # Authors and URLs
126+ # --------------------------------------------------------------------
127+ [[project .authors ]]
128+ name = " Mihai Criveti"
129+ 98130
99131[project .urls ]
100- Homepage = " https://github.com/IBM/mcp-context-forge"
101- Documentation = " https://github.com/IBM/mcp-context-forge/docs"
102- Source = " https://github.com/IBM/mcp-context-forge"
132+ Homepage = " https://ibm.github.io/mcp-context-forge/"
133+ Documentation = " https://ibm.github.io/mcp-context-forge/"
134+ Repository = " https://github.com/IBM/mcp-context-forge"
135+ "Bug Tracker" = " https://github.com/IBM/mcp-context-forge/issues"
136+ Changelog = " https://github.com/IBM/mcp-context-forge/blob/main/CHANGELOG.md"
137+
138+ # --------------------------------------------------------------------
139+ # 🔧 setuptools-specific configuration
140+ # --------------------------------------------------------------------
141+ [tool .setuptools ]
142+ include-package-data = true # ensure wheels include the data files
143+
144+ # Automatic discovery: keep every package that starts with "mcpgateway"
145+ [tool .setuptools .packages .find ]
146+ include = [" mcpgateway*" ]
147+ exclude = [" tests*" ]
148+
149+ # # Runtime data files ------------------------------------------------
150+ # - py.typed -> advertises inline type hints (PEP 561)
151+ # - static/* -> CSS/JS for the admin UI
152+ # - templates -> Jinja2 templates shipped at runtime
153+ [tool .setuptools .package-data ]
154+ mcpgateway = [
155+ " py.typed" ,
156+ " static/*.css" ,
157+ " static/*.js" ,
158+ " templates/*.html"
159+ ]
160+
161+ # --------------------------------------------------------------------
162+ # 🛠 Tool configurations (black, mypy, etc.)
163+ # --------------------------------------------------------------------
164+ [tool .pytype ]
165+ # Directory-specific options:
166+ inputs = [" mcpgateway" ]
167+ python_version = " 3.11" # match default runtime
168+
169+ [tool .check-manifest ]
170+ ignore = [
171+ " docs/**" ,
172+ " tests/**" ,
173+ " .github/**" ,
174+ " Makefile" ,
175+ ]
103176
104177[tool .black ]
105178line-length = 200
106- target-version = [ " py310" ,]
179+ target-version = [" py310" , " py311 " , " py312 " ]
107180include = " \\ .pyi?$"
108181
109182[tool .isort ]
@@ -115,36 +188,22 @@ python_version = "3.10"
115188warn_return_any = true
116189warn_unused_configs = true
117190disallow_untyped_defs = true
191+ strict = true
192+ show_error_codes = true
193+ warn_unreachable = true
118194
119195[tool .pytest .ini_options ]
120196minversion = " 6.0"
121197addopts = " -ra -q --cov=mcpgateway"
122198testpaths = [ " tests" ,]
123199asyncio_mode = " auto"
124200
125- [tool .setuptools .packages .find ]
126- where = [ " ." ,]
127- include = [ " mcpgateway*" ,]
128-
129- [tool .pytype ]
130- # Directory-specific options:
131- inputs = [" mcpgateway" ]
132- python_version = " 3.11" # match your default runtime
133-
134- [tool .check-manifest ]
135- # Usually you only need 'ignore', but other flags are available.
136- ignore = [
137- " docs/**" ,
138- " tests/**" ,
139- " .github/**" ,
140- " Makefile" ,
141- ]
142-
201+ # ── fawltydeps ─────────────────────────────────────────────────────
143202[tool .fawltydeps ]
144- # only parse your main pyproject.toml
203+ # only parse main pyproject.toml
145204deps = [" pyproject.toml" ]
146205
147- # ignore all of your 'dev' extras so they won't show up
206+ # ignore 'dev' extras so they won't show up in fawltydeps
148207ignore_unused = [
149208 " autoflake" ,
150209 " argparse-manpage" ,
@@ -189,5 +248,6 @@ ignore_unused = [
189248 " settings-doc" ,
190249 " snakeviz" ,
191250 " types-tabulate" ,
251+ " twine" ,
192252 " uvicorn"
193253]
0 commit comments