npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@iflow-mcp/reinier-millo_i18n-mcp

v1.0.2

Published

MCP server for incremental JSON translations

Readme

🌐 i18n MCP Server

i18n MCP Server is a powerful tool for managing internationalization (i18n) in your projects. It streamlines the process of translating JSON-based language files by allowing you to use powerful language models to generate translations directly from a base language file — all through a convenient server interface.

The MCP server is intended to work with the Cursor IDE using stdio transport. It should also work properly with any client that supports stdio transport.

💡 Why i18n MCP Server?

  • Save hours of manual translation work
  • Keep your i18n files consistent and up to date
  • Eliminate repetitive copy/paste tasks when scaling your app globally.

🚀 Features

🌍 Multi-language support

Automatically generate translations in multiple languages from a single base language file.

🤖 Translate using models on Cursor

You don't need to pay for additional translation services. Select the translation model you want to use and generate translations on demand.

⚡ Effortless workflow

No need to manually duplicate or edit JSON files — just send a request and get translated files ready to use.

🛠️ Developer-friendly

Built with simplicity and speed in mind for seamless integration into development pipelines.

Working flow

This MCP server helps with incremental translation of JSON files. It provides simple tools to:

  1. Get the base language file with all texts in a single language and the set of supported languages.
  2. Get chunks of strings to translate. Each chunk will be a list of texts separated by new lines.
  3. Update generated translations in the memory cache.
  4. Save translations to language-specific JSON files.

📦 Installation and configuration

  1. Clone the repository
git clone
  1. Install dependencies:
pnpm install # or npm/yarn
  1. Build the server:
pnpm run build
  1. Configure the MCP server on Cursor

Navigate to Cursor Settings / MCP and click to add a new MCP server. In the opened JSON, include the server definition:

{
  "mcpServers": {
    ...
    "i18n-translation-server": {
      "command": "node",
      "args": ["<base-path>/i18n-mcp/dist/mcp_server.js"]
    },
    ...
  }
}

You will need to replace <base-path> with the correct absolute path to the compiled server.

📤 Usage

Once the MCP server is running, you can use the Cursor Agent to interact with the server tools. For example:

We are preparing the i18n files for a project and have a base language file. Using the following data, execute the
proposed tasks to prepare the additional required languages.

Base JSON language file: <absolute path to the base language file>
Base language: <base language>
Supported languages: <comma-separated list of supported languages>

These are the tasks that we need to perform:

1. Clear the previous data
2. Read the base JSON language file
3. Get the next chunk
4. For each language in the supported languages, do the following subtasks:
   4.1. Translate all items in the chunk from the base language to the target language. Ensure that the order is
   preserved and that any i18n string parameters are respected.
   4.2. Update the translations for the language
5. Repeat from task 3 until the next chunk does not return any data.
6. After processing all chunks, save translations for each supported language.

This request will generate a JSON file for each language in the same folder as the base JSON language file. The current version was tested using gpt-4.1 and a chunk size of 250 entries. For other models, this value may need to be adjusted due to token limits. Another issue that may occur is that the flow can sometimes be interrupted between steps 5 and 6, requiring manual resumption due to the 25 tool call restriction in Cursor.

This is just a proposed task request, but new ones can be written by chaining the defined tools.

During testing, we noted that language files are generated faster when generating a single language per request, instead of all at once. Additionally, the response time will depend on the model used.

📚 Future Plans

  • Support for multiple caches
  • Language file integrity check
  • Support dynamic chunk size
  • Translation only for missing entries
  • Translation only for specific items
  • Version tracking for language files
  • Better local cache for translations

🙌 Contributing

Pull requests and issues are welcome! Let's build a better translation workflow together.

📄 License

This project is licensed under the GNU Affero General Public License v3.0. See the LICENSE file for details.