Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
85a18dc
feat: Add enabled/disabled toggle for feature views
rpathade May 13, 2026
5e98c7f
feat: Add demo noteboooks for users
ntkathole May 8, 2026
f735cd2
feat: Add CLI enable/disable commands and registry metadata support
rpathade May 15, 2026
426ae09
Added features
rpathade May 16, 2026
365ecb4
fix(compute-engine/local): Honor field_mapping on join keys in dedup …
1fanwang May 13, 2026
5b94d4d
feat: Add Prometheus gauges for FeatureStore installation telemetry (…
ntkathole May 13, 2026
b5297b8
docs: Rename Atlas Vector Search to MongoDB Vector Search and fix cod…
jvincent-mongodb May 13, 2026
04d500c
feat(dynamodb): Use ProjectionExpression when requested_features is set
Jwrede May 3, 2026
c9e368b
fix(dynamodb): Fix mypy type for _build_projection_expression return
Jwrede May 3, 2026
de050ab
fix(bigquery): Enable list inference for parquet loads in offline_wri…
Jwrede May 3, 2026
78fcd72
fix(trino): Clean up temporary entity tables after retrieval (#6381)
Jwrede May 14, 2026
2014acd
feat(bigquery): Support DATE-type event timestamp columns (#6362)
Jwrede May 14, 2026
5e69e5f
fix: Fixes for ray source
ntkathole May 14, 2026
53e4a92
feat: Expose registry endpoints on feature server for MCP access
patelchaitany Apr 21, 2026
e9791b0
fix: Revert state propagation to always update in _update_metadata_fi…
rpathade May 16, 2026
f7fd0f8
fix: Recompile protos for protobuf 4.x compatibility and fix state ma…
rpathade May 18, 2026
a4f7ab8
feat: Add unit tests for state machine and clean up lazy imports in r…
rpathade May 18, 2026
3aa8778
fix: Address review comments for feature view state management
rpathade May 20, 2026
e626433
fix: Resolve integration test failures in apply loop
rpathade May 20, 2026
8130b63
fix: Resolve integration test failures in apply loop
rpathade May 20, 2026
2b54bd0
Apply suggestion from @ntkathole
rpathade May 21, 2026
cb33b6d
fix: Resolve review comments for feature_store
rpathade May 21, 2026
f3b94eb
fix: Resolve review comments for feature_views.py
rpathade May 21, 2026
a4c85dc
Merge branch 'master' into feat/feature-view-enabled-disabled-v2
rpathade May 21, 2026
abb6a41
Merge remote-tracking branch 'origin/master' into feat/feature-view-e…
rpathade May 21, 2026
f4dd0a4
feat: Add FeatureStore methods and update describe for enabled/state
rpathade May 22, 2026
a3f65b0
Merge branch 'master' into feat/feature-view-enabled-disabled-v2
rpathade May 22, 2026
efd41a6
fix: Add type: ignore comments for mypy on BaseFeatureView attr access
rpathade May 22, 2026
436a712
fix: Remove REST API endpoints for enable/disable/set-state (deferred…
rpathade May 22, 2026
7110346
Merge remote-tracking branch 'origin/master' into feat/feature-view-e…
rpathade May 22, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
feat: Expose registry endpoints on feature server for MCP access
Mount the existing REST registry routers under /registry on the feature
server so that fastapi_mcp automatically exposes registry introspection
(list/get for entities, feature views, data sources, feature services,
permissions, projects, saved datasets, lineage, search) as MCP tools.

The RegistryServer is created in-process from store.registry — no
external registry server is required. Auth is enforced via
inject_user_details on every mounted router.

Made-with: Cursor
Signed-off-by: Chaitany patel <patelchaitany93@gmail.com>
Made-with: Cursor
Signed-off-by: RutujaPathade <73137503+RutujaPathade@users.noreply.github.com>
  • Loading branch information
patelchaitany authored and rpathade committed May 21, 2026
commit 53e4a9213be991d9d17b63658fb3d631065c9105
6 changes: 3 additions & 3 deletions .secrets.baseline

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

28 changes: 28 additions & 0 deletions docs/how-to-guides/feast-operator/03-serving-and-observability.md
Original file line number Diff line number Diff line change
Expand Up @@ -279,6 +279,34 @@ MCP is mounted at `/mcp` on port 6566 — no additional Kubernetes Service is cr
> **Dependency**: the feature server image must include `feast[mcp]` (`fastapi-mcp`).
> Without it the server starts normally but MCP routes are not registered.

### Registry MCP

MCP can also be enabled on the **registry REST server**, exposing registry metadata
(entities, feature views, feature services) as MCP tool endpoints. This is configured
under `registry.local.server.mcp` and requires `restAPI: true`.

```yaml
services:
registry:
local:
server:
restAPI: true
mcp:
enabled: true
persistence:
store:
type: sql
secretRef:
name: feast-data-stores
```

The operator writes `registry.mcp.enabled: true` into `feature_store.yaml` when
this field is set. A CEL validation rule enforces that `restAPI` must be `true`
when MCP is enabled.

> **Note**: Registry MCP uses only the `enabled` field — `serverName`, `serverVersion`,
> and `transport` are not applicable to the registry server.

---

## `serving` vs `server` — summary
Expand Down
27 changes: 27 additions & 0 deletions docs/how-to-guides/feast-operator/04-registry-topology.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,32 @@ registry:
grpc: true # enable gRPC (default: true when server is set)
```

### MCP on the registry server

When the REST API is enabled, you can additionally expose registry metadata as
MCP (Model Context Protocol) tool endpoints for LLM agents:

```yaml
services:
registry:
local:
server:
restAPI: true
mcp:
enabled: true
persistence:
store:
type: sql
secretRef:
name: feast-data-stores
```

The operator writes `registry.mcp.enabled: true` into `feature_store.yaml`.
A validation rule enforces that `restAPI` must be `true` when `mcp.enabled` is `true`.

See [Guide 3 — Serving & Observability](03-serving-and-observability.md#registry-mcp)
for more details and the full MCP configuration reference.

---

## Remote registry
Expand Down Expand Up @@ -188,4 +214,5 @@ spec:
- [API reference — `RemoteRegistryConfig`](https://github.com/feast-dev/feast/blob/stable/infra/feast-operator/docs/api/markdown/ref.md#remoteregistryconfig)
- [Sample: all remote servers](https://github.com/feast-dev/feast/blob/stable/infra/feast-operator/config/samples/v1_featurestore_all_remote_servers.yaml)
- [Sample: DB persistence](https://github.com/feast-dev/feast/blob/stable/infra/feast-operator/config/samples/v1_featurestore_db_persistence.yaml)
- [Sample: MCP](https://github.com/feast-dev/feast/blob/stable/infra/feast-operator/config/samples/v1_featurestore_mcp.yaml)
- [Feast SDK — Registries](../reference/registries/)
23 changes: 23 additions & 0 deletions docs/reference/feature-store-yaml.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,29 @@ feature_server:
offline_push_batching_batch_interval_seconds: 5 # Maximum time rows may remain buffered before a forced flush.
```

### registry

The `registry` field can be a simple path string or an object with additional
configuration. When using the REST registry server, MCP support can be enabled:

```yaml
registry:
registry_type: sql
path: postgresql+psycopg://feast:feast@localhost:5432/feast #pragma: allowlist secret
mcp:
enabled: true
```

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `registry_type` | string | `file` | Registry backend (`file`, `sql`, etc.) |
| `path` | string | — | Connection string or file path |
| `mcp.enabled` | bool | `false` | Enable MCP (Model Context Protocol) on the REST registry server |

When `registry.mcp.enabled` is `true`, the REST registry server exposes registry
metadata (entities, feature views, feature services) as MCP tool endpoints for
LLM agents. Requires `feast[mcp]` to be installed.

## Providers

The `provider` field defines the environment in which Feast will execute data flows. As a result, it also determines the default values for other fields.
Expand Down
6 changes: 6 additions & 0 deletions infra/feast-operator/api/v1/featurestore_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -770,6 +770,7 @@ type WorkerConfigs struct {

// RegistryServerConfigs creates a registry server for the feast service, with specified container configurations.
// +kubebuilder:validation:XValidation:rule="self.restAPI == true || self.grpc == true || !has(self.grpc)", message="At least one of restAPI or grpc must be true"
// +kubebuilder:validation:XValidation:rule="!has(self.mcp) || !self.mcp.enabled || (has(self.restAPI) && self.restAPI == true)", message="MCP requires restAPI to be true"
type RegistryServerConfigs struct {
ServerConfigs `json:",inline"`

Expand All @@ -778,6 +779,11 @@ type RegistryServerConfigs struct {

// Enable gRPC registry server. Defaults to true if unset.
GRPC *bool `json:"grpc,omitempty"`

// Mcp enables MCP (Model Context Protocol) on the REST registry server.
// Requires restAPI to be true. Reuses the same McpConfig struct as the online store.
// +optional
Mcp *McpConfig `json:"mcp,omitempty"`
}

// CronJobContainerConfigs k8s container settings for the CronJob
Expand Down
5 changes: 5 additions & 0 deletions infra/feast-operator/api/v1/zz_generated.deepcopy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ metadata:
}
]
capabilities: Basic Install
createdAt: "2026-05-04T03:44:24Z"
createdAt: "2026-05-12T07:35:41Z"
operators.operatorframework.io/builder: operator-sdk-v1.41.0
operators.operatorframework.io/project_layout: go.kubebuilder.io/v4
name: feast-operator.v0.63.0
Expand Down
50 changes: 50 additions & 0 deletions infra/feast-operator/bundle/manifests/feast.dev_featurestores.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3061,6 +3061,31 @@ spec:
- error
- critical
type: string
mcp:
description: |-
Mcp enables MCP (Model Context Protocol) on the REST registry server.
Requires restAPI to be true.
properties:
enabled:
description: Enable the MCP server.
type: boolean
serverName:
description: MCP server name for identification.
Defaults to "feast-mcp-server".
type: string
serverVersion:
description: MCP server version string. Defaults
to "1.0.0".
type: string
transport:
description: MCP transport protocol.
enum:
- sse
- http
type: string
required:
- enabled
type: object
metrics:
description: Metrics exposes Prometheus-compatible
metrics for the Feast server when enabled.
Expand Down Expand Up @@ -9031,6 +9056,31 @@ spec:
- error
- critical
type: string
mcp:
description: |-
Mcp enables MCP (Model Context Protocol) on the REST registry server.
Requires restAPI to be true.
properties:
enabled:
description: Enable the MCP server.
type: boolean
serverName:
description: MCP server name for identification.
Defaults to "feast-mcp-server".
type: string
serverVersion:
description: MCP server version string. Defaults
to "1.0.0".
type: string
transport:
description: MCP transport protocol.
enum:
- sse
- http
type: string
required:
- enabled
type: object
metrics:
description: Metrics exposes Prometheus-compatible
metrics for the Feast server when enabled.
Expand Down
56 changes: 56 additions & 0 deletions infra/feast-operator/config/crd/bases/feast.dev_featurestores.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3061,6 +3061,31 @@ spec:
- error
- critical
type: string
mcp:
description: |-
Mcp enables MCP (Model Context Protocol) on the REST registry server.
Requires restAPI to be true.
properties:
enabled:
description: Enable the MCP server.
type: boolean
serverName:
description: MCP server name for identification.
Defaults to "feast-mcp-server".
type: string
serverVersion:
description: MCP server version string. Defaults
to "1.0.0".
type: string
transport:
description: MCP transport protocol.
enum:
- sse
- http
type: string
required:
- enabled
type: object
metrics:
description: Metrics exposes Prometheus-compatible
metrics for the Feast server when enabled.
Expand Down Expand Up @@ -3255,6 +3280,9 @@ spec:
x-kubernetes-validations:
- message: At least one of restAPI or grpc must be true
rule: self.restAPI == true || self.grpc == true || !has(self.grpc)
- message: MCP requires restAPI to be true
rule: '!has(self.mcp) || !self.mcp.enabled || (has(self.restAPI)
&& self.restAPI == true)'
type: object
remote:
description: RemoteRegistryConfig points to a remote feast
Expand Down Expand Up @@ -9031,6 +9059,31 @@ spec:
- error
- critical
type: string
mcp:
description: |-
Mcp enables MCP (Model Context Protocol) on the REST registry server.
Requires restAPI to be true.
properties:
enabled:
description: Enable the MCP server.
type: boolean
serverName:
description: MCP server name for identification.
Defaults to "feast-mcp-server".
type: string
serverVersion:
description: MCP server version string. Defaults
to "1.0.0".
type: string
transport:
description: MCP transport protocol.
enum:
- sse
- http
type: string
required:
- enabled
type: object
metrics:
description: Metrics exposes Prometheus-compatible
metrics for the Feast server when enabled.
Expand Down Expand Up @@ -9231,6 +9284,9 @@ spec:
true
rule: self.restAPI == true || self.grpc == true
|| !has(self.grpc)
- message: MCP requires restAPI to be true
rule: '!has(self.mcp) || !self.mcp.enabled || (has(self.restAPI)
&& self.restAPI == true)'
type: object
remote:
description: RemoteRegistryConfig points to a remote feast
Expand Down
7 changes: 7 additions & 0 deletions infra/feast-operator/config/samples/v1_featurestore_mcp.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,10 @@ spec:
serverVersion: "1.0.0"
# transport can be "sse" (default) or "http"
transport: sse
registry:
local:
server:
# MCP on the registry requires REST API to be enabled.
restAPI: true
mcp:
enabled: true
Loading