MCP Server 2.0 (#452)

* MCP Server 2.0

- Updated application version from 2.23.14 to 2.24.0 in package.json.
- MCP Server improved with new features
- Migrated functionality from Dev Tools to MCP Server
- Improved getMonitoringProvider not to crash application when misconfigured
This commit is contained in:
Giancarlo Buomprisco
2026-02-11 20:42:01 +01:00
committed by GitHub
parent 059408a70a
commit f3ac595d06
123 changed files with 17803 additions and 5265 deletions

View File

@@ -2,10 +2,14 @@
import { revalidatePath } from 'next/cache';
import { readFileSync, writeFileSync } from 'node:fs';
import { resolve } from 'node:url';
import { z } from 'zod';
import { findWorkspaceRoot } from '@kit/mcp-server/env';
import {
createKitTranslationsDeps,
createKitTranslationsService,
} from '@kit/mcp-server/translations';
const Schema = z.object({
locale: z.string().min(1),
namespace: z.string().min(1),
@@ -20,40 +24,18 @@ const Schema = z.object({
export async function updateTranslationAction(props: z.infer<typeof Schema>) {
// Validate the input
const { locale, namespace, key, value } = Schema.parse(props);
const rootPath = findWorkspaceRoot(process.cwd());
const root = resolve(process.cwd(), '..');
const filePath = `${root}apps/web/public/locales/${locale}/${namespace}.json`;
const service = createKitTranslationsService(
createKitTranslationsDeps(rootPath),
);
try {
// Read the current translations file
const translationsFile = readFileSync(filePath, 'utf8');
const translations = JSON.parse(translationsFile) as Record<string, any>;
// Update the nested key value
const keys = key.split('.') as string[];
let current = translations;
// Navigate through nested objects until the second-to-last key
for (let i = 0; i < keys.length - 1; i++) {
const currentKey = keys[i] as string;
if (!current[currentKey]) {
current[currentKey] = {};
}
current = current[currentKey];
}
// Set the value at the final key
const finalKey = keys[keys.length - 1] as string;
current[finalKey] = value;
// Write the updated translations back to the file
writeFileSync(filePath, JSON.stringify(translations, null, 2), 'utf8');
const result = await service.update({ locale, namespace, key, value });
revalidatePath(`/translations`);
return { success: true };
return result;
} catch (error) {
console.error('Failed to update translation:', error);
throw new Error('Failed to update translation');