Olm is a program that takes a simple text file and spits out a full blown MCP server.
Write your tools as one-liners, get a working Python or TypeScript server on the other end.
The comment above the command becomes the description field for the tool
#! List files in a directory
ls:ls -la {path}
#! Run in a sandbox
sandbox_run:docker exec -it {container} "{command}"
#! Run a custom bash command
bash: /usr/bin/env bash -c "{command}"
- Declarative tool definitions:
name:commandpairs - Parameters extracted automatically from
{placeholders} - Generates Python (
FastMCP) or TypeScript (@modelcontextprotocol/sdk) - Inline or standalone descriptions via the
#!prefix
python <(olm example.olm)Python:
olm tools.txt -l py > tools.pyTypeScript:
olm tools.txt -l ts > tools.ts| Argument | Short | Required | Description |
|---|---|---|---|
spec |
Yes | Path to the spec file | |
--lang |
-l |
No | py or ts (default: py) |
--output |
-o |
No | Output file (defaults to stdout) |
- Tool:
name:command - Parameters:
{like_this}in the command string becomes a tool input - Descriptions:
- Inline:
name:command #! Description here - Standalone:
#! Description hereon the line before the tool
- Inline:
- Comments: Lines starting with
#(but not#!) are ignored
Python: mcp (FastMCP)
TypeScript: @modelcontextprotocol/sdk, Node.js with child_process and util
