Skip to main content
Glama
linting.ts3.64 kB
import type { Tool } from '@modelcontextprotocol/sdk/types.js'; import { LintingUtils } from '../utils/linting-utils.js'; import { Formatters } from '../utils/formatters.js'; import { FileReader } from '../utils/file-reader.js'; export const lintingTools: Tool[] = [ { name: 'lint_code', description: 'Lint code files using ESLint', inputSchema: { type: 'object', properties: { files: { type: 'array', items: { type: 'string' }, description: 'File paths to lint', }, }, required: ['files'], }, }, { name: 'format_code', description: 'Format code files using Prettier', inputSchema: { type: 'object', properties: { files: { type: 'array', items: { type: 'string' }, description: 'File paths to format', }, options: { type: 'object', description: 'Prettier options', }, }, required: ['files'], }, }, { name: 'check_typescript', description: 'Check TypeScript files for type errors', inputSchema: { type: 'object', properties: { files: { type: 'array', items: { type: 'string' }, description: 'TypeScript file paths to check', }, }, required: ['files'], }, }, { name: 'validate_syntax', description: 'Validate syntax of code files', inputSchema: { type: 'object', properties: { files: { type: 'array', items: { type: 'string' }, description: 'File paths to validate', }, }, required: ['files'], }, }, { name: 'fix_lint_issues', description: 'Automatically fix linting issues in code files', inputSchema: { type: 'object', properties: { files: { type: 'array', items: { type: 'string' }, description: 'File paths to fix', }, }, required: ['files'], }, }, ]; export async function handleLintingTool(name: string, args: unknown): Promise<unknown> { const lintingUtils = new LintingUtils(); const params = args as Record<string, unknown>; switch (name) { case 'lint_code': { const files = params.files as string[]; const results = await lintingUtils.lintFiles(files); return Formatters.formatLintResults(results); } case 'format_code': { const files = params.files as string[]; const options = params.options as Record<string, unknown>; const results = await Promise.all( files.map((file) => lintingUtils.formatCode(file, options)) ); return results; } case 'check_typescript': { const files = params.files as string[]; const results = await Promise.all( files.map((file) => lintingUtils.checkTypeScript(file)) ); return results; } case 'validate_syntax': { const files = params.files as string[]; const codeFiles = await FileReader.readFiles(files.join(',')); const results = codeFiles.map((file) => { const validation = lintingUtils.validateSyntax( file.content, file.language || 'javascript' ); return { file: file.path, ...validation, }; }); return results; } case 'fix_lint_issues': { const files = params.files as string[]; const results = await lintingUtils.fixLintIssues(files); return Formatters.formatLintResults(results); } default: throw new Error(`Unknown tool: ${name}`); } }

Implementation Reference

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/code-alchemist01/development-tools-mcp-Server'

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