Title: Support Streamable HTTP transport for Feature Server MCP integration · Issue #5853 · feast-dev/feast · GitHub
Open Graph Title: Support Streamable HTTP transport for Feature Server MCP integration · Issue #5853 · feast-dev/feast
X Title: Support Streamable HTTP transport for Feature Server MCP integration · Issue #5853 · feast-dev/feast
Description: Is your feature request related to a problem? Please describe. Feast Python Feature Server’s MCP (Model Context Protocol) integration currently uses fastapi_mcp.FastApiMCP.mount(). This produces a deprecation warning at runtime (e.g., “m...
Open Graph Description: Is your feature request related to a problem? Please describe. Feast Python Feature Server’s MCP (Model Context Protocol) integration currently uses fastapi_mcp.FastApiMCP.mount(). This produces a ...
X Description: Is your feature request related to a problem? Please describe. Feast Python Feature Server’s MCP (Model Context Protocol) integration currently uses fastapi_mcp.FastApiMCP.mount(). This produces a ...
Opengraph URL: https://github.com/feast-dev/feast/issues/5853
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Support Streamable HTTP transport for Feature Server MCP integration","articleBody":"**Is your feature request related to a problem? Please describe.**\n\nFeast Python Feature Server’s MCP (Model Context Protocol) integration currently uses fastapi_mcp.FastApiMCP.mount(). This produces a deprecation warning at runtime (e.g., “mount() is deprecated… Use mount_http() …”) and mounts MCP using the legacy SSE-based transport.\n\nIn practice, the SSE MCP endpoint (/mcp) can be unreliable with some MCP clients (e.g., Claude Code / certain IDE MCP integrations). Even when the Feature Server is healthy, the MCP client may show “failed / not authenticated” or fail to connect, forcing users to add a proxy (e.g., mcp-proxy) as a workaround. This reduces usability and makes MCP adoption harder despite Feast being correctly configured.\n\n**Describe the solution you'd like**\n\nAdd first-class support for **Streamable HTTP** MCP transport in the Feature Server, and allow users to select the transport via configuration.\n\nProposed behavior:\n\n- Introduce a Feature Server config option (name TBD), e.g. `mcp_transport: \"http\" | \"sse\"`.\n - Keep the default as `\"sse\"` initially to minimize backward-compatibility risk (open to maintainer preference).\n- When `mcp_transport=http`, mount MCP using `FastApiMCP.mount_http()` (Streamable HTTP).\n- When `mcp_transport=sse`, keep existing behavior (prefer `mount_sse()` if available; otherwise fallback to `mount()` for older `fastapi_mcp` versions).\n- If `mount_http()` is unavailable due to an older `fastapi_mcp`, fail fast with a clear error message (and/or bump the minimum required version).\n\nAcceptance criteria (suggested):\n\n- With `mcp_transport=http`, MCP clients can connect without external proxies and tools are discoverable/callable.\n- With no config change, existing deployments behave exactly as today.\n- Docs include how to enable Streamable HTTP and connect common MCP clients.\n\n**Describe alternatives you've considered**\n\n1. **Keep SSE-only and document `mcp-proxy` as the workaround**\n - Pros: minimal code changes\n - Cons: requires extra installation/configuration and doesn’t feel like “supported” out of the box\n2. **Switch the default transport to HTTP**\n - Pros: aligns with the recommended transport immediately\n - Cons: potential compatibility risk for existing users/clients relying on legacy SSE behavior\n3. **Auto-detect transport based on client**\n - Pros: fewer user-facing knobs\n - Cons: harder to reason about, larger scope, more complex to test/debug\n\n**Additional context**\n\n- Runtime warning indicates `mount()` is deprecated and suggests `mount_http()` (recommended) or `mount_sse()`.\n- Hitting `GET /mcp` returns `text/event-stream` and an SSE handshake (`event: endpoint ... /mcp/messages/?session_id=...`), confirming the legacy SSE transport.\n- In a local setup, a Claude Code client only connected reliably after inserting `mcp-proxy` as a stdio↔SSE bridge; once bridged, tool discovery and calls (e.g., `get_online_features`) worked as expected.\n\nI’m happy to implement this and open a PR following the dev guide \n\n","author":{"url":"https://github.com/HaJunYoo","@type":"Person","name":"HaJunYoo"},"datePublished":"2026-01-14T02:09:19.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":1},"url":"https://github.com/5853/feast/issues/5853"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:2035a3fb-2752-8516-c33a-fac965d3d165 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | A14C:3D0120:4AC693:663A40:6A4DA60B |
| html-safe-nonce | db32e98d0694c02ec37dec029f11eb9b2f3d1b725ee013ba75333099914d66fa |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJBMTRDOjNEMDEyMDo0QUM2OTM6NjYzQTQwOjZBNERBNjBCIiwidmlzaXRvcl9pZCI6IjMyNzQxODU4NjUxMDY5MjUwNjciLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== |
| visitor-hmac | ae3d5d332429fda89df4ef9c933c062876635474dadb778ca257d83738245e78 |
| hovercard-subject-tag | issue:3811232297 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/feast-dev/feast/5853/issue_layout |
| twitter:image | https://opengraph.githubassets.com/071ef5e3fa71fbe3c688b32244842f85a48b54b06c6ce651db9ed76b1cf9dd94/feast-dev/feast/issues/5853 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/071ef5e3fa71fbe3c688b32244842f85a48b54b06c6ce651db9ed76b1cf9dd94/feast-dev/feast/issues/5853 |
| og:image:alt | Is your feature request related to a problem? Please describe. Feast Python Feature Server’s MCP (Model Context Protocol) integration currently uses fastapi_mcp.FastApiMCP.mount(). This produces a ... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | HaJunYoo |
| hostname | github.com |
| expected-hostname | github.com |
| None | 06b8a6144231bf3a234f1c2e9993861e07ce98a905912b114aa386c2d7e84b33 |
| turbo-cache-control | no-preview |
| go-import | github.com/feast-dev/feast git https://github.com/feast-dev/feast.git |
| octolytics-dimension-user_id | 57027613 |
| octolytics-dimension-user_login | feast-dev |
| octolytics-dimension-repository_id | 161133770 |
| octolytics-dimension-repository_nwo | feast-dev/feast |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 161133770 |
| octolytics-dimension-repository_network_root_nwo | feast-dev/feast |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 7f13faa65cccc9b729d674da83335d5dcfdfd193 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width