Skip to content

Conversation

@yanavlasov
Copy link
Contributor

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

@repokitteh-read-only
Copy link

CC @envoyproxy/api-shepherds: Your approval is needed for changes made to (api/envoy/|docs/root/api-docs/).
envoyproxy/api-shepherds assignee is @markdroth
CC @envoyproxy/api-watchers: FYI only for changes made to (api/envoy/|docs/root/api-docs/).

🐱

Caused by: #42275 was opened by yanavlasov.

see: more, trace.

Copy link
Member

@botengyao botengyao left a 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;
Copy link
Member

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 ..
}

Copy link
Contributor Author

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.

Copy link
Contributor Author

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]>
@repokitteh-read-only
Copy link

CC @envoyproxy/coverage-shephards: FYI only for changes made to (test/coverage.yaml).
envoyproxy/coverage-shephards assignee is @RyanTheOptimist

🐱

Caused by: #42275 was synchronize by yanavlasov.

see: more, trace.

@yanavlasov
Copy link
Contributor Author

@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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants