Skip to main content
Glama
haneefdm

TypeScript MCP Sample Server

by haneefdm

completion

Generate AI text completions by providing a prompt and model parameters. This tool helps developers test and integrate text generation functionality in TypeScript MCP servers.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
modelYes
promptYes
optionsNo

Implementation Reference

  • The asynchronous handler function implementing the 'completion' tool logic: validates model, emits events, generates mock response with usage stats, simulates delay, and returns 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 input parameters for the 'completion' tool: required model and prompt strings, 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 private method registering the 'completion' tool on the MCP server using mcpServer.tool(), including the tool name, input schema, and handler function.
    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)
              }
            ]
          };
        }
      );
    }
Install Server

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