Skip to main content
Glama
j0hanz

PromptTuner MCP

by j0hanz
server.ts2.31 kB
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'; import { SERVER_INSTRUCTIONS, SERVER_NAME, SERVER_VERSION, } from './config/constants.js'; import { ErrorCode, logger, McpError } from './lib/errors.js'; import { getLLMClient } from './lib/llm-client.js'; import { registerAllPrompts } from './prompts/index.js'; import { registerAllResources } from './resources/index.js'; import { registerAllTools } from './tools/index.js'; async function validateApiKeys(): Promise<void> { const provider = process.env.LLM_PROVIDER ?? 'openai'; const providers = { openai: process.env.OPENAI_API_KEY, anthropic: process.env.ANTHROPIC_API_KEY, google: process.env.GOOGLE_API_KEY, }; const hasAnyKey = Object.values(providers).some((key) => key !== undefined); if (!hasAnyKey) { throw new McpError( ErrorCode.E_INVALID_INPUT, `❌ API key is REQUIRED. Set one of: OPENAI_API_KEY, ANTHROPIC_API_KEY, or GOOGLE_API_KEY` ); } // Validate the configured provider has a key try { const client = await getLLMClient(); logger.info( `✅ API key validated: ${client.getProvider()} (${client.getModel()})` ); } catch (error) { if (error instanceof McpError) { throw error; } throw new McpError( ErrorCode.E_LLM_FAILED, `❌ Failed to initialize LLM client for provider: ${provider}. Check your API key.` ); } } export function createServer(): McpServer { const server = new McpServer( { name: SERVER_NAME, version: SERVER_VERSION, }, { instructions: SERVER_INSTRUCTIONS, capabilities: { logging: {}, tools: { listChanged: true }, resources: { subscribe: false, listChanged: true }, prompts: { listChanged: true }, }, } ); registerAllTools(server); registerAllResources(server); registerAllPrompts(server); return server; } export async function startServer(server: McpServer): Promise<void> { // Validate API keys before connecting - REQUIRED await validateApiKeys(); const transport = new StdioServerTransport(); await server.connect(transport); logger.info(`${SERVER_NAME} v${SERVER_VERSION} started`); }

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/j0hanz/prompt-tuner-mcp-server'

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