Skip to main content
Glama

Zignet

by fulgidus
Do What The F*ck You Want To Public License
server.js4.11 kB
/** * MCP server implementation for zignet * Logs only to stderr */ import { Server } from '@modelcontextprotocol/sdk/server/index.js'; import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'; import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js'; import { tools } from './tools.js'; import { generate } from './model.js'; /** * Create and configure the MCP server */ export function createServer() { console.error('[server] Creating MCP server...'); const server = new Server( { name: 'zignet', version: '0.1.0', }, { capabilities: { tools: {}, }, } ); // List available tools server.setRequestHandler(ListToolsRequestSchema, async () => { console.error('[server] Listing tools'); return { tools: tools, }; }); // Handle tool calls server.setRequestHandler(CallToolRequestSchema, async (request) => { console.error(`[server] Tool called: ${request.params.name}`); const { name, arguments: args } = request.params; try { let result; switch (name) { case 'generate_zig_code': result = await handleGenerateZigCode(args); break; case 'debug_zig_code': result = await handleDebugZigCode(args); break; case 'explain_zig_docs': result = await handleExplainZigDocs(args); break; default: throw new Error(`Unknown tool: ${name}`); } return { content: [ { type: 'text', text: result, }, ], }; } catch (error) { console.error(`[server] Error handling tool ${name}: ${error.message}`); return { content: [ { type: 'text', text: `Error: ${error.message}`, }, ], isError: true, }; } }); return server; } /** * Handle generate_zig_code tool */ async function handleGenerateZigCode(args) { console.error('[server] Handling generate_zig_code'); const { description, context } = args; const systemPrompt = 'You are an expert Zig programmer. Generate clean, idiomatic Zig code following best practices. Include comments explaining the code.'; let prompt = `Generate Zig code for the following:\n\n${description}`; if (context) { prompt += `\n\nContext: ${context}`; } const response = await generate(prompt, systemPrompt); return response; } /** * Handle debug_zig_code tool */ async function handleDebugZigCode(args) { console.error('[server] Handling debug_zig_code'); const { code, error_message, issue_description } = args; const systemPrompt = 'You are an expert Zig debugger. Analyze code, identify issues, and provide clear explanations and fixes.'; let prompt = `Debug this Zig code:\n\n\`\`\`zig\n${code}\n\`\`\`\n\n`; if (error_message) { prompt += `Error message: ${error_message}\n\n`; } if (issue_description) { prompt += `Issue: ${issue_description}\n\n`; } prompt += 'Explain the problem and suggest a fix.'; const response = await generate(prompt, systemPrompt); return response; } /** * Handle explain_zig_docs tool */ async function handleExplainZigDocs(args) { console.error('[server] Handling explain_zig_docs'); const { topic, detail_level = 'intermediate' } = args; const systemPrompt = 'You are an expert Zig educator. Explain Zig concepts clearly with examples.'; const prompt = `Explain the following Zig topic at a ${detail_level} level:\n\n${topic}\n\nProvide clear explanations with code examples where appropriate.`; const response = await generate(prompt, systemPrompt); return response; } /** * Start the MCP server */ export async function startServer() { console.error('[server] Starting MCP server...'); const server = createServer(); const transport = new StdioServerTransport(); await server.connect(transport); console.error('[server] MCP server running on stdio'); }

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/fulgidus/zignet'

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