-
Notifications
You must be signed in to change notification settings - Fork 5.2k
Add configuration for MCP router filter #42275
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
base: main
Are you sure you want to change the base?
Conversation
Signed-off-by: Yan Avlasov <[email protected]>
|
CC @envoyproxy/api-shepherds: Your approval is needed for changes made to |
botengyao
left a comment
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.
Thanks for adding this proto!
/wait
| // A list of remote MCP servers. MCP router aggregates capabilities, tools and resources from remote MCP servers | ||
| // and presents itself as single MCP server to the client. All remote MCP servers are sent the same capabilities | ||
| // that the client presented to Envoy. | ||
| repeated config.core.v3.HttpUri mcp_server_uri = 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.
Will adding a top layer for backends be better in term of extensionality? Something like the following:
message McpRouter {
repeated McpBackend backends = 1 [(validate.rules).repeated = {min_items: 1}];
}
message McpBackend {
string name = 1;
oneof target {
// Static cluster reference
string cluster = 2;
// Dynamic URI
config.core.v3.HttpUri = 3; // e.g. "https://api.github.com/mcp"
}
other attributes like prefix ..
}
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.
Sounds good. Note that HttpUri already has cluster in 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.
I have updated the proto. Keeping it to the minimum for now to move faster.
I did not want to add the requirement to have minimum 1 backend. It is possible that control plane may have to provision 0 backends while it is in some transitional state. Envoy can respond with 503 if it does not have any MCP servers.
Signed-off-by: Yan Avlasov <[email protected]>
Signed-off-by: Yan Avlasov <[email protected]>
Signed-off-by: Yan Avlasov <[email protected]>
Signed-off-by: Yan Avlasov <[email protected]>
Signed-off-by: Yan Avlasov <[email protected]>
|
CC @envoyproxy/coverage-shephards: FYI only for changes made to |
|
@RyanTheOptimist we are splitting the work on this among multiple people and need to bypass coverage to get boilerplate committed. I will adjust coverage up as tests and filter code are added. |
Extension for abstracting multiple MPC servers as one. Capabilities, tools and resources of remote MCP servers are combined and presented as a single MCP server to the client. This allows a unified policy to be applied to multiple remote servers.
Part of #39174
Risk Level: none
Testing: n/a
Docs Changes: yes
Release Notes: n/a
Platform Specific Features: n/a