From 38f8381d17ecc5c76fd1dc55a1ae4159e80a8711 Mon Sep 17 00:00:00 2001
From: martinauyeung-oai <280153141+martinauyeung-oai@users.noreply.github.com>
Date: Tue, 7 Jul 2026 10:49:26 -0700
Subject: [PATCH] Thread MCP App UI support through app discovery
---
codex-rs/app-server/src/message_processor.rs | 6 +-
.../src/request_processors/apps_processor.rs | 5 +-
.../src/request_processors/mcp_processor.rs | 7 +-
.../app-server/tests/suite/v2/app_list.rs | 120 +++++++++++++++++-
codex-rs/codex-mcp/src/codex_apps_cache.rs | 14 +-
.../codex-mcp/src/codex_apps_cache_tests.rs | 49 +++++++
codex-rs/codex-mcp/src/connection_manager.rs | 7 +-
.../codex-mcp/src/connection_manager_tests.rs | 1 +
8 files changed, 195 insertions(+), 14 deletions(-)
diff --git a/codex-rs/app-server/src/message_processor.rs b/codex-rs/app-server/src/message_processor.rs
index b777e7cf2f..949a809a02 100644
--- a/codex-rs/app-server/src/message_processor.rs
+++ b/codex-rs/app-server/src/message_processor.rs
@@ -1305,7 +1305,9 @@ impl MessageProcessor {
self.plugin_processor.plugin_share_delete(params).await
}
ClientRequest::AppsList { params, .. } => {
- self.apps_processor.apps_list(&request_id, params).await
+ self.apps_processor
+ .apps_list(&request_id, params, supports_mcp_app_ui_webview)
+ .await
}
ClientRequest::SkillsConfigWrite { params, .. } => {
self.catalog_processor.skills_config_write(params).await
@@ -1400,7 +1402,7 @@ impl MessageProcessor {
}
ClientRequest::McpServerStatusList { params, .. } => {
self.mcp_processor
- .mcp_server_status_list(&request_id, params)
+ .mcp_server_status_list(&request_id, params, supports_mcp_app_ui_webview)
.await
}
ClientRequest::McpResourceRead { params, .. } => {
diff --git a/codex-rs/app-server/src/request_processors/apps_processor.rs b/codex-rs/app-server/src/request_processors/apps_processor.rs
index 67d768fa57..7ef69ba0b7 100644
--- a/codex-rs/app-server/src/request_processors/apps_processor.rs
+++ b/codex-rs/app-server/src/request_processors/apps_processor.rs
@@ -36,8 +36,9 @@ impl AppsRequestProcessor {
&self,
request_id: &ConnectionRequestId,
params: AppsListParams,
+ supports_mcp_app_ui_webview: bool,
) -> Result