Skip to main content
Glama

run

Execute local AI models through the Ollama MCP Server by specifying a model name and prompt to generate responses.

Instructions

Run a model

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYesName of the model
promptYesPrompt to send to the model
timeoutNoTimeout in milliseconds (default: 60000)

Implementation Reference

  • The core handler function that executes the 'run' tool logic. It makes a streaming POST request to Ollama's /api/generate endpoint using axios, processes the SSE stream by parsing JSON chunks and extracting the 'response' field, and returns an MCP stream content block.
    private async handleRun(args: any) { try { // Use streaming mode with SSE const response = await axios.post( `${OLLAMA_HOST}/api/generate`, { model: args.name, prompt: args.prompt, stream: true, }, { timeout: args.timeout || DEFAULT_TIMEOUT, responseType: 'stream' } ); // Create a transform stream to process the SSE events const transformStream = new TransformStream({ transform(chunk, controller) { try { const data = chunk.toString(); const json = JSON.parse(data); controller.enqueue(json.response); } catch (error) { controller.error(new McpError( ErrorCode.InternalError, `Error processing stream: ${formatError(error)}` )); } } }); return { content: [ { type: 'stream', stream: response.data.pipeThrough(transformStream), }, ], }; } catch (error) { if (axios.isAxiosError(error)) { throw new McpError( ErrorCode.InternalError, `Ollama API error: ${error.response?.data?.error || error.message}` ); } throw new McpError(ErrorCode.InternalError, `Failed to run model: ${formatError(error)}`); } }
  • The input schema definition for the 'run' tool, specifying required 'name' and 'prompt' parameters, optional 'timeout', used in tool registration.
    { name: 'run', description: 'Run a model', inputSchema: { type: 'object', properties: { name: { type: 'string', description: 'Name of the model', }, prompt: { type: 'string', description: 'Prompt to send to the model', }, timeout: { type: 'number', description: 'Timeout in milliseconds (default: 60000)', minimum: 1000, }, }, required: ['name', 'prompt'], additionalProperties: false, },
  • src/index.ts:253-289 (registration)
    Registers the request handler for CallToolRequestSchema, which dispatches 'run' tool calls (and others) to their respective handle* methods via a switch statement on request.params.name.
    this.server.setRequestHandler(CallToolRequestSchema, async (request) => { try { switch (request.params.name) { case 'serve': return await this.handleServe(); case 'create': return await this.handleCreate(request.params.arguments); case 'show': return await this.handleShow(request.params.arguments); case 'run': return await this.handleRun(request.params.arguments); case 'pull': return await this.handlePull(request.params.arguments); case 'push': return await this.handlePush(request.params.arguments); case 'list': return await this.handleList(); case 'cp': return await this.handleCopy(request.params.arguments); case 'rm': return await this.handleRemove(request.params.arguments); case 'chat_completion': return await this.handleChatCompletion(request.params.arguments); default: throw new McpError( ErrorCode.MethodNotFound, `Unknown tool: ${request.params.name}` ); } } catch (error) { if (error instanceof McpError) throw error; throw new McpError( ErrorCode.InternalError, `Error executing ${request.params.name}: ${formatError(error)}` ); } });

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/NightTrek/Ollama-mcp'

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