|
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,
|
@@ -50,6 +51,13 @@ const SampleLLMSchema = z.object({
|
50 | 51 | .describe("Maximum number of tokens to generate"),
|
51 | 52 | });
|
52 | 53 |
|
| 54 | +// Example completion values |
| 55 | +const EXAMPLE_COMPLETIONS = { |
| 56 | + style: ["casual", "formal", "technical", "friendly"], |
| 57 | + temperature: ["0", "0.5", "0.7", "1.0"], |
| 58 | + resourceId: ["1", "2", "3", "4", "5"], |
| 59 | +}; |
| 60 | + |
53 | 61 | const GetTinyImageSchema = z.object({});
|
54 | 62 |
|
55 | 63 | enum ToolName {
|
@@ -431,6 +439,34 @@ export const createServer = () => {
|
431 | 439 | throw new Error(`Unknown tool: ${name}`);
|
432 | 440 | });
|
433 | 441 |
|
| 442 | + server.setRequestHandler(CompleteRequestSchema, async (request) => { |
| 443 | + const { ref, argument } = request.params; |
| 444 | + |
| 445 | + if (ref.type === "ref/resource") { |
| 446 | + const resourceId = ref.uri.split("/").pop(); |
| 447 | + if (!resourceId) return { completion: { values: [] } }; |
| 448 | + |
| 449 | + // Filter resource IDs that start with the input value |
| 450 | + const values = EXAMPLE_COMPLETIONS.resourceId.filter(id => |
| 451 | + id.startsWith(argument.value) |
| 452 | + ); |
| 453 | + return { completion: { values, hasMore: false, total: values.length } }; |
| 454 | + } |
| 455 | + |
| 456 | + if (ref.type === "ref/prompt") { |
| 457 | + // Handle completion for prompt arguments |
| 458 | + const completions = EXAMPLE_COMPLETIONS[argument.name as keyof typeof EXAMPLE_COMPLETIONS]; |
| 459 | + if (!completions) return { completion: { values: [] } }; |
| 460 | + |
| 461 | + const values = completions.filter(value => |
| 462 | + value.startsWith(argument.value) |
| 463 | + ); |
| 464 | + return { completion: { values, hasMore: false, total: values.length } }; |
| 465 | + } |
| 466 | + |
| 467 | + throw new Error(`Unknown reference type`); |
| 468 | + }); |
| 469 | + |
434 | 470 | server.setRequestHandler(SetLevelRequestSchema, async (request) => {
|
435 | 471 | const { level } = request.params;
|
436 | 472 |
|
|
0 commit comments