# Iyi 0.20: The Language That Ships Its MCP Server in the Binary

> Source: <https://byteiota.com/iyi-0-20-programming-language-mcp-lsp-binary/>
> Published: 2026-11-08 20:07:01+00:00

Iyi shipped v0.20.1 on November 4. It is a Crystal-compatible compiled language with one rule that separates it from every other language announcement this year: the LSP server and the MCP server are in the compiler binary. Not plugins. Not optional installs. The binary.

## The .iyimod Module System

Every language that calls itself “AI-native” in 2026 means it has Python bindings or runs on a GPU. [Iyi](https://iyi.dev/) means something specific. Its central design rule: a module compiles against its dependencies’ declarations, never their bodies.

A `.iyimod` artifact packages three things — declarations, machine code, and a per-section checksum. Build once, ship the artifact, delete the source. The next build reads declarations and links. It does not parse bodies.

For agents, this translates directly. `iyi mod context --json` outputs declaration-only context at 52–59% of full source size. Models writing against it use 31–43% fewer prompt tokens. That is not a small optimization. That is the difference between fitting a codebase in a context window and not fitting it.

Other languages make agents read entire files to understand a function signature. Iyi does not.

## MCP and LSP Are in the Binary

No other language ships this way. `iyi mcp` exposes five [Model Context Protocol](https://modelcontextprotocol.io/) tools over stdio. `iyi lsp` speaks Language Server Protocol the same way. Configuration required: none. Separate install: none.

- **check** — returns JSON with file, line, span, and a`suggested_edit` when the compiler knows the fix. Clean check exits 0, making the exit code the verdict.
- **fix** — applies the suggested edit.
- **test –affected** — runs only the tests an edit can reach.
- **run –sandbox** — executes generated code against a sandboxed runtime.
- **context** — prints every import’s declarations with docs, no bodies.

The key point here is ownership. Iyi’s compiler owns the MCP tools, so `check` can return `suggested_edit` directly from the type-checker. A third-party plugin bolted onto another language cannot do that.

## Crystal Compatibility

New languages usually ask you to abandon your ecosystem. Iyi does not. The same compiler builds `.cr` files. `iyi build --crystal` gives the program [Crystal](https://crystal-lang.org/)‘s full standard library. `require "kemal"` in an `.iyi` file serves HTTP.

The team ran nine Crystal shards — kemal, db, ameba, sqlite3, radix, and others — through the compiler. They build. For Crystal and Ruby-ish developers, this is the lowest-friction path to experimenting with Iyi. For everyone else: if the language builds Crystal’s ecosystem, its stdlib foundations are solid.

## Nine Targets, Including WASM

CI cross-compiles against seven triples: Linux x86_64 and aarch64, macOS Intel and ARM, Windows MSVC and GNU, and wasm32-wasi. Concurrency runs on the native targets. The WASM target gets no concurrency runtime rather than a broken sequential imitation — an honest call.

## Status: Early, Worth Watching

55 GitHub stars. Syntax not stable. [v0.20.1](https://github.com/iyilang/iyi/releases/tag/v0.20.1) was a stress-test bugfix round: a darwin server killed by SIGPIPE when a client reset before accept, a collector crash on M2 aarch64, compiler crashes around `NoReturn` blocks, and a stale Windows DLL in the build cache. The team found and fixed these quickly. But this is not production-ready for most teams.

The .iyimod approach is the right architectural bet for agentic programming. The decision to put MCP and LSP in the compiler binary — instead of leaving it to third-party tooling — sets the right precedent. Watch v0.21 for syntax stability signals. Experiment now if you are building agent tooling and want to see what this model feels like in practice.

```
curl -fsSL https://raw.githubusercontent.com/iyilang/iyi/master/install.sh | sh
~/.local/bin/iyi run ~/.local/share/iyi/samples/hello.iyi
```


