diff --git a/.github/workflows/run-static.yml b/.github/workflows/run-static.yml index 49123ed23..1e032d7d3 100644 --- a/.github/workflows/run-static.yml +++ b/.github/workflows/run-static.yml @@ -29,6 +29,6 @@ jobs: with: python-version: "3.12" - name: Install dependencies - run: uv sync + run: uv sync --dev - name: Run pre-commit uses: pre-commit/action@v3.0.1 diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml index 891323dc7..5841795c2 100644 --- a/.github/workflows/run-tests.yml +++ b/.github/workflows/run-tests.yml @@ -46,7 +46,7 @@ jobs: run: uv python install ${{ matrix.python-version }} - name: Install FastMCP - run: uv sync + run: uv sync --dev - name: Fix pyreadline on Windows if: matrix.os == 'windows-latest' diff --git a/pyproject.toml b/pyproject.toml index 20e56e036..bf2db90e2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -16,6 +16,12 @@ license = { text = "Apache-2.0" } [project.scripts] fastmcp = "fastmcp.cli:app" +[project.optional-dependencies] +openapi = [ + "fastapi>=0.115.12", + "openapi-pydantic>=0.5.1", +] + [build-system] requires = ["hatchling>=1.21.0", "hatch-vcs>=0.4.0"] build-backend = "hatchling.build" @@ -35,6 +41,10 @@ dev = [ "dirty-equals>=0.9.0", ] +[tool.uv] +# no default groups +default-groups = [] + [tool.pytest.ini_options] asyncio_mode = "auto" asyncio_default_fixture_loop_scope = "session" diff --git a/uv.lock b/uv.lock index 9444459d0..dc65822ea 100644 --- a/uv.lock +++ b/uv.lock @@ -227,9 +227,23 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/38/ef/c08926112034d017633f693d3afc8343393a035134a29dfc12dcd71b0375/fancycompleter-0.9.1-py3-none-any.whl", hash = "sha256:dd076bca7d9d524cc7f25ec8f35ef95388ffef9ef46def4d3d25e9b044ad7080", size = 9681 }, ] +[[package]] +name = "fastapi" +version = "0.115.12" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pydantic" }, + { name = "starlette" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f4/55/ae499352d82338331ca1e28c7f4a63bfd09479b16395dce38cf50a39e2c2/fastapi-0.115.12.tar.gz", hash = "sha256:1e2c2a2646905f9e83d32f04a3f86aff4a286669c6c950ca95b5fd68c2602681", size = 295236 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/50/b3/b51f09c2ba432a576fe63758bddc81f78f0c6309d9e5c10d194313bf021e/fastapi-0.115.12-py3-none-any.whl", hash = "sha256:e94613d6c05e27be7ffebdd6ea5f388112e5e430c8f7d6494a9d1d88d43e814d", size = 95164 }, +] + [[package]] name = "fastmcp" -version = "0.4.2.dev28+g728aeec.d20250408" +version = "0.4.2.dev30+g14dc9f2.d20250409" source = { editable = "." } dependencies = [ { name = "mcp" }, @@ -238,6 +252,12 @@ dependencies = [ { name = "websockets" }, ] +[package.optional-dependencies] +openapi = [ + { name = "fastapi" }, + { name = "openapi-pydantic" }, +] + [package.dev-dependencies] dev = [ { name = "copychat" }, @@ -255,7 +275,9 @@ dev = [ [package.metadata] requires-dist = [ + { name = "fastapi", marker = "extra == 'openapi'", specifier = ">=0.115.12" }, { name = "mcp", specifier = ">=1.6.0,<2.0.0" }, + { name = "openapi-pydantic", marker = "extra == 'openapi'", specifier = ">=0.5.1" }, { name = "rich", specifier = ">=13.9.4" }, { name = "typer", specifier = ">=0.15.2" }, { name = "websockets", specifier = ">=15.0.1" }, @@ -477,6 +499,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9", size = 22314 }, ] +[[package]] +name = "openapi-pydantic" +version = "0.5.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pydantic" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/02/2e/58d83848dd1a79cb92ed8e63f6ba901ca282c5f09d04af9423ec26c56fd7/openapi_pydantic-0.5.1.tar.gz", hash = "sha256:ff6835af6bde7a459fb93eb93bb92b8749b754fc6e51b2f1590a19dc3005ee0d", size = 60892 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/12/cf/03675d8bd8ecbf4445504d8071adab19f5f993676795708e36402ab38263/openapi_pydantic-0.5.1-py3-none-any.whl", hash = "sha256:a3a09ef4586f5bd760a8df7f43028b60cafb6d9f61de2acba9574766255ab146", size = 96381 }, +] + [[package]] name = "packaging" version = "24.2"