feat: add onFallbackRequest handler to McpAppRenderer (#7208)

This commit is contained in:
Andrew Harvard
2026-02-13 10:36:46 -05:00
committed by GitHub
parent ed3c08590a
commit 0206035dba
3 changed files with 22 additions and 7 deletions
+4 -4
View File
@@ -9,7 +9,7 @@
"version": "1.23.0",
"license": "Apache-2.0",
"dependencies": {
"@mcp-ui/client": "^6.0.0",
"@mcp-ui/client": "^6.1.0",
"@modelcontextprotocol/ext-apps": "^1.0.1",
"@radix-ui/react-accordion": "^1.2.12",
"@radix-ui/react-avatar": "^1.1.11",
@@ -3089,9 +3089,9 @@
}
},
"node_modules/@mcp-ui/client": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/@mcp-ui/client/-/client-6.0.0.tgz",
"integrity": "sha512-dHIQGjFOoBWBntSRUJH5YFeq7xi2rEPS0EwokeNAnMg6xrjGjvNd6vTWDHFRC04OlO/ogvM1r5+xUoo0OETaaQ==",
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/@mcp-ui/client/-/client-6.1.0.tgz",
"integrity": "sha512-Wk/9uhu8xdOgHjiaEtAq2RbXn4WGstpFeJ6I71JCP7JC7MtvQB/qnEKDVGSbjwyLnIeZYMSILHf5E+57/YCftQ==",
"license": "Apache-2.0",
"dependencies": {
"@modelcontextprotocol/ext-apps": "^0.3.1",
+1 -1
View File
@@ -39,7 +39,7 @@
"start-alpha-gui": "ALPHA=true npm run start-gui"
},
"dependencies": {
"@mcp-ui/client": "^6.0.0",
"@mcp-ui/client": "^6.1.0",
"@modelcontextprotocol/ext-apps": "^1.0.1",
"@radix-ui/react-accordion": "^1.2.12",
"@radix-ui/react-avatar": "^1.1.11",
@@ -15,7 +15,7 @@
* - "standalone" — Goose-specific mode for dedicated Electron windows
*/
import { AppRenderer } from '@mcp-ui/client';
import { AppRenderer, type RequestHandlerExtra } from '@mcp-ui/client';
import type {
McpUiDisplayMode,
McpUiHostContext,
@@ -23,7 +23,7 @@ import type {
McpUiResourcePermissions,
McpUiSizeChangedNotification,
} from '@modelcontextprotocol/ext-apps/app-bridge';
import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
import type { CallToolResult, JSONRPCRequest } from '@modelcontextprotocol/sdk/types.js';
import { useCallback, useEffect, useMemo, useReducer, useState } from 'react';
import { callTool, readResource } from '../../api';
import { AppEvents } from '../../constants/events';
@@ -400,6 +400,20 @@ export default function McpAppRenderer({
[]
);
const handleFallbackRequest = useCallback(
async (request: JSONRPCRequest, _extra: RequestHandlerExtra) => {
// todo: handle `sampling/createMessage` per https://github.com/block/goose/pull/7039
if (request.method === 'sampling/createMessage') {
return { status: 'success' as const };
}
return {
status: 'error' as const,
message: `Unhandled JSON-RPC method: ${request.method ?? '<unknown>'}`,
};
},
[]
);
const handleError = useCallback((err: Error) => {
console.error('[MCP App Error]:', err);
dispatch({ type: 'ERROR', message: errorMessage(err) });
@@ -516,6 +530,7 @@ export default function McpAppRenderer({
onReadResource={handleReadResource}
onLoggingMessage={handleLoggingMessage}
onSizeChanged={handleSizeChanged}
onFallbackRequest={handleFallbackRequest}
onError={handleError}
/>
);