Skip to main content
Glama
haneefdm

TypeScript MCP Sample Server

by haneefdm

completion

Generate text completions using specified AI models with customizable parameters like temperature and token limits for development testing.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
modelYes
optionsNo
promptYes

Implementation Reference

  • The asynchronous handler function for the 'completion' tool. It validates the requested model, logs the request, emits events, generates a mock completion response including usage stats, simulates a delay, and returns the response as text content.
    async ({ model, prompt, options }) => { console.log(`Processing completion request for model: ${model}`); // Validate model if (!this.models.includes(model)) { throw new Error(`Model ${model} not supported`); } // Emit event for monitoring/metrics this.events.emit('request', { type: 'completion', model, timestamp: new Date() }); // In a real implementation, this would call an AI model // Here we just echo back parts of the request with a mock response const response = { id: `mcp-resp-${Date.now()}`, model, text: `This is a response to: ${prompt.substring(0, 30)}...`, usage: { promptTokens: prompt.split(' ').length, completionTokens: 20, totalTokens: prompt.split(' ').length + 20 } }; // Simulate network delay await new Promise(resolve => setTimeout(resolve, 500)); // Emit completion event this.events.emit('completion', { model, timestamp: new Date() }); return { content: [ { type: 'text', text: JSON.stringify(response) } ] }; }
  • Zod schema defining the input parameters for the 'completion' tool: required 'model' (string) and 'prompt' (string), optional 'options' object with temperature, max_tokens, and stream.
    { model: z.string(), prompt: z.string(), options: z.object({ temperature: z.number().optional(), max_tokens: z.number().optional(), stream: z.boolean().optional() }).optional() },
  • src/index.ts:49-108 (registration)
    The registration method that calls mcpServer.tool() to register the 'completion' tool, including its schema and handler function. Invoked in the constructor at line 36.
    private registerCompletionTool(): void { this.mcpServer.tool( 'completion', { model: z.string(), prompt: z.string(), options: z.object({ temperature: z.number().optional(), max_tokens: z.number().optional(), stream: z.boolean().optional() }).optional() }, async ({ model, prompt, options }) => { console.log(`Processing completion request for model: ${model}`); // Validate model if (!this.models.includes(model)) { throw new Error(`Model ${model} not supported`); } // Emit event for monitoring/metrics this.events.emit('request', { type: 'completion', model, timestamp: new Date() }); // In a real implementation, this would call an AI model // Here we just echo back parts of the request with a mock response const response = { id: `mcp-resp-${Date.now()}`, model, text: `This is a response to: ${prompt.substring(0, 30)}...`, usage: { promptTokens: prompt.split(' ').length, completionTokens: 20, totalTokens: prompt.split(' ').length + 20 } }; // Simulate network delay await new Promise(resolve => setTimeout(resolve, 500)); // Emit completion event this.events.emit('completion', { model, timestamp: new Date() }); return { content: [ { type: 'text', text: JSON.stringify(response) } ] }; } ); }

Other Tools

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/haneefdm/mymcp'

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