
Sema
com.sema-langPublished by sema-lang.comv2.0.0Updated Oct 29, 2026
MCP tools for Sema — eval, compile, build, format, and docs for a Lisp with LLM primitives.
Overview
MCP server for Sema, a Lisp with LLM primitives, letting an assistant evaluate, compile, format, build and look up docs for Sema code.
- What you can do
- Evaluate and compile Sema Lisp expressions and scripts in the user's environment
- Format Sema source and build standalone executables
- Look up language and standard-library documentation
- Call the user's own deftool Lisp tools defined in Sema
- When to use it
- Useful when working with Sema code or building LLM agent scripts in Sema and you want the assistant to run, format, build or document that code directly rather than guessing at an unfamiliar language.
- Requirements
- Runs as a local process on the user's machine (desktop only), distributed as an mcpb package; the README describes installing the Sema binary via installer script, Homebrew, crates.io or source build. No authentication, environment variables or headers are declared.
Installation
In SourceWeft
- Open Sema in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
Sema
A Lisp where LLM agents are language primitives, not an SDK — compiled to a fast bytecode VM, shipped as a single binary.
[Playground] [Docs] [Version] [Coverage] [License]
Docs · Playground · For Agents · Examples · Issues
Stop rewriting the agent loop. Every LLM script grows the same scaffolding — retries, caching, cost caps, rate limits, tool dispatch, conversation state. Sema makes that scaffolding the runtime: your script stays the size of its idea, ships as a single binary, and your coding agent already speaks the language.
Sema is a Scheme-like Lisp where prompts are s-expressions, conversations are persistent data structures, and LLM calls are just another form of evaluation — with Clojure-style keywords (:foo), map literals ({:key val}), and vector literals ([1 2 3]).
What It Looks Like
A coding agent with file tools, safety checks, and budget tracking — in ~40 lines:
Key Features
Supported Providers
All providers are auto-configured from environment variables — just set the API key and go.
It's Also a Real Lisp
Hundreds of built-in functions, tail-call optimization, macros, modules, error handling — not a toy.
📖 Full language reference, stdlib docs, and more examples at sema-lang.com/docs
Try It Now
sema.run — Browser-based playground with 20+ example programs. No install required. Runs entirely in WebAssembly.
Teach Your Coding Agent Sema in One Line
Sema is new, so your agent hasn't seen it. Fix that in one command — append the
agent crib sheet to your repo's AGENTS.md (and point CLAUDE.md at it):
for-agents.md is a compact working guide for
an LLM that already knows a Lisp. It covers the rules most likely to cause incorrect
generated code and links to /llms.txt, a machine index
of every doc page. The agent can fetch only the page it needs (for example,
/docs/llm/tools-agents.md) instead of loading the whole manual. Every doc URL also
serves raw Markdown: append .md to a sema-lang.com/docs/... link to get the source.
Installation
Install pre-built binaries (no Rust required):
Or install from crates.io:
Or build from source:
For local development that needs an optimized binary, use jake release-fast
or cargo build --profile release-fast. The binary is at
target/release-fast/sema. This profile uses incremental compilation and
parallel codegen, with no cross-crate LTO. Use --release for performance
measurements and distribution builds. See the
build profile measurements for build times
and runtime tradeoffs.
Shell Completions
Generate tab-completion scripts for your shell:
📖 Full setup instructions for all shells: sema-lang.com/docs/shell-completions
📖 Full CLI reference, flags, and REPL commands: sema-lang.com/docs/cli
Editor Support
Each editor plugin lives in its own repo under the sema-lisp org:
All plugins provide syntax highlighting; VS Code, Zed, IntelliJ, Neovim, Emacs, Helix, and Sublime also wire up the built-in language server (sema lsp), and several (VS Code, Zed, IntelliJ, Neovim, Helix) add debugging (sema dap) — some also register the MCP server (sema mcp). Zed, Helix, and Neovim highlight via the shared tree-sitter-sema grammar; the others ship their own.
📖 Full installation instructions and per-editor feature lists: sema-lang.com/docs/editors
Notebook
Sema includes a Jupyter-inspired notebook interface with a browser UI:
Cells share a persistent environment — definitions in earlier cells are visible in later ones. Notebooks are saved as .sema-nb JSON files.
📖 Full notebook documentation: sema-lang.com/docs/notebook
Language Tooling
A full toolchain ships in the box — no plugins to assemble:
The MCP server lets LLM clients (Claude Desktop, Cursor, Claude Code) compile, format, evaluate, and build Sema code — and call your own deftool Lisp tools — directly in your environment.
Example Programs
The examples/ directory has 50+ programs:
Why Sema?
The pitch in one line: no LangChain, no provider SDK, no agent framework, no glue
script — the agent loop, retries, caching, budgets, tracing, and tool dispatch are the
language runtime, and the whole thing is one binary you can scp to a box.
- LLMs as language primitives — prompts, messages, conversations, tools, and agents are first-class data types, not string templates bolted on
- Multi-provider — swap between Anthropic, OpenAI, Gemini, Ollama, any OpenAI-compatible endpoint, or define your own provider in Sema
- Pipeline-ready — response caching, fallback chains, rate limiting, retry with backoff, text chunking, prompt templates, vector store, and a persistent KV store
- Cost-aware — built-in budget tracking with a bundled pricing snapshot (models.dev), updated per release
- Observable — every LLM/agent run is auto-traced with OpenTelemetry (GenAI semantic conventions): tokens, cost, latency, and the full
invoke_agent → chat → execute_tooltree, exportable to Jaeger, Grafana, Datadog, Langfuse, Arize Phoenix, and more — zero manual instrumentation, off by default - Practical Lisp — closures, TCO, macros, modules, error handling, HTTP, file I/O, regex, JSON, and a comprehensive stdlib
- Standalone executables —
sema buildcompiles programs into self-contained binaries with auto-traced imports and bundled assets - Embeddable — a Rust crate with a builder API, or
@sema-lang/semato run Sema client-side in JS via WebAssembly - Full toolchain — formatter, language server (LSP), debugger (DAP), and an MCP server for LLM clients, all built in
- Package manager —
sema pkgpulls dependencies from git or the live registry at pkg.sema-lang.com, pinned by asema.lockfor reproducible installs - Developer-friendly — REPL with tab completion, structured error messages with hints, and 50+ example programs
Why Not Sema?
- No continuations (
call/cc) or fully hygienic macros (syntax-rules) — has auto-gensym (foo#) for preventing variable capture - Single-threaded —
Rc-based, no cross-thread sharing of values - No JIT — bytecode compiler + stack-based VM, no native code generation
- Young language — solid but not battle-tested at scale
Architecture
🔬 Deep-dive into the internals: Architecture · Evaluator · Lisp Comparison
License
MIT — see LICENSE.
Source: README.md at commit 3b1e81b
Tools
0Version history
4- v2.0.0LatestOct 29, 2026
- v1.37.0Oct 9, 2026
- v1.36.1Oct 5, 2026
- v1.36.0Sep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts