Merge pull request #191 from nathanArseneau/show-all-notifications

Refactor notification handling to include all notifications
This commit is contained in:
Ola Hungerford
2025-03-28 06:04:39 -07:00
committed by GitHub
2 changed files with 23 additions and 13 deletions

View File

@@ -19,6 +19,10 @@ import {
McpError, McpError,
CompleteResultSchema, CompleteResultSchema,
ErrorCode, ErrorCode,
CancelledNotificationSchema,
ResourceListChangedNotificationSchema,
ToolListChangedNotificationSchema,
PromptListChangedNotificationSchema,
} from "@modelcontextprotocol/sdk/types.js"; } from "@modelcontextprotocol/sdk/types.js";
import { useState } from "react"; import { useState } from "react";
import { toast } from "react-toastify"; import { toast } from "react-toastify";
@@ -250,20 +254,24 @@ export function useConnection({
}); });
if (onNotification) { if (onNotification) {
client.setNotificationHandler( [
CancelledNotificationSchema,
ProgressNotificationSchema, ProgressNotificationSchema,
onNotification,
);
client.setNotificationHandler(
ResourceUpdatedNotificationSchema,
onNotification,
);
client.setNotificationHandler(
LoggingMessageNotificationSchema, LoggingMessageNotificationSchema,
onNotification, ResourceUpdatedNotificationSchema,
); ResourceListChangedNotificationSchema,
ToolListChangedNotificationSchema,
PromptListChangedNotificationSchema,
].forEach((notificationSchema) => {
client.setNotificationHandler(notificationSchema, onNotification);
});
client.fallbackNotificationHandler = (
notification: Notification,
): Promise<void> => {
onNotification(notification);
return Promise.resolve();
};
} }
if (onStdErrNotification) { if (onStdErrNotification) {

View File

@@ -14,7 +14,9 @@ export const StdErrNotificationSchema = BaseNotificationSchema.extend({
export const NotificationSchema = ClientNotificationSchema.or( export const NotificationSchema = ClientNotificationSchema.or(
StdErrNotificationSchema, StdErrNotificationSchema,
).or(ServerNotificationSchema); )
.or(ServerNotificationSchema)
.or(BaseNotificationSchema);
export type StdErrNotification = z.infer<typeof StdErrNotificationSchema>; export type StdErrNotification = z.infer<typeof StdErrNotificationSchema>;
export type Notification = z.infer<typeof NotificationSchema>; export type Notification = z.infer<typeof NotificationSchema>;