feat: add mcp client instruction support

This commit is contained in:
Kalvin Chau 2025-01-22 09:17:59 -08:00
commit 443c0829ed
2 changed files with 23 additions and 0 deletions

View file

@ -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 () => {

View file

@ -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":