Skip to main content
Glama
Lokiec752
by Lokiec752
README.md
# Translations MCP Server

A Model Context Protocol (MCP) server that automatically discovers and searches translation files in your projects.

## Features

- **Configurable path**: Specify exact translation file path via configuration (recommended)
- **Auto-discovery**: Automatically finds translation files in `en` folders as fallback
- **Fast search**: Indexed search through translation keys and values
- **Partial/exact matching**: Support for both partial and exact match searches
- **File watching**: Automatically reloads when translation files change
- **Multiple file formats**: Supports common translation file names
- **TypeScript**: Fully typed with proper interfaces and modular architecture

## Quick Start

### Method 1: Configured Path (Recommended)

Configure your MCP server to use a specific translation file:

```json
{
  "mcpServers": {
    "translations-mcp": {
      "command": "translations-mcp",
      "args": ["path/to/your/translation.json"]
    }
  }
}
```

### Method 2: Environment Variable

```json
{
  "mcpServers": {
    "translations-mcp": {
      "command": "translations-mcp",
      "env": {
        "TRANSLATION_FILE_PATH": "src/assets/locales/en/translation.json"
      }
    }
  }
}
```

### Method 3: Auto-Discovery (Fallback)

If no path is configured, the server will automatically search for translation files:

```json
{
  "mcpServers": {
    "translations-mcp": {
      "command": "translations-mcp"
    }
  }
}
```

## Architecture

The project is organized into focused modules for better maintainability:

```
src/
├── index.ts              # Main server entry point with MCP server setup
├── translation-discovery.ts # File discovery and search functionality
└── types.ts              # TypeScript interfaces and types
```

### Module Descriptions

- **`index.ts`**: Main MCP server setup, tool handlers, and entry point
- **`translation-discovery.ts`**: Handles file discovery, indexing, and search functionality
- **`types.ts`**: TypeScript interfaces for type safety across modules

## Usage

The server provides two main tools:

### 1. find_translation

Search for translation keys and values:

```json
{
  "name": "find_translation",
  "arguments": {
    "query": "search term",
    "exact": false
  }
}
```

- `query`: String to search for in translation keys or values
- `exact`: Boolean (optional) - whether to perform exact matching (default: false)

### 2. refresh_translations

Manually refresh the translation index (useful after file changes):

```json
{
  "name": "refresh_translations",
  "arguments": {}
}
```

Returns the current number of indexed entries and refresh status.

## Configuration Examples

### For React/Next.js Projects

```json
{
  "mcpServers": {
    "translations-mcp": {
      "command": "translations-mcp",
      "args": ["public/locales/en/translation.json"]
    }
  }
}
```

### For ASP.NET Core + React Projects

```json
{
  "mcpServers": {
    "translations-mcp": {
      "command": "translations-mcp",
      "args": ["ClientApp/public/locales/en/translation.json"]
    }
  }
}
```

### Absolute Path

```json
{
  "mcpServers": {
    "translations-mcp": {
      "command": "translations-mcp",
      "args": ["C:/projects/my-app/locales/en/translation.json"]
    }
  }
}
```

## How It Works

1. **Discovery**: On startup, recursively searches for translation files in folders named `en`
2. **Indexing**: Builds an in-memory search index of all translation keys and values
3. **Search**: Provides fast lookups with support for partial and exact matching

### Supported Project Structures

The server can find translation files in various project structures:

- `./en/translation.json` (simple)
- `./locales/en/translation.json` (common)
- `./src/assets/locales/en/translation.json` (React/Angular)
- `./ClientApp/public/locales/en/translation.json` (ASP.NET Core with React)
- `./Project.Name/ClientApp/public/locales/en/translation.json` (deep .NET structures)

## Installation

Install globally via npm:

```bash
npm install -g translations-mcp
```

## Development

```bash
# Install dependencies
npm install

# Build
npm run build

# Run tests
npm run test

# Development mode
npm run dev
```

## Testing

The project includes several test scripts:

- `npm run test:server` - Test basic server functionality
- `npm run test:find` - Test search functionality
- `npm run test:quick` - Quick integration test
- `npm run test:all` - Run all tests

## Supported File Names

The server looks for these translation files in `en` folders:

- translation.json
- translations.json
- common.json
- messages.json

## Adding to Claude Desktop

### Recommended: Specify Your Translation File Path

```json
{
  "mcpServers": {
    "translations": {
      "command": "translations-mcp",
      "args": ["path/to/your/translation.json"]
    }
  }
}
```

### Alternative: Auto-Discovery

```json
{
  "mcpServers": {
    "translations": {
      "command": "translations-mcp"
    }
  }
}
```

## Benefits of Configured Path

✅ **Eliminates confusion** - No more loading wrong translation files  
✅ **Faster startup** - No need to search directories  
✅ **Predictable behavior** - Always uses the exact file you specify  
✅ **Works anywhere** - Not limited to specific folder structures  
✅ **Production ready** - Points to your actual translation files, not test data

- `npm run clean` - Remove compiled files
- `npm test` - Run the main server functionality test
- `npm run test:server` - Run comprehensive server tests with response parsing
- `npm run test:quick` - Run quick global installation test
- `npm run test:all` - Run all tests (server + quick)

### Development Workflow

1. Clone or download this package
2. Run `npm install` to install dependencies
3. Make your changes to files in the `src/` directory
4. Test with `npm run dev` for development or `npm test` to verify functionality
5. Build for production with `npm run build && npm start`

## License

MIT

TDQS

A3.5/5.0

Scored across 2 tools

Disambiguation5/5

The two tools, find_translation and refresh_translations, serve distinct purposes with no overlap. One is for querying translations, the other for maintenance.

Naming Consistency5/5

Both tools follow a consistent verb_noun pattern (find_translation, refresh_translations), making them predictable and easy to understand.

Tool Count3/5

With only 2 tools, the server feels under-scoped for a typical translation management system. While acceptable for a minimal server, it lacks breadth.

Completeness2/5

The server provides only find and refresh capabilities, missing essential operations like add, update, or delete translations. This leaves significant gaps for common use cases.

Maintenance

ActivityInactive
ResponsivenessNo issues