Skip to content

Commit

Permalink
Merge pull request #370 from modelcontextprotocol/ashwin/everythingco…
Browse files Browse the repository at this point in the history
…mpletions

add completion examples to everything server
  • Loading branch information
dsp-ant authored Dec 19, 2024
2 parents 9a42a2d + 1eca8f8 commit ea35591
Showing 1 changed file with 36 additions and 0 deletions.
36 changes: 36 additions & 0 deletions src/everything/everything.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import {
CallToolRequestSchema,
CompleteRequestSchema,
CreateMessageRequest,
CreateMessageResultSchema,
GetPromptRequestSchema,
Expand Down Expand Up @@ -50,6 +51,13 @@ const SampleLLMSchema = z.object({
.describe("Maximum number of tokens to generate"),
});

// Example completion values
const EXAMPLE_COMPLETIONS = {
style: ["casual", "formal", "technical", "friendly"],
temperature: ["0", "0.5", "0.7", "1.0"],
resourceId: ["1", "2", "3", "4", "5"],
};

const GetTinyImageSchema = z.object({});

enum ToolName {
Expand Down Expand Up @@ -431,6 +439,34 @@ export const createServer = () => {
throw new Error(`Unknown tool: ${name}`);
});

server.setRequestHandler(CompleteRequestSchema, async (request) => {
const { ref, argument } = request.params;

if (ref.type === "ref/resource") {
const resourceId = ref.uri.split("/").pop();
if (!resourceId) return { completion: { values: [] } };

// Filter resource IDs that start with the input value
const values = EXAMPLE_COMPLETIONS.resourceId.filter(id =>
id.startsWith(argument.value)
);
return { completion: { values, hasMore: false, total: values.length } };
}

if (ref.type === "ref/prompt") {
// Handle completion for prompt arguments
const completions = EXAMPLE_COMPLETIONS[argument.name as keyof typeof EXAMPLE_COMPLETIONS];
if (!completions) return { completion: { values: [] } };

const values = completions.filter(value =>
value.startsWith(argument.value)
);
return { completion: { values, hasMore: false, total: values.length } };
}

throw new Error(`Unknown reference type`);
});

server.setRequestHandler(SetLevelRequestSchema, async (request) => {
const { level } = request.params;

Expand Down

0 comments on commit ea35591

Please sign in to comment.