diff --git a/src/client/index.test.ts b/src/client/index.test.ts index 55a113ea..1209b60c 100644 --- a/src/client/index.test.ts +++ b/src/client/index.test.ts @@ -36,6 +36,7 @@ test("should initialize with matching protocol version", async () => { name: "test", version: "1.0", }, + instructions: "test instructions", }, }); } @@ -66,6 +67,9 @@ test("should initialize with matching protocol version", async () => { }), }), ); + + // Should have the instructions returned + expect(client.getInstructions()).toEqual("test instructions"); }); test("should initialize with supported older protocol version", async () => { @@ -111,6 +115,9 @@ test("should initialize with supported older protocol version", async () => { name: "test", version: "1.0", }); + + // Expect no instructions + expect(client.getInstructions()).toBeUndefined(); }); test("should reject unsupported protocol version", async () => { diff --git a/src/client/index.ts b/src/client/index.ts index da0d04c5..bcad952c 100644 --- a/src/client/index.ts +++ b/src/client/index.ts @@ -85,6 +85,7 @@ export class Client< private _serverCapabilities?: ServerCapabilities; private _serverVersion?: Implementation; private _capabilities: ClientCapabilities; + private _instructions?: string; /** * Initializes this client with the given name and version information. @@ -152,6 +153,8 @@ export class Client< this._serverCapabilities = result.capabilities; this._serverVersion = result.serverInfo; + this._instructions = result.instructions; + await this.notification({ method: "notifications/initialized", }); @@ -176,6 +179,13 @@ export class Client< return this._serverVersion; } + /** + * After initialization has completed, this may be populated with information about the server's instructions. + */ + getInstructions(): string | undefined { + return this._instructions; + } + protected assertCapabilityForMethod(method: RequestT["method"]): void { switch (method as ClientRequest["method"]) { case "logging/setLevel": diff --git a/src/types.ts b/src/types.ts index 15acd149..afefb5b8 100644 --- a/src/types.ts +++ b/src/types.ts @@ -304,6 +304,12 @@ export const InitializeResultSchema = ResultSchema.extend({ protocolVersion: z.string(), capabilities: ServerCapabilitiesSchema, serverInfo: ImplementationSchema, + /** + * Instructions describing how to use the server and its features. + * + * This can be used by clients to improve the LLM's understanding of available tools, resources, etc. It can be thought of like a "hint" to the model. For example, this information MAY be added to the system prompt. + */ + instructions: z.optional(z.string()), }); /**