GeezerVison is showing github.com — fix: Downgrade CI requirements mcp pin to satisfy pyproject constraint by nithin42 · Pull Request #6713 · feast-dev/feast
Conversation
What this PR does / why we need it
A recent change added the mcp>=1.0,<2 constraint to pyproject.toml but the CI dependencies requirements lock files still pinned mcp==2.0.0 and mcp-types==2.0.0. This version mismatch broke integration tests and crashed the feature server with a TypeError: Server.__init__() takes 2 positional arguments but 3 were given during CI runs.
This PR downgrades mcp to 1.29.0 (with updated hashes) and removes mcp-types from all requirements files. We also loosen psutil dependency in pyproject.toml to allow prebuilt binary wheels on Windows Python 3.11.
Which issue(s) this PR fixes
Fixes #6706
Checks
- I've made sure the tests are passing.
- My commits are signed off (
git commit -s)
- My PR title follows conventional commits format
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
This was referenced Aug 7, 2026
|
@nithin42 thanks for picking this up. I verified the fix locally, since the job it repairs can't run here yet: this PR shows 1 check passing and 4 skipped, so mcp-feature-server-runtime hasn't fired. That job only runs on PRs carrying ok-to-test, which is the same reason the breakage went five days unnoticed.
Both halves of the change hold up under mcp==1.29.0 with fastapi-mcp==0.4.0:
The exact call that fails today is accepted. Server.__init__ in 1.29.0 is (self, name, version=None, instructions=None, ...), so Server(self.name, self.description) at fastapi_mcp/server.py:144 binds fine. I also ran the real failing path end to end, constructing FastApiMCP(app, name=..., description=...) against a FastAPI app, and it builds cleanly where it currently raises TypeError.
Dropping mcp-types is right too, not just harmless. mcp==1.29.0 declares no dependency on it and it isn't installed transitively, so it was only ever there because mcp 2.0.0 pulled it in.
One incidental note, no action needed: fastapi_mcp is passing a description into what 1.29.0 names version. That's been true all along and is fastapi-mcp's business, but it's probably why mcp 2.x tightened the signature and why this surfaced as a positional-count error rather than a type error.
@ntkathole @franciscojavierarceo this needs ok-to-test to prove itself, and it unblocks the integration suite for every labelled PR.
|
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
|
@ntkathole @franciscojavierarceo — could you please approve the 16 pending workflow runs on this PR?
The ok-to-test label has been added by @jyejare but since this PR is from a fork, the pull_request_target workflows require explicit maintainer approval to execute. The checks are currently failing instantly at the approval gate — not due to any code issue.
This fix unblocks the mcp-feature-server-runtime and registration integration suite for all labelled PRs. @larrysingleton007 has already verified the fix locally. Would appreciate a quick approve on the workflow runs. 🙏
|
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
|
⚠️ Please install the to ensure uploads and comments are reliably processed by Codecov.
✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 46.81%. Comparing base (b8dfcb0) to head (4362125).
❗ Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files

@@ Coverage Diff @@
## master #6713 +/- ##
=======================================
Coverage 46.81% 46.81%
=======================================
Files 415 415
Lines 50399 50399
Branches 7214 7214
=======================================
Hits 23592 23592
Misses 25157 25157
Partials 1650 1650
Continue to review full report in Codecov by Harness.
Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update b8dfcb0...4362125. Read the comment docs.
🚀 New features to boost your workflow:
- ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
- 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.
|
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
|
@nithin42 the workflows are running now, and two have already failed for a reason unrelated to the mcp fix. Both integration-test-duckdb-offline and integration-test-ray die about one second in, at the Setup pixi step, before any test runs:
Error: × lock file not up-to-date with the workspace
##[error]The process '/home/runner/.pixi/bin/pixi' failed with exit code 1
The cause is the psutil==5.9.0 → psutil>=5.9.0 change in pyproject.toml. CI runs pixi install --locked, which hard-fails whenever the manifest and pixi.lock disagree, and the PR doesn't include a regenerated lock. Three more jobs use the same setup step and will fail identically once they run: integration-test-registration-ci, -registration-local, and mcp-feature-server-runtime. That last one is the job this PR is meant to fix, so it can't go green until the lock is regenerated.
Fix is pixi lock, committing pixi.lock alongside pyproject.toml.
Two things that cost me time when I hit this on #6683, in case they save you some:
Nothing local catches it. Unit tests, ruff and mypy all run under uv, not pixi, so a fully green local run tells you nothing about this.
pixi lock --check is not read-only. It rewrites the lock as a side effect before reporting the error, leaving your tree dirty. Use plain pixi lock.
If you don't have pixi installed, this container invocation works:
docker run --rm --platform linux/amd64 \
-e SETUPTOOLS_SCM_PRETEND_VERSION_FOR_FEAST=<version> \
-v <repo>:/src -w /src ghcr.io/prefix-dev/pixi:latest pixi lock
--platform linux/amd64 is required on Apple Silicon, since linux-arm64 isn't among the lock's platforms. The SETUPTOOLS_SCM_PRETEND_VERSION_FOR_FEAST value is safe to fake, because the lock records feast as a path dependency with no version of its own.
Worth noting the psutil loosening is what triggers this, and it's incidental to the mcp fix. Dropping it would avoid the lock regeneration entirely, if you'd rather keep this PR narrow and handle the Windows wheels separately.
|
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
nithin42
commented
Aug 10, 2026
•
edited
Loading
Uh oh!
There was an error while loading. Please reload this page.
|
Thanks @larrysingleton007 — reverted the psutil loosening in 32a3619. It was incidental to the mcp fix and was causing pixi install --locked to fail before tests even ran.
This PR is now narrowly focused on the mcp pin only:
mcp 2.0.0 → 1.29.0 across all nine requirements lock files
mcp-types removed (not needed by 1.29.0)
pyproject.toml unchanged
The psutil Windows-wheel change can follow in a separate PR with a pixi lock regeneration.
@jyejare — force-pushed to revert the incidental psutil change. The PR is now clean and narrowly focused on the mcp pin. Please approve the workflow runs again. Thanks!
|
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
|
@nithin42 Did you run make lock-python-dependencies-all ? if not please run.
|
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
|
@jyejare yes, I successfully ran make lock-python-dependencies-all inside Docker to compile all 15 lock files.
However, doing so required adding a greenlet!=3.5.5 constraint in pyproject.toml (since greenlet==3.5.5 lacks a source distribution on PyPI and crashes pybuild-deps compile).
Because we modified pyproject.toml but did not update pixi.lock, the CI runs are currently failing at the Setup pixi step with:
Error: lock file not up-to-date with the workspace
Would you prefer that we:
- Revert the
pyproject.toml change to keep this PR narrow (since the greenlet compilation failure only affects running dependency lock generation locally, not regular CI/runtime)?
- Keep the
greenlet workaround in pyproject.toml and regenerate/commit the updated pixi.lock alongside it?
|
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
This was referenced Aug 12, 2026
The CI requirements lock files pinned mcp==2.0.0 and mcp-types==2.0.0,
which conflicts with the pyproject.toml constraint mcp>=1.0,<2 added in
a recent change. This caused integration tests and the feature server to
fail with:
TypeError: Server.__init__() takes 2 positional arguments but 3 were given
This commit:
- Downgrades mcp to 1.29.0 across all nine py3.{10,11,12}-{ci,minimal,minimal-sdist}-requirements.txt lock files.
- Adds httpx-sse==0.4.0 with sha256 hashes to all nine lock files (required by mcp==1.29.0).
- Removes mcp-types from all lock files; mcp==1.29.0 declares no dependency on it.
- Updates unit tests in sdk/python/tests/unit/infra/feature_servers/test_mcp_server.py to isolate RestRegistryServer from unmocked RegistryServer gRPC handlers.
Fixes feast-dev#6706
Signed-off-by: Nithin <[email protected]>
|
Hi @jyejare @ntkathole @franciscojavierarceo @larrysingleton007,
Quick update: I have rebased on the latest master and squashed the branch into a single clean commit.
Key changes included:
All 23 CI checks (unit tests on Python 3.10/3.11/3.12 across Ubuntu & macOS, integration tests, and linters) are now fully green.
The PR is ready for your review and merge if everything looks good to you (LGTM). Thanks!
|
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Assignees
No one assigned
Milestone
No milestone
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
|