feat: add optional instructions field to server _oninitialize

This commit is contained in:
Kalvin Chau 2025-01-13 09:09:05 -08:00
commit 54472d2ae1
2 changed files with 14 additions and 0 deletions

View file

@ -38,6 +38,7 @@ test("should accept latest protocol version", async () => {
name: "test server",
version: "1.0",
},
instructions: "Test instructions",
});
sendPromiseResolve(undefined);
}
@ -57,6 +58,7 @@ test("should accept latest protocol version", async () => {
tools: {},
logging: {},
},
instructions: "Test instructions",
},
);

View file

@ -33,6 +33,11 @@ export type ServerOptions = ProtocolOptions & {
* Capabilities to advertise as being supported by this server.
*/
capabilities: ServerCapabilities;
/**
* Optional instructions describing how to use the server and its features.
*/
instructions?: string;
};
/**
@ -72,6 +77,7 @@ export class Server<
private _clientCapabilities?: ClientCapabilities;
private _clientVersion?: Implementation;
private _capabilities: ServerCapabilities;
private _instructions?: string;
/**
* Callback for when initialization has fully completed (i.e., the client has sent an `initialized` notification).
@ -87,6 +93,7 @@ export class Server<
) {
super(options);
this._capabilities = options.capabilities;
this._instructions = options.instructions;
this.setRequestHandler(InitializeRequestSchema, (request) =>
this._oninitialize(request),
@ -234,6 +241,7 @@ export class Server<
: LATEST_PROTOCOL_VERSION,
capabilities: this.getCapabilities(),
serverInfo: this._serverInfo,
...(this.getInstructions() && { instructions: this.getInstructions() }),
};
}
@ -255,6 +263,10 @@ export class Server<
return this._capabilities;
}
private getInstructions(): string | undefined {
return this._instructions;
}
async ping() {
return this.request({ method: "ping" }, EmptyResultSchema);
}