Skip to content

Commit a11a022

Browse files
ochafikclaude
andcommitted
refactor: rename request methods to remove send prefix
Following the MCP TS SDK convention where request methods don't have the "send" prefix (reserved for notifications): - App.sendMessage() → App.message() - App.sendOpenLink() → App.openLink() - AppBridge.sendResourceTeardown() → AppBridge.resourceTeardown() The old method names are kept as deprecated aliases for backwards compatibility. Updated all examples to use the new method names. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
1 parent 9748622 commit a11a022

File tree

10 files changed

+33
-27
lines changed

10 files changed

+33
-27
lines changed

examples/basic-host/src/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,7 @@ function AppIFramePanel({ toolCallInfo, isDestroying, onTeardownComplete }: AppI
289289
}
290290

291291
log.info("Sending teardown notification to MCP App");
292-
appBridgeRef.current.sendResourceTeardown({})
292+
appBridgeRef.current.resourceTeardown({})
293293
.catch((err) => {
294294
log.warn("Teardown request failed (app may have already closed):", err);
295295
})

examples/basic-server-react/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ An MCP App example with a React UI.
99

1010
- Tool registration with a linked UI resource
1111
- React UI using the [`useApp()`](https://modelcontextprotocol.github.io/ext-apps/api/functions/_modelcontextprotocol_ext-apps_react.useApp.html) hook
12-
- App communication APIs: [`callServerTool`](https://modelcontextprotocol.github.io/ext-apps/api/classes/app.App.html#callservertool), [`sendMessage`](https://modelcontextprotocol.github.io/ext-apps/api/classes/app.App.html#sendmessage), [`sendLog`](https://modelcontextprotocol.github.io/ext-apps/api/classes/app.App.html#sendlog), [`sendOpenLink`](https://modelcontextprotocol.github.io/ext-apps/api/classes/app.App.html#sendopenlink)
12+
- App communication APIs: [`callServerTool`](https://modelcontextprotocol.github.io/ext-apps/api/classes/app.App.html#callservertool), [`message`](https://modelcontextprotocol.github.io/ext-apps/api/classes/app.App.html#message), [`sendLog`](https://modelcontextprotocol.github.io/ext-apps/api/classes/app.App.html#sendlog), [`openLink`](https://modelcontextprotocol.github.io/ext-apps/api/classes/app.App.html#openlink)
1313

1414
## Key Files
1515

examples/basic-server-react/src/mcp-app.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ function GetTimeAppInner({ app, toolResult }: GetTimeAppInnerProps) {
9393
const signal = AbortSignal.timeout(5000);
9494
try {
9595
log.info("Sending message text to Host:", messageText);
96-
const { isError } = await app.sendMessage(
96+
const { isError } = await app.message(
9797
{ role: "user", content: [{ type: "text", text: messageText }] },
9898
{ signal },
9999
);
@@ -110,7 +110,7 @@ function GetTimeAppInner({ app, toolResult }: GetTimeAppInnerProps) {
110110

111111
const handleOpenLink = useCallback(async () => {
112112
log.info("Sending open link request to Host:", linkUrl);
113-
const { isError } = await app.sendOpenLink({ url: linkUrl });
113+
const { isError } = await app.openLink({ url: linkUrl });
114114
log.info("Open link request", isError ? "rejected" : "accepted");
115115
}, [app, linkUrl]);
116116

examples/basic-server-vanillajs/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ An MCP App example with a vanilla JavaScript UI (no framework).
99

1010
- Tool registration with a linked UI resource
1111
- Vanilla JS UI using the [`App`](https://modelcontextprotocol.github.io/ext-apps/api/classes/app.App.html) class directly
12-
- App communication APIs: [`callServerTool`](https://modelcontextprotocol.github.io/ext-apps/api/classes/app.App.html#callservertool), [`sendMessage`](https://modelcontextprotocol.github.io/ext-apps/api/classes/app.App.html#sendmessage), [`sendLog`](https://modelcontextprotocol.github.io/ext-apps/api/classes/app.App.html#sendlog), [`sendOpenLink`](https://modelcontextprotocol.github.io/ext-apps/api/classes/app.App.html#sendopenlink)
12+
- App communication APIs: [`callServerTool`](https://modelcontextprotocol.github.io/ext-apps/api/classes/app.App.html#callservertool), [`message`](https://modelcontextprotocol.github.io/ext-apps/api/classes/app.App.html#message), [`sendLog`](https://modelcontextprotocol.github.io/ext-apps/api/classes/app.App.html#sendlog), [`openLink`](https://modelcontextprotocol.github.io/ext-apps/api/classes/app.App.html#openlink)
1313

1414
## Key Files
1515

examples/basic-server-vanillajs/src/mcp-app.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ sendMessageBtn.addEventListener("click", async () => {
7575
const signal = AbortSignal.timeout(5000);
7676
try {
7777
log.info("Sending message text to Host:", messageText.value);
78-
const { isError } = await app.sendMessage(
78+
const { isError } = await app.message(
7979
{ role: "user", content: [{ type: "text", text: messageText.value }] },
8080
{ signal },
8181
);
@@ -92,7 +92,7 @@ sendLogBtn.addEventListener("click", async () => {
9292

9393
openLinkBtn.addEventListener("click", async () => {
9494
log.info("Sending open link request to Host:", linkUrl.value);
95-
const { isError } = await app.sendOpenLink({ url: linkUrl.value });
95+
const { isError } = await app.openLink({ url: linkUrl.value });
9696
log.info("Open link request", isError ? "rejected" : "accepted");
9797
});
9898

examples/threejs-server/src/mcp-app-wrapper.tsx

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,9 @@ export interface WidgetProps<TToolInput = Record<string, unknown>> {
3030
/** Call a tool on the MCP server */
3131
callServerTool: App["callServerTool"];
3232
/** Send a message to the host's chat */
33-
sendMessage: App["sendMessage"];
33+
message: App["message"];
3434
/** Request the host to open a URL */
35-
sendOpenLink: App["sendOpenLink"];
35+
openLink: App["openLink"];
3636
/** Send log messages to the host */
3737
sendLog: App["sendLog"];
3838
}
@@ -77,12 +77,12 @@ function McpAppWrapper() {
7777
(params, options) => app!.callServerTool(params, options),
7878
[app],
7979
);
80-
const sendMessage = useCallback<App["sendMessage"]>(
81-
(params, options) => app!.sendMessage(params, options),
80+
const message = useCallback<App["message"]>(
81+
(params, options) => app!.message(params, options),
8282
[app],
8383
);
84-
const sendOpenLink = useCallback<App["sendOpenLink"]>(
85-
(params, options) => app!.sendOpenLink(params, options),
84+
const openLink = useCallback<App["openLink"]>(
85+
(params, options) => app!.openLink(params, options),
8686
[app],
8787
);
8888
const sendLog = useCallback<App["sendLog"]>(
@@ -105,8 +105,8 @@ function McpAppWrapper() {
105105
toolResult={toolResult}
106106
hostContext={hostContext}
107107
callServerTool={callServerTool}
108-
sendMessage={sendMessage}
109-
sendOpenLink={sendOpenLink}
108+
message={message}
109+
openLink={openLink}
110110
sendLog={sendLog}
111111
/>
112112
);

examples/threejs-server/src/threejs-app.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,8 +142,8 @@ export default function ThreeJSApp({
142142
toolResult: _toolResult,
143143
hostContext: _hostContext,
144144
callServerTool: _callServerTool,
145-
sendMessage: _sendMessage,
146-
sendOpenLink: _sendOpenLink,
145+
message: _message,
146+
openLink: _openLink,
147147
sendLog: _sendLog,
148148
}: ThreeJSAppProps) {
149149
const [error, setError] = useState<string | null>(null);

examples/wiki-explorer-server/src/mcp-app.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,7 @@ resetBtn.addEventListener("click", async () => {
270270
// Open button - opens the Wikipedia page in browser
271271
openBtn.addEventListener("click", async () => {
272272
if (selectedNodeUrl) {
273-
await app.sendOpenLink({ url: selectedNodeUrl });
273+
await app.openLink({ url: selectedNodeUrl });
274274
hidePopup();
275275
}
276276
});

src/app-bridge.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1174,15 +1174,15 @@ export class AppBridge extends Protocol<
11741174
* @example
11751175
* ```typescript
11761176
* try {
1177-
* await bridge.sendResourceTeardown({});
1177+
* await bridge.resourceTeardown({});
11781178
* // Guest UI is ready, safe to unmount iframe
11791179
* iframe.remove();
11801180
* } catch (error) {
11811181
* console.error("Teardown failed:", error);
11821182
* }
11831183
* ```
11841184
*/
1185-
sendResourceTeardown(
1185+
resourceTeardown(
11861186
params: McpUiResourceTeardownRequest["params"],
11871187
options?: RequestOptions,
11881188
) {
@@ -1196,6 +1196,9 @@ export class AppBridge extends Protocol<
11961196
);
11971197
}
11981198

1199+
/** @deprecated Use {@link resourceTeardown} instead */
1200+
sendResourceTeardown: AppBridge["resourceTeardown"] = this.resourceTeardown;
1201+
11991202
/**
12001203
* Connect to the Guest UI via transport and optionally set up message forwarding.
12011204
*

src/app.ts

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -758,7 +758,7 @@ export class App extends Protocol<AppRequest, AppNotification, AppResult> {
758758
* @example Send a text message from user interaction
759759
* ```typescript
760760
* try {
761-
* await app.sendMessage({
761+
* await app.message({
762762
* role: "user",
763763
* content: [{ type: "text", text: "Show me details for item #42" }]
764764
* });
@@ -770,7 +770,7 @@ export class App extends Protocol<AppRequest, AppNotification, AppResult> {
770770
*
771771
* @see {@link McpUiMessageRequest} for request structure
772772
*/
773-
sendMessage(params: McpUiMessageRequest["params"], options?: RequestOptions) {
773+
message(params: McpUiMessageRequest["params"], options?: RequestOptions) {
774774
return this.request(
775775
<McpUiMessageRequest>{
776776
method: "ui/message",
@@ -781,6 +781,9 @@ export class App extends Protocol<AppRequest, AppNotification, AppResult> {
781781
);
782782
}
783783

784+
/** @deprecated Use {@link message} instead */
785+
sendMessage: App["message"] = this.message;
786+
784787
/**
785788
* Send log messages to the host for debugging and telemetry.
786789
*
@@ -823,7 +826,7 @@ export class App extends Protocol<AppRequest, AppNotification, AppResult> {
823826
* @example Open documentation link
824827
* ```typescript
825828
* try {
826-
* await app.sendOpenLink({ url: "https://docs.example.com" });
829+
* await app.openLink({ url: "https://docs.example.com" });
827830
* } catch (error) {
828831
* console.error("Failed to open link:", error);
829832
* // Optionally show fallback: display URL for manual copy
@@ -832,10 +835,7 @@ export class App extends Protocol<AppRequest, AppNotification, AppResult> {
832835
*
833836
* @see {@link McpUiOpenLinkRequest} for request structure
834837
*/
835-
sendOpenLink(
836-
params: McpUiOpenLinkRequest["params"],
837-
options?: RequestOptions,
838-
) {
838+
openLink(params: McpUiOpenLinkRequest["params"], options?: RequestOptions) {
839839
return this.request(
840840
<McpUiOpenLinkRequest>{
841841
method: "ui/open-link",
@@ -846,6 +846,9 @@ export class App extends Protocol<AppRequest, AppNotification, AppResult> {
846846
);
847847
}
848848

849+
/** @deprecated Use {@link openLink} instead */
850+
sendOpenLink: App["openLink"] = this.openLink;
851+
849852
/**
850853
* Request a change to the display mode.
851854
*

0 commit comments

Comments
 (0)