| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Original HTTPS Page] |
A suite of engine-neutral developer tools for the M (MUMPS) programming language, built around a CI/CD-friendly, test-driven-development workflow. At the center sit two complementary projects: m-stdlib, a pure-M runtime standard library (assertions, fixtures, mocks, JSON, regex, HTTP, crypto, logging, …) that gives every test the primitives it needs to be expressive, isolated, and reproducible; and m-cli, the m <subcommand> command-line toolchain (m fmt, m lint, m test, m coverage, m watch, m lsp, …) that makes the red → green → refactor loop, pre-commit hooks, coverage gates, and CI pipelines a first-class experience. Together with a real parser (tree-sitter-m), a citable language reference (m-standard), a lightweight containerized test engine (m-test-engine), and editor integrations, they form an end-to-end TDD stack that works identically for InterSystems IRIS and YottaDB developers maintaining modern (pythonic) M code, as well as large legacy (VistA) M code.
m-dev-tools ships an MCP server (m-dev-tools-mcp, also listed on the official MCP registry as io.github.m-dev-tools/m-dev-tools-mcp) that exposes route_intent / describe / verify over the catalog so any MCP-capable agent (Claude Code, Codex, Continue, …) can resolve plain-English M-tooling intent without guessing. See the AI users guide for install paths (PyPI, .mcp.json, registry-driven), example sessions, and the no-MCP fallback that walks tools.json directly.
M (MUMPS) is the language supporting a great deal of healthcare and financial infrastructure worldwide, but its modern developer tooling has historically lagged behind mainstream languages. The 2026 cross-engine gap analysis (docs/history/m-tools-gap-analysis.md) inventoried the deficit — no test runner, no logic linter, no formatter, no single-test selection, no test watcher — and ranked the missing pieces into four impact tiers.
m-dev-tools is the focused remediation of that top tier: the inner development loop that mainstream language ecosystems take for granted and that M has never had. m-dev-tools also provides a portable, industry-conformant M standard library which has not existed to date, enabling rapid development of applications without re-inventing wheels.
The M test-driven-development walkthrough is an end-to-end transcript of building a small data-analysis app — reqstats, an HTTP-access-log summarizer — using only the m toolchain and m-stdlib. Exercises every m <subcommand> (fmt / lint / test / coverage / watch / lsp / new / run / build / ci) and the M standard library it consumes. The fastest way to see modern test-driven development with continuous integration on a clean host.
See the Getting started guide for prerequisites, install paths, verification, and troubleshooting.
curl -O https://raw.githubusercontent.com/m-dev-tools/.github/main/setup.sh
less ./setup.sh
bash ./setup.sh| Repo | What it is |
|---|---|
| tree-sitter-m | Tree-sitter grammar for M. 99.06% clean on the 39,330-routine VistA corpus. Bindings for Node, Rust, Python, Go. |
| m-standard | Citable, machine-readable M-language reference reconciling the ANSI standard, YottaDB docs, and InterSystems IRIS docs. |
| m-stdlib | Pure-M (and selectively $ZF-bound) runtime standard library — assertions, JSON, regex, datetime, CSV, argparse, fixtures, mocks, logging, UUID, base64, HTTP, crypto, compression, and more. YottaDB-first; IRIS-portable where reasonable. |
| Repo | What it is |
|---|---|
| m-cli | The canonical m <subcommand> toolchain: m fmt, m lint, m test, m coverage, m watch, m lsp, m doc, m doctor, m new, m run, m build, m ci init, plus modernization rules (M-MOD-001..036, 8 lint profiles). |
| m-cli-extras | Out-of-tree subcommands for m-cli (e.g. m corpus-stats), registered via the m_cli.plugins entry-point group. The bucket for niche utilities that shouldn't bloat core. |
| m-test-engine | Minimal YottaDB Docker container for m-cli and m-stdlib testing. The lightweight default for non-VistA M development — no SSH server, no FileMan, just an engine that docker exec can drive. |
| Repo | What it is |
|---|---|
| tree-sitter-m-vscode | VS Code extension — syntax highlighting and language support powered by tree-sitter-m compiled to WASM. Spawns m lsp for live diagnostics, formatting, and Quick Fix code actions when m-cli is installed. |
| m-stdlib-vscode | VS Code extension — manifest-driven hover docs, goto-definition, and completion for the m-stdlib public surface. |
| Repo | What it is |
|---|---|
| m-modern-corpus | Snapshot collection of modern non-VistA M source from active open-source projects (EWD, mgsql, M-Web-Server, YDBOcto auxiliary, YDBTest). Used as a validation corpus for the parser and lint rules. |
| Where | What it is |
|---|---|
| .github/docs/history/ | Frozen in-org snapshots of the design documents that seeded the entire org — the original 2026 gap analysis, the Tier 1–4 strategy, and the m <subcommand> command map that produced everything above. Imported verbatim from the m-tools seed repo (since moved out of the org back to its original author's account). Start here for the why. |
┌────────────────────────────────────┐
│ .github/docs/history/ │
│ (frozen snapshots from the │
│ former m-tools seed repo) │
│ • original gap analysis │
│ • Tier 1–4 strategy docs │
└─────────────────┬──────────────────┘
│ shaped
▼
════════════════════════════ FOUNDATION ════════════════════════════════
┌────────────────────────┐ ┌──────────────────────────┐
│ m-standard │ grammar-surface │ tree-sitter-m │
│ citable M reference │ ───────────────▶ │ parser → AST │
│ ANSI ⊕ YDB ⊕ IRIS ⊕ │ .json │ 99.06 % on VistA │
│ VA SAC, as TSV+JSON │ │ WASM · JS · Rust · │
└────────────┬───────────┘ │ Python · Go bindings │
│ TSVs └──────────────┬───────────┘
│ (commands, ISVs, functions) │ AST
│ │
════════════════════════════ TOOLCHAIN ═════════════════════════════════
│ │
▼ ▼
┌────────────────────────────────────────────────────────────────────┐
│ m-cli │
│ m fmt m lint m test m coverage m watch m lsp │
│ m doc m new m run m build m doctor m ci │
└────┬─────────────────┬─────────────────────────────┬────────────────┘
│ entry-points │ docker exec │ manifest
▼ ▼ ▼
┌──────────────┐ ┌──────────────────┐ ┌─────────────────────────────┐
│ m-cli-extras │ │ m-test-engine │ │ m-stdlib │
│ out-of-tree │ │ minimal YDB │ │ pure-M runtime — STDJSON, │
│ plugins │ │ Docker container │◀─│ STDREGEX, STDHTTP, STDFS, │
│ (corpus- │ │ (`docker exec`, │ │ STDASSERT, STDFIX, STDMOCK, │
│ stats, …) │ │ /work mount) │ │ STDCRYPTO, STDLOG, … 32 mods│
└──────────────┘ └──────────────────┘ └───────────────┬─────────────┘
│ stdlib-manifest.json
════════════════════════════ EDITORS ═══════════════════════════════════
│
┌──────────────────────────────┐ ┌──────────────▼───────────────┐
│ tree-sitter-m-vscode │ │ m-stdlib-vscode │
│ • WASM syntax highlighting │ │ • hover docs │
│ • spawns `m lsp` for live │ │ • goto-definition │
│ diagnostics + Quick Fix │ │ • completion for STD* │
│ • workspace smoke-report │ │ symbols in .m files │
└──────────────────────┬───────┘ └──────────────────────────────┘
│ uses tree-sitter-m WASM
▼
════════════════════════════ VALIDATION ════════════════════════════════
┌──────────────────────────────────────────────────────────────────────┐
│ m-modern-corpus │
│ Snapshots of modern non-VistA M (EWD, mgsql, YDBOcto aux, YDBTest) │
│ — calibrates the parser's grammar gates and m-cli's M-MOD-NN rules │
│ against contemporary idioms rather than legacy VA conventions. │
└──────────────────────────────────────────────────────────────────────┘
Reading the diagram from the top:
Most repos are AGPL-3.0, the two VS Code extensions are MIT to align with the broader extension ecosystem, and m-modern-corpus carries per-subdirectory upstream licenses (see its LICENSES.md). A migrated repo's license is the canonical statement; this README is summary only.
Maintainers and tool authors working on:
VistA-specific code, FileMan, RPC infrastructure, and KIDS tooling live in separate repositories under a different organization. m-dev-tools is explicitly the engine-neutral, modern-M half of the ecosystem.
VS Code extension for m-stdlib — manifest-driven hover, goto-definition, and completion for STD* symbols in M (MUMPS) source.
TypeScript
Out-of-tree subcommands for m-cli — niche utilities (m corpus-stats, etc.) registered via the m_cli.plugins entry-point group
Python
VS Code extension for m-stdlib — manifest-driven hover, goto-definition, and completion for STD* symbols in M (MUMPS) source.
MCP server for the m-dev-tools org catalog — exposes route_intent, describe, and verify as first-class agent tools.
Out-of-tree subcommands for m-cli — niche utilities (m corpus-stats, etc.) registered via the m_cli.plugins entry-point group
This organization has no public members. You must be a member to see who’s a part of this organization.
Loading…
Loading…
| Back | FazBrowse Home | New Git URL |