gns3-server/pyproject.toml
YueGuobin 292b60efaa
Make AI features (AI Copilot + MCP) optional via [ai-features] extra
- Move fastmcp from core requirements.txt to mcp-requirements.txt
- Add MCP_AVAILABLE feature flag in agent/__init__.py (graceful degradation)
- Guard MCP imports/registration in server.py and tasks.py
- Replace ai-copilot/mcp/ai-support extras with single ai-features extra
- Add stub MCP routes returning 501 when MCP is not installed
- Add gns3server-uninstall-ai-features CLI command
- Remove old gns3server-uninstall-ai-copilot command
- Update all error messages and docs to reference ai-features

Closes #2794
2026-06-27 10:14:43 +08:00

58 lines
2.0 KiB
TOML

[build-system]
requires = ["setuptools>=61.0", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "gns3-server"
description = "GNS3 graphical interface for the GNS3 server."
license-files = ["LICENSE"]
authors = [
{ name = "Jeremy Grossmann", email = "developers@gns3.com" }
]
readme = "README.md"
requires-python = ">=3.10"
classifiers = [
"Development Status :: 5 - Production/Stable",
"Environment :: Console",
"Framework :: FastAPI",
"Intended Audience :: Information Technology",
"Topic :: System :: Networking",
"License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
"Natural Language :: English",
"Operating System :: POSIX :: Linux",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: Implementation :: CPython"
]
dynamic = ["version", "dependencies", "optional-dependencies"]
[tool.setuptools.dynamic]
version = {attr = "gns3server.version.__version__"}
dependencies = {file = "requirements.txt"}
[tool.setuptools.dynamic.optional-dependencies]
# Development dependencies
dev = {file = ['dev-requirements.txt']}
# AI features bundle — installs both AI Copilot and MCP dependencies
ai-features = {file = ['ai-requirements.txt', 'mcp-requirements.txt']}
# terraform = {file = ['terraform-requirements.txt']} # Future component
[project.urls]
"Homepage" = "http://gns3.com"
"Repository" = "http://github.com/GNS3/gns3-server"
"Bug tracker" = "http://github.com/GNS3/gns3-server/issues"
[project.scripts]
gns3server = "gns3server.main:main"
gns3vmnet = "gns3server.utils.vmnet:main"
gns3server-web-wireshark-setup = "gns3server.agent.web_wireshark.setup_wireshark_image:main"
gns3server-uninstall-ai-features = "gns3server.utils.uninstall_ai_features:main"
[tool.setuptools]
packages = ["gns3server"]