|
1 | 1 | import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
2 | 2 | import {
|
3 | 3 | CallToolRequestSchema,
|
| 4 | + CompleteRequestSchema, |
4 | 5 | CreateMessageRequest,
|
5 | 6 | CreateMessageResultSchema,
|
6 | 7 | GetPromptRequestSchema,
|
@@ -48,6 +49,13 @@ const SampleLLMSchema = z.object({
|
48 | 49 | .describe("Maximum number of tokens to generate"),
|
49 | 50 | });
|
50 | 51 |
|
| 52 | +// Example completion values |
| 53 | +const EXAMPLE_COMPLETIONS = { |
| 54 | + style: ["casual", "formal", "technical", "friendly"], |
| 55 | + temperature: ["0", "0.5", "0.7", "1.0"], |
| 56 | + resourceId: ["1", "2", "3", "4", "5"], |
| 57 | +}; |
| 58 | + |
51 | 59 | const GetTinyImageSchema = z.object({});
|
52 | 60 |
|
53 | 61 | enum ToolName {
|
@@ -412,6 +420,34 @@ export const createServer = () => {
|
412 | 420 | throw new Error(`Unknown tool: ${name}`);
|
413 | 421 | });
|
414 | 422 |
|
| 423 | + server.setRequestHandler(CompleteRequestSchema, async (request) => { |
| 424 | + const { ref, argument } = request.params; |
| 425 | + |
| 426 | + if (ref.type === "ref/resource") { |
| 427 | + const resourceId = ref.uri.split("/").pop(); |
| 428 | + if (!resourceId) return { completion: { values: [] } }; |
| 429 | + |
| 430 | + // Filter resource IDs that start with the input value |
| 431 | + const values = EXAMPLE_COMPLETIONS.resourceId.filter(id => |
| 432 | + id.startsWith(argument.value) |
| 433 | + ); |
| 434 | + return { completion: { values, hasMore: false, total: values.length } }; |
| 435 | + } |
| 436 | + |
| 437 | + if (ref.type === "ref/prompt") { |
| 438 | + // Handle completion for prompt arguments |
| 439 | + const completions = EXAMPLE_COMPLETIONS[argument.name as keyof typeof EXAMPLE_COMPLETIONS]; |
| 440 | + if (!completions) return { completion: { values: [] } }; |
| 441 | + |
| 442 | + const values = completions.filter(value => |
| 443 | + value.startsWith(argument.value) |
| 444 | + ); |
| 445 | + return { completion: { values, hasMore: false, total: values.length } }; |
| 446 | + } |
| 447 | + |
| 448 | + throw new Error(`Unknown reference type`); |
| 449 | + }); |
| 450 | + |
415 | 451 | server.setRequestHandler(SetLevelRequestSchema, async (request) => {
|
416 | 452 | const { level } = request.params;
|
417 | 453 |
|
|
0 commit comments