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
@@ -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}
/>
);