-
Notifications
You must be signed in to change notification settings - Fork 1.1k
feat: Add MCP (Model Context Protocol) support for Feast feature server #5406
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
@@ -0,0 +1,114 @@ | |||
# Feast MCP Feature Server Example |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for this!
I'd also add this to the GenAI docs and make it an extra that we enable with pip install feast[mcp]
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@franciscojavierarceo done can u check it
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some last few bits and one question about the config
sdk/python/feast/repo_config.py
Outdated
@@ -105,6 +105,7 @@ | |||
|
|||
FEATURE_SERVER_CONFIG_CLASS_FOR_TYPE = { | |||
"local": "feast.infra.feature_servers.local_process.config.LocalFeatureServerConfig", | |||
"mcp": "feast.infra.feature_servers.mcp_config.McpFeatureServerConfig", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Does this mean you can't run MCP locally?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, MCP can absolutely run locally.
The confusion arises from seeing "local" and "mcp" as separate configuration types in the code. However, these represent different feature server capabilities, not deployment locations:
- type: local = Basic feature server without MCP protocol support
- type: mcp = Feature server with MCP protocol support (can still run on localhost)
…nce" (feast-dev#5398) Revert "fix: Update milvus connect function to work with remote instance (feast-dev#5382)" This reverts commit 7e5e7d5. Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com>
…ality (feast-dev#5389) Signed-off-by: Srihari <svenkata@redhat.com> Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com>
…east-dev#5401) * Updating milvus connect function to work with remote instance Signed-off-by: Fiona Waters <fiwaters6@gmail.com> * Update test configuration to use path for db Signed-off-by: Fiona Waters <fiwaters6@gmail.com> --------- Signed-off-by: Fiona Waters <fiwaters6@gmail.com> Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com>
Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com>
Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com>
Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com>
Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com>
Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com>
Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com>
Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com>
Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com>
Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com>
Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com>
@YassinNouh21 can you rebase the PR I am seeing changes/commits with operator e2e tests. |
@franciscojavierarceo can u take a look again |
feature_logging: | ||
enabled: false | ||
|
||
entity_key_serialization_version: 3 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
as mcp will only implement onlinstore, instead of make new section with feature_server is that possible we can add into into onlinstore section WDYT ?
online_store:
type: sqlite
path: data/online_store.db
mcp:
enabled: true
server_name: "feast-feature-store"
server_version: "1.0.0"
feature_logging:
enabled: false```
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
While embedding MCP config in the online_store
section might seem logical, I'd recommend using a separate feature_server
section instead:
online_store:
type: sqlite
path: data/online_store.db
feature_server:
type: mcp
enabled: true
mcp_enabled: true
mcp_server_name: "feast-feature-store"
mcp_server_version: "1.0.0"
feature_logging:
enabled: false
Why this approach is better:
- MCP is a feature server protocol for API exposure, not an online store storage concern
- Follows the same pattern as other feature server types (
local
, etc.) - The
McpFeatureServerConfig
class inherits fromBaseFeatureServerConfig
, indicating it's designed as a feature server component
What do u think @franciscojavierarceo @ntkathole
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm good with it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What is the purpose of these 3 fields
type: mcp
enabled: true
mcp_enabled: true
my suggestion was if we change the name for example mcp_server
then maybe we don't required these field. you can look mcp_server
section if user added that section then it will be enabled else by default it will disabled/null. Let me know if that make sense or the current approach is more better. Thanks
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
+1
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What @redhatHameed suggested 👍
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In short MCP online store config looks like:
feature_server:
type: mcp
mcp_server_name: "feast-feature-store"
mcp_server_version: "1.0.0"
feature_logging: enabled: false
No hassle of enabling explicitely.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
even if we can make like, that will remove extra type field.
mcp_server:
mcp_server_name: "feast-feature-store"
mcp_server_version: "1.0.0"
feature_logging: enabled: false
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@redhatHameed mind addressing in a follow up PR? I think this is good enough as an MVP
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@YassinNouh21 this item. Removing the type
field from the mcp_server
object.
Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't see the mcp logic in the PR? Or that's up to the user to implement?
It comes from the MCP fast api library addition and config I believe. @YassinNouh21 can you add a unit test to test the MCP server works in the feature server? |
Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com>
Actually I tested those. I don't understand what do u mean? What the tests cover:
What might be missing:
|
Oh yes sorry I even saw that before 🤦♂️ |
assert result is None | ||
|
||
|
||
class TestFeatureServerIntegration: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You should be able to test the MCP feature server itself
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@franciscojavierarceo
I created integration test for it. is it sufficient or not?
Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com>
Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com>
Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com>
Last step @YassinNouh21 just need to run |
FYI @franciscojavierarceo @tchughesiv I hope this will not give hard time while build from source kind of issues in downstream, thought it's optional |
mcp = FastApiMCP( | ||
app, | ||
name=getattr(config, "mcp_server_name", "feast-feature-store"), | ||
description="Feast Feature Store MCP Server - Access feature store data and operations through MCP", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@YassinNouh21 can we check if we can use other parameters like
describe_full_response_schema=True,
describe_all_responses=True,
I tried to run
|
@franciscojavierarceo if u can assist in the |
Do you see any traceback here? Initially milvus-lite does take long time to build, tried keep it running for few mins? |
Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>
alright i compiled the requirements and pushed the changes, also fixed a small DCO. |
Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>
Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>
Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>
@franciscojavierarceo thanks |
@YassinNouh21 can you address @redhatHameed's feedback in a follow up PR by any chance? |
…er (feast-dev#5406) * Revert "fix: Update milvus connect function to work with remote instance" (feast-dev#5398) Revert "fix: Update milvus connect function to work with remote instance (feast-dev#5382)" This reverts commit 7e5e7d5. Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com> * test: Add Operator E2E tests for Feast Apply and Materialize functionality (feast-dev#5389) Signed-off-by: Srihari <svenkata@redhat.com> Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com> * fix: Updating milvus connect function to work with remote instance (feast-dev#5401) * Updating milvus connect function to work with remote instance Signed-off-by: Fiona Waters <fiwaters6@gmail.com> * Update test configuration to use path for db Signed-off-by: Fiona Waters <fiwaters6@gmail.com> --------- Signed-off-by: Fiona Waters <fiwaters6@gmail.com> Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com> * feat: Add MCP support to feature server configuration Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com> * fix linter Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com> * add example Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com> * test: add test cases for the mcp server Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com> * fix linter Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com> * formatting Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com> * docs: update README for MCP setup instructions Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com> * fix: update transformation service endpoint and refactor MCP integration Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com> * feat: add Model Context Protocol (MCP) support and update documentation Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com> * fix: update entity key serialization version and improve README clarity Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com> * fix: refactor MCP imports to use the correct module path Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com> * feat: Add MCP server implementation files Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com> * test: MCP server unit tests and integration tests Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com> * fix formatting Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com> * fix formatting Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com> * adding compiled requirements Signed-off-by: Francisco Javier Arceo <farceo@redhat.com> * fix linter Signed-off-by: Francisco Javier Arceo <farceo@redhat.com> * reverting duckdb change Signed-off-by: Francisco Javier Arceo <farceo@redhat.com> * needed to do file source and duckdb Signed-off-by: Francisco Javier Arceo <farceo@redhat.com> --------- Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com> Signed-off-by: Srihari <svenkata@redhat.com> Signed-off-by: Fiona Waters <fiwaters6@gmail.com> Signed-off-by: Francisco Javier Arceo <farceo@redhat.com> Co-authored-by: Francisco Arceo <arceofrancisco@gmail.com> Co-authored-by: Srihari Venkataramaiah <svenkata@redhat.com> Co-authored-by: Fiona Waters <fiwaters6@gmail.com> Co-authored-by: Francisco Javier Arceo <farceo@redhat.com> Signed-off-by: Jacob Weinhold <29459386+j-wine@users.noreply.github.com>
…er (feast-dev#5406) * Revert "fix: Update milvus connect function to work with remote instance" (feast-dev#5398) Revert "fix: Update milvus connect function to work with remote instance (feast-dev#5382)" This reverts commit 7e5e7d5. Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com> * test: Add Operator E2E tests for Feast Apply and Materialize functionality (feast-dev#5389) Signed-off-by: Srihari <svenkata@redhat.com> Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com> * fix: Updating milvus connect function to work with remote instance (feast-dev#5401) * Updating milvus connect function to work with remote instance Signed-off-by: Fiona Waters <fiwaters6@gmail.com> * Update test configuration to use path for db Signed-off-by: Fiona Waters <fiwaters6@gmail.com> --------- Signed-off-by: Fiona Waters <fiwaters6@gmail.com> Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com> * feat: Add MCP support to feature server configuration Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com> * fix linter Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com> * add example Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com> * test: add test cases for the mcp server Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com> * fix linter Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com> * formatting Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com> * docs: update README for MCP setup instructions Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com> * fix: update transformation service endpoint and refactor MCP integration Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com> * feat: add Model Context Protocol (MCP) support and update documentation Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com> * fix: update entity key serialization version and improve README clarity Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com> * fix: refactor MCP imports to use the correct module path Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com> * feat: Add MCP server implementation files Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com> * test: MCP server unit tests and integration tests Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com> * fix formatting Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com> * fix formatting Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com> * adding compiled requirements Signed-off-by: Francisco Javier Arceo <farceo@redhat.com> * fix linter Signed-off-by: Francisco Javier Arceo <farceo@redhat.com> * reverting duckdb change Signed-off-by: Francisco Javier Arceo <farceo@redhat.com> * needed to do file source and duckdb Signed-off-by: Francisco Javier Arceo <farceo@redhat.com> --------- Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com> Signed-off-by: Srihari <svenkata@redhat.com> Signed-off-by: Fiona Waters <fiwaters6@gmail.com> Signed-off-by: Francisco Javier Arceo <farceo@redhat.com> Co-authored-by: Francisco Arceo <arceofrancisco@gmail.com> Co-authored-by: Srihari Venkataramaiah <svenkata@redhat.com> Co-authored-by: Fiona Waters <fiwaters6@gmail.com> Co-authored-by: Francisco Javier Arceo <farceo@redhat.com>
@YassinNouh21 do you mind opening the follow up PR? |
No problem u mean that the remnaing features ? |
# [0.50.0](v0.49.0...v0.50.0) (2025-06-30) ### Bug Fixes * Add asyncio to integration test ([#5418](#5418)) ([6765515](6765515)) * Add clickhouse to OFFLINE_STORE_CLASS_FOR_TYPE map ([#5251](#5251)) ([9ed2ffa](9ed2ffa)) * Add missing conn.commit() in SnowflakeOnlineStore.online_write_batch ([#5432](#5432)) ([a83dd85](a83dd85)) * Add transformers in required dependencies ([8cde460](8cde460)) * Allow custom annotations on Operator installed objects ([#5339](#5339)) ([44c7a76](44c7a76)) * Dask pulling of latest data ([#5229](#5229)) ([571d81f](571d81f)) * **dask:** preserve remote URIs (e.g. s3://) in DaskOfflineStore path resolution ([2561cfc](2561cfc)) * Fix Event loop is closed error on dynamodb test ([#5480](#5480)) ([fe0f671](fe0f671)) * Fix lineage entity filtering ([#5321](#5321)) ([0d05701](0d05701)) * Fix list saved dataset api ([833696c](833696c)) * Fix NumPy - PyArrow array type mapping in Trino offline store ([#5393](#5393)) ([9ba9ded](9ba9ded)) * Fix pandas 2.x compatibility issue of Trino offline store caused by removed Series.iteritems() method ([#5345](#5345)) ([61e3e02](61e3e02)) * Fix polling mechanism for TestApplyAndMaterialize ([#5451](#5451)) ([b512a74](b512a74)) * Fix remote rbac integration tests ([#5473](#5473)) ([10879ec](10879ec)) * Fix Trino offline store SQL in Jinja template ([#5346](#5346)) ([648c53d](648c53d)) * Fixed CurlGeneratorTab github theme type ([#5425](#5425)) ([5f15329](5f15329)) * Increase the Operator Manager memory limits and requests ([#5441](#5441)) ([6c94dbf](6c94dbf)) * Method signature for push_async is out of date ([#5413](#5413)) ([28c3379](28c3379)), closes [#5410](#5410) [#006BB4](https://github.com/feast-dev/feast/issues/006BB4) * Operator - support securityContext override at Pod level ([#5325](#5325)) ([33ea0f5](33ea0f5)) * Pybuild-deps throws errors w/ latest pip version ([#5311](#5311)) ([f2d6a67](f2d6a67)) * Reopen for integration test about add s3 storage-based registry store in Go feature server ([#5352](#5352)) ([ef75f61](ef75f61)) * resolve Python logger warnings ([#5361](#5361)) ([37d5c19](37d5c19)) * The ignore_paths not taking effect duration feast apply ([#5353](#5353)) ([e4917ca](e4917ca)) * Update generate_answer function to provide correct parameter format to retrieve function ([dc5b2af](dc5b2af)) * Update milvus connect function to work with remote instance ([#5382](#5382)) ([7e5e7d5](7e5e7d5)) * Updating milvus connect function to work with remote instance ([#5401](#5401)) ([b89fadd](b89fadd)) * Upperbound limit for protobuf generation ([#5309](#5309)) ([a114aae](a114aae)) ### Features * Add CLI, SDK, and API documentation page to Feast UI ([#5337](#5337)) ([203e888](203e888)) * Add dark mode toggle to Feast UI ([#5314](#5314)) ([ad02e46](ad02e46)) * Add data labeling tabs to UI ([#5410](#5410)) ([389ceb7](389ceb7)), closes [#006BB4](https://github.com/feast-dev/feast/issues/006BB4) * Add Decimal to allowed python scalar types ([#5367](#5367)) ([4777c03](4777c03)) * Add feast rag retriver functionality ([#5405](#5405)) ([0173033](0173033)) * Add feature view curl generator ([#5415](#5415)) ([7a5b48f](7a5b48f)) * Add feature view lineage tab and filtering to home page lineage ([#5308](#5308)) ([308255d](308255d)) * Add feature view tags to dynamo tags ([#5291](#5291)) ([3a787ac](3a787ac)) * Add HybridOnlineStore for multi-backend online store routing ([#5423](#5423)) ([ebd67d1](ebd67d1)) * Add max_file_size to Snowflake config ([#5377](#5377)) ([e8cdf5d](e8cdf5d)) * Add MCP (Model Context Protocol) support for Feast feature server ([#5406](#5406)) ([de650de](de650de)), closes [#5398](#5398) [#5382](#5382) [#5389](#5389) [#5401](#5401) * Add rag project to default dev UI ([#5323](#5323)) ([3b3e1c8](3b3e1c8)) * Add s3 storage-based registry store in Go feature server ([#5336](#5336)) ([abe18df](abe18df)) * Add support for data labeling in UI ([#5409](#5409)) ([d183c4b](d183c4b)), closes [#27](#27) * Added Lineage APIs to get registry objects relationships ([#5472](#5472)) ([be004ef](be004ef)) * Added rest-apis serving option for registry server ([#5342](#5342)) ([9740fd1](9740fd1)) * Added torch.Tensor as option for online and offline retrieval ([#5381](#5381)) ([0b4ae95](0b4ae95)) * Adding feast delete to CLI ([#5344](#5344)) ([19fe3ac](19fe3ac)) * Adding permissions to UI and refactoring some things ([#5320](#5320)) ([6f1b0cc](6f1b0cc)) * Allow to set registry server rest/grpc mode in operator ([#5364](#5364)) ([99afd6d](99afd6d)) * Allow to use env variable FEAST_FS_YAML_FILE_PATH and FEATURE_REPO_DIR ([#5420](#5420)) ([6a1b33a](6a1b33a)) * Enable materialization for ODFV Transform on Write ([#5459](#5459)) ([3d17892](3d17892)) * Improve search results formatting ([#5326](#5326)) ([18cbd7f](18cbd7f)) * Improvements to Lambda materialization engine ([#5379](#5379)) ([b486f29](b486f29)) * Make batch_source optional in PushSource ([#5440](#5440)) ([#5454](#5454)) ([ae7e20e](ae7e20e)) * Refactor materialization engine ([#5354](#5354)) ([f5c5360](f5c5360)) * Remote Write to Online Store completes client / server architecture ([#5422](#5422)) ([2368f42](2368f42)) * Serialization version 2 and below removed ([#5435](#5435)) ([9e50e18](9e50e18)) * SQLite online retrieval. Add timezone info into timestamp. ([#5386](#5386)) ([6b05153](6b05153)) * Support dual-mode REST and gRPC for Feast Registry Server ([#5396](#5396)) ([fd1f448](fd1f448)) * Support DynamoDB as online store in Go feature server ([#5464](#5464)) ([40d25c6](40d25c6)) * Update Spark Compute read source node to be able to use other data sources ([#5445](#5445)) ([a93d300](a93d300)) ### Reverts * Feat: Add CLI, SDK, and API documentation page to Feast UI" ([#5341](#5341)) ([b492f14](b492f14)), closes [#5337](#5337) * Revert "feat: Add s3 storage-based registry store in Go feature server" ([#5351](#5351)) ([d5d6766](d5d6766)), closes [#5336](#5336) * Revert "fix: Update milvus connect function to work with remote instance" ([#5398](#5398)) ([434dd92](434dd92)), closes [#5382](#5382)
# [0.50.0](v0.49.0...v0.50.0) (2025-07-01) ### Bug Fixes * Add asyncio to integration test ([#5418](#5418)) ([6765515](6765515)) * Add clickhouse to OFFLINE_STORE_CLASS_FOR_TYPE map ([#5251](#5251)) ([9ed2ffa](9ed2ffa)) * Add missing conn.commit() in SnowflakeOnlineStore.online_write_batch ([#5432](#5432)) ([a83dd85](a83dd85)) * Add transformers in required dependencies ([8cde460](8cde460)) * Allow custom annotations on Operator installed objects ([#5339](#5339)) ([44c7a76](44c7a76)) * Dask pulling of latest data ([#5229](#5229)) ([571d81f](571d81f)) * **dask:** preserve remote URIs (e.g. s3://) in DaskOfflineStore path resolution ([2561cfc](2561cfc)) * Fix Event loop is closed error on dynamodb test ([#5480](#5480)) ([fe0f671](fe0f671)) * Fix lineage entity filtering ([#5321](#5321)) ([0d05701](0d05701)) * Fix list saved dataset api ([833696c](833696c)) * Fix NumPy - PyArrow array type mapping in Trino offline store ([#5393](#5393)) ([9ba9ded](9ba9ded)) * Fix pandas 2.x compatibility issue of Trino offline store caused by removed Series.iteritems() method ([#5345](#5345)) ([61e3e02](61e3e02)) * Fix polling mechanism for TestApplyAndMaterialize ([#5451](#5451)) ([b512a74](b512a74)) * Fix remote rbac integration tests ([#5473](#5473)) ([10879ec](10879ec)) * Fix Trino offline store SQL in Jinja template ([#5346](#5346)) ([648c53d](648c53d)) * Fixed CurlGeneratorTab github theme type ([#5425](#5425)) ([5f15329](5f15329)) * Increase the Operator Manager memory limits and requests ([#5441](#5441)) ([6c94dbf](6c94dbf)) * Method signature for push_async is out of date ([#5413](#5413)) ([28c3379](28c3379)), closes [#5410](#5410) [#006BB4](https://github.com/feast-dev/feast/issues/006BB4) * Operator - support securityContext override at Pod level ([#5325](#5325)) ([33ea0f5](33ea0f5)) * Pybuild-deps throws errors w/ latest pip version ([#5311](#5311)) ([f2d6a67](f2d6a67)) * Reopen for integration test about add s3 storage-based registry store in Go feature server ([#5352](#5352)) ([ef75f61](ef75f61)) * resolve Python logger warnings ([#5361](#5361)) ([37d5c19](37d5c19)) * The ignore_paths not taking effect duration feast apply ([#5353](#5353)) ([e4917ca](e4917ca)) * Update generate_answer function to provide correct parameter format to retrieve function ([dc5b2af](dc5b2af)) * Update milvus connect function to work with remote instance ([#5382](#5382)) ([7e5e7d5](7e5e7d5)) * Updating milvus connect function to work with remote instance ([#5401](#5401)) ([b89fadd](b89fadd)) * Upperbound limit for protobuf generation ([#5309](#5309)) ([a114aae](a114aae)) ### Features * Add CLI, SDK, and API documentation page to Feast UI ([#5337](#5337)) ([203e888](203e888)) * Add dark mode toggle to Feast UI ([#5314](#5314)) ([ad02e46](ad02e46)) * Add data labeling tabs to UI ([#5410](#5410)) ([389ceb7](389ceb7)), closes [#006BB4](https://github.com/feast-dev/feast/issues/006BB4) * Add Decimal to allowed python scalar types ([#5367](#5367)) ([4777c03](4777c03)) * Add feast rag retriver functionality ([#5405](#5405)) ([0173033](0173033)) * Add feature view curl generator ([#5415](#5415)) ([7a5b48f](7a5b48f)) * Add feature view lineage tab and filtering to home page lineage ([#5308](#5308)) ([308255d](308255d)) * Add feature view tags to dynamo tags ([#5291](#5291)) ([3a787ac](3a787ac)) * Add HybridOnlineStore for multi-backend online store routing ([#5423](#5423)) ([ebd67d1](ebd67d1)) * Add max_file_size to Snowflake config ([#5377](#5377)) ([e8cdf5d](e8cdf5d)) * Add MCP (Model Context Protocol) support for Feast feature server ([#5406](#5406)) ([de650de](de650de)), closes [#5398](#5398) [#5382](#5382) [#5389](#5389) [#5401](#5401) * Add rag project to default dev UI ([#5323](#5323)) ([3b3e1c8](3b3e1c8)) * Add s3 storage-based registry store in Go feature server ([#5336](#5336)) ([abe18df](abe18df)) * Add support for data labeling in UI ([#5409](#5409)) ([d183c4b](d183c4b)), closes [#27](#27) * Added Lineage APIs to get registry objects relationships ([#5472](#5472)) ([be004ef](be004ef)) * Added rest-apis serving option for registry server ([#5342](#5342)) ([9740fd1](9740fd1)) * Added torch.Tensor as option for online and offline retrieval ([#5381](#5381)) ([0b4ae95](0b4ae95)) * Adding feast delete to CLI ([#5344](#5344)) ([19fe3ac](19fe3ac)) * Adding permissions to UI and refactoring some things ([#5320](#5320)) ([6f1b0cc](6f1b0cc)) * Allow to set registry server rest/grpc mode in operator ([#5364](#5364)) ([99afd6d](99afd6d)) * Allow to use env variable FEAST_FS_YAML_FILE_PATH and FEATURE_REPO_DIR ([#5420](#5420)) ([6a1b33a](6a1b33a)) * Enable materialization for ODFV Transform on Write ([#5459](#5459)) ([3d17892](3d17892)) * Improve search results formatting ([#5326](#5326)) ([18cbd7f](18cbd7f)) * Improvements to Lambda materialization engine ([#5379](#5379)) ([b486f29](b486f29)) * Make batch_source optional in PushSource ([#5440](#5440)) ([#5454](#5454)) ([ae7e20e](ae7e20e)) * Refactor materialization engine ([#5354](#5354)) ([f5c5360](f5c5360)) * Remote Write to Online Store completes client / server architecture ([#5422](#5422)) ([2368f42](2368f42)) * Serialization version 2 and below removed ([#5435](#5435)) ([9e50e18](9e50e18)) * SQLite online retrieval. Add timezone info into timestamp. ([#5386](#5386)) ([6b05153](6b05153)) * Support dual-mode REST and gRPC for Feast Registry Server ([#5396](#5396)) ([fd1f448](fd1f448)) * Support DynamoDB as online store in Go feature server ([#5464](#5464)) ([40d25c6](40d25c6)) * Update Spark Compute read source node to be able to use other data sources ([#5445](#5445)) ([a93d300](a93d300)) ### Reverts * Chore Release "chore(release): release 0.50.0" ([#5483](#5483)) ([0eef391](0eef391)) * Feat: Add CLI, SDK, and API documentation page to Feast UI" ([#5341](#5341)) ([b492f14](b492f14)), closes [#5337](#5337) * Revert "feat: Add s3 storage-based registry store in Go feature server" ([#5351](#5351)) ([d5d6766](d5d6766)), closes [#5336](#5336) * Revert "fix: Update milvus connect function to work with remote instance" ([#5398](#5398)) ([434dd92](434dd92)), closes [#5382](#5382)
What this PR does / why we need it:
This PR implements Model Context Protocol (MCP) support for Feast's feature server, enabling AI agents and applications to interact with Feast feature stores through standardized MCP interfaces.
Key Features:
mcp
feature server type with configurable optionsget_online_features
: Retrieve feature values for entitieslist_feature_views
: List all available feature viewslist_feature_services
: List all available feature servicesget_feature_store_info
: Get feature store metadataImplementation Details:
fastapi_mcp
library for MCP protocol integrationWhich issue(s) this PR fixes:
Fixes #5404