Redmine MCP Server

import { RedisClientType } from 'redis'; import { BaseTool, ToolResponse } from '../interfaces/types.js'; export abstract class RedisTool implements BaseTool { abstract name: string; abstract description: string; abstract inputSchema: object; abstract validateArgs(args: unknown): boolean; abstract execute(args: unknown, client: RedisClientType): Promise<ToolResponse>; protected createSuccessResponse(text: string): ToolResponse { return { content: [{ type: 'text', text }] }; } protected createErrorResponse(error: string): ToolResponse { return { content: [{ type: 'text', text: error }], _meta: { error: true } }; } }