Merge pull request #133 from kalvinnchau/client-instruction-support
feat: add mcp client instruction support
This commit is contained in:
commit
99fe1932d7
3 changed files with 23 additions and 0 deletions
|
|
@ -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 () => {
|
||||
|
|
|
|||
|
|
@ -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":
|
||||
|
|
|
|||
|
|
@ -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()),
|
||||
});
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Reference in a new issue