kip

kip

ex_cldr Core Team

Localize_mcp — an MCP server that teaches AI agents the Localize API

I’ve published localize_mcp, a Model Context Protocol server for the Localize library. This is the last piece of the family before 1.0 release of Localize.

The Localize API surface is quite large - numbers, currencies, dates, times, units, lists, messages, collation, plural rules, locale validation. AI agents working with it spend a lot of time and tokens grepping source to answer questions like which function do I need, what options does it take, and is it :USD or :usd. This server replaces that grepping with eleven typed tool calls backed by BEAM introspection of the loaded modules, so a request like “format 1234 as USD in German” becomes three tool calls and zero file reads.

Localize MCP tools

  • Discovery (localize_search, localize_browse),
  • Documentation (localize_doc, localize_examples - including guided ~t sigil / Gettext / Phoenix / LiveView translation setup)
  • Schemas (localize_options, localize_atoms, localize_errors)
  • Locale resolution (localize_resolve_locale, localize_validate)
  • Live execution (localize_invoke, which runs an allowlisted set of read-only functions under a timeout and heap cap)

Because the server runs from your project, the agent sees the Localize version pinned in `mix.exs - docs. Note that it’s intended to be run locally - it uses stdio as the server communications transport.

Setup

Setup is two steps:

# mix.exs
{:localize_mcp, "~> 0.1", only: :dev}

mix deps.get && mix compile
claude mcp add localize -- mix localize_mcp

The host configuration guide has equivalent setups for Claude Desktop, Codex CLI, ChatGPT, and Zed.

More information

Where Next?

Popular in Announcing Top

danschultzer
None of the current solutions worked well for me, so I went ahead and built a user management system from scratch. This project took far...
548 29703 241
New
deadtrickster
I’ve just released stable versions of my Prometheus Elixir libs: Elixir client [docs]; Ecto collector [docs]; Plugs instrumenter/Export...
New
wmnnd
Hi there, for my project DBLSQD, I needed a file storage solution that is a bit more flexible than Arc. Because I thought others might f...
New
OvermindDL1
I created a new library (rather I pulled out a couple files from my big project), it manages an operating system PID file for the BEAM. ...
New
Crowdhailer
The latest release of Ace (0.10.0) includes serving content over HTTP/2. I have started writing a webserver to teach my self more about...
New
nikokozak
Hello all, I’ve been working on Svonix - a library for quickly integrating Svelte components into Phoenix views. It’s a much-needed succ...
New
cjen07
parameterized pipe in elixir: |n> edit: negative index in |n> and mixed usage with |> are supported example: use ParamPipe ...
New
sabiwara
Dune is a sandbox for Elixir and aims to safely evaluate user-provided code. You can try it out using this basic Elixir playground made ...
New
woylie
I released Doggo, a collection of unstyled Phoenix components. https://github.com/woylie/doggo Features Unstyled Phoenix components....
New
markmark206
simple_feature_flags is a tiny package that lets you turn features on or off based on which environment (e.g. localhost, staging, product...
New

Other popular topics Top

TunkShif
This post is an instruction guide to help you setup your Neovim for Elixir development from scratch. It includes general information on h...
274 42158 114
New
gshaw
What is the idiomatic way of matching for not nil in Elixir? E.g., First way: defp halt_if_not_signed_in(conn, signed_in_account) when...
New
minhajuddin
I have seen a lot of code which picks the first element from a list using Enum.at(0) instead of List.first. Is there a reason why people ...
New
belgoros
I’m not a pro in using Regex and can’t figure out why the following behaviour happens, especially if we take into account the difference ...
New
dblack
I’ve got an issue with an app and I’ve no idea of how to troubleshoot it. I’m hoping someone here might have seen something similar. I p...
New
rms.mrcs
Hi, I need to transform a list of numbers into a map where the keys are the indexes and the values are the original values of the list. ...
New
klo
Got a question about when to concat vs. prepending items to list then reversing to achieve appending. So i know lists boil down to [1 | ...
New
Qqwy
Update: How to use the Blogs & Podcasts section You can post links to your blog posts or podcasts either in one of the Official Blog...
3271 127536 1222
New
jaysoifer
Is there a way to rollback a specific migration and only that one (“skipping” all the other ones)? Would mix ecto.rollback -v 200809061...
New
svb
Hi! Currently I want to submit a form by pressing the Enter key. However, since my input field is of type “textarea” this is just adds a...
New

We're in Beta

About us Mission Statement