Skip to main content
Glama
soriat

MCP Elicitations Demo Server

by soriat
tool-sample-with-context.ts3.3 kB
import { z } from "zod"; import { zodToJsonSchema } from "zod-to-json-schema"; import { Server } from "@modelcontextprotocol/sdk/server/index.js"; import { requestSampling } from "../lib/sampling.js"; const AdvancedSampleSchema = z.object({ prompt: z.string().describe("The main prompt to send to the LLM"), systemPrompt: z .string() .default("You are a helpful and intelligent assistant.") .describe("System prompt to guide the LLM's behavior"), maxTokens: z .number() .default(200) .describe("Maximum number of tokens to generate"), useIntelligentModel: z .boolean() .default(true) .describe("Whether to prioritize intelligent models for complex tasks"), optimizeFor: z .enum(["intelligence", "speed", "cost", "balanced"]) .default("balanced") .describe("What to optimize the model selection for"), }); export const sampleWithContextTool = { name: "sampleAdvanced", description: "Sample from an LLM with advanced model selection optimization", inputSchema: zodToJsonSchema(AdvancedSampleSchema), handler: async (args: any, request: any, server: Server) => { const validatedArgs = AdvancedSampleSchema.parse(args); const { prompt, systemPrompt, maxTokens, useIntelligentModel, optimizeFor, } = validatedArgs; // Build model preferences based on optimization choice let modelPreferences; switch (optimizeFor) { case "intelligence": modelPreferences = { intelligencePriority: 0.9, speedPriority: 0.3, costPriority: 0.2, hints: [{ name: "claude-3" }, { name: "gpt-4" }], }; break; case "speed": modelPreferences = { intelligencePriority: 0.4, speedPriority: 0.9, costPriority: 0.5, hints: [{ name: "claude-3-haiku" }, { name: "gpt-3.5" }], }; break; case "cost": modelPreferences = { intelligencePriority: 0.3, speedPriority: 0.6, costPriority: 0.9, hints: [{ name: "claude-3-haiku" }], }; break; default: // balanced modelPreferences = { intelligencePriority: 0.6, speedPriority: 0.6, costPriority: 0.6, hints: [{ name: "claude-3-sonnet" }], }; } // Override with intelligent model preference if requested if (useIntelligentModel && optimizeFor !== "intelligence") { modelPreferences.intelligencePriority = Math.max( 0.7, modelPreferences.intelligencePriority ); } const result = await requestSampling( { messages: [ { role: "user", content: { type: "text", text: prompt, }, }, ], systemPrompt, maxTokens, modelPreferences, }, server ); return { content: [ { type: "text" as const, text: `Advanced Sampling Result: Optimization: ${optimizeFor} Intelligent Model Priority: ${useIntelligentModel ? "Enabled" : "Disabled"} Model: ${result.model || "unknown"} Stop Reason: ${result.stopReason || "unknown"} Response: ${result.content.text}`, }, ], }; }, };

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/soriat/soria-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server