Skip to main content
Glama
CLEARSY

Atelier B MCP Server

Official
by CLEARSY
README.md
<!--
Copyright (C) 2026 CLEARSY (https://www.clearsy.com)
SPDX-License-Identifier: AGPL-3.0-or-later
-->

# Atelier B MCP Server

An [MCP (Model Context Protocol)](https://modelcontextprotocol.io) server that connects [Claude AI](https://claude.ai) with [Atelier B](https://www.atelierb.eu), the formal methods IDE for the B-method.

This server enables Claude to directly interact with Atelier B projects: typechecking components, generating proof obligations, running the automatic prover, generating C code, and managing project files.

> **Works with Atelier B Community Edition 24.04.2** (`ATELIER B (Community Edition) version 24.04.2`, B Compiler `version/24.08`), which is the version every tool is developed and tested against. Other 24.x releases are expected to work, since the server drives `bbatch` through its documented command names, but they are not tested. Commands available only in the Professional edition, `vr` (`verify_rule`) among them, are deliberately not exposed; see [docs/coverage.md](docs/coverage.md).
>
> Also requires **Python 3.11+** and **mcp 2.0+**.

## History

Most recent first.

| Date | Change |
|------|--------|
| 2026-08-19 | **Phase 1 closed: fifteen bbatch commands added**, coverage 25 % to 54 %. Project check, archive and restore, make-all and remake, Rust generation, plus: what is left to prove (`us` / `ug`), component metadata (`ic`), prover timeout (`to`), unprove (`u`), the external SMT provers (`xtp`, `xtr`, `xce`) and the mechanism listings (`spm` / `sppm`) |
| 2026-08-19 | Projects created by the server now **appear in the workspace you browse**. Atelier B can hold several workspaces, each being a directory of `<project>.desc` descriptors; `crp` registers a new project in the default workspace only, so the server also writes the descriptor into the one `ATELIERB_WORKSPACE` points at |
| 2026-08-13 | **Ported to the mcp 2.0 protocol**, upper version bound lifted |
| 2026-08-06 | PMI proof files read through the sibling PO file, so proof state is attributed to the right proof obligation |
| 2026-08-06 | B sources moved to `src/`, out of the translation directory |

## Architecture

```
Claude Desktop (MCP Client)
    |  MCP Protocol (stdio, JSON-RPC 2.0)
    v
MCP Server (Python)
    |  subprocess (stdin/stdout)
    v
bbatch.exe (Atelier B CLI)
    |  filesystem
    v
B Projects (bdp/ + lang/ + src/ directories)
```

The server wraps Atelier B's `bbatch` command-line interface, translating MCP tool calls into bbatch commands and parsing the output back into structured responses. Files are returned exactly as they are on disk; when a PMI file is read, its per-PO entries are paired with the labels of the sibling PO file so they can be attributed to the right proof obligation (see [docs/PMI_PMM_ORDERING.md](docs/PMI_PMM_ORDERING.md)).

## Available Tools

| Category | Tools |
|----------|-------|
| **Project Management** | `atelierb_list_projects`, `atelierb_infos_project`, `atelierb_list_components`, `atelierb_create_project`, `atelierb_remove_project`, `atelierb_add_component`, `atelierb_remove_component` |
| **Verification** | `atelierb_typecheck`, `atelierb_b0check`, `atelierb_pogenerate`, `atelierb_prove`, `atelierb_status`, `atelierb_unproved_status`, `atelierb_infos_component`, `atelierb_proof_timeout`, `atelierb_unprove` |
| **External provers** (NG projects) | `atelierb_list_proof_mechanisms`, `atelierb_extprove`, `atelierb_extreplay`, `atelierb_counter_example` |
| **Code Generation** | `atelierb_generate_c`, `atelierb_generate_project_c`, `atelierb_generate_rust` |
| **Project Operations** | `atelierb_project_check`, `atelierb_make_all`, `atelierb_remake`, `atelierb_archive`, `atelierb_restore` |
| **Diagnostics** | `atelierb_version`, `atelierb_metrics` |
| **File Operations** | `atelierb_list_files`, `atelierb_read_file`, `atelierb_write_file`, `atelierb_list_project_structure` |

## Prerequisites

- **Python 3.11+**
- **Atelier B Community Edition 24.04.2** with `bbatch.exe` (the tested version; see the note at the top)
- **Claude Desktop** (or any MCP-compatible client)

## Installation

```bash
# Clone the repository
git clone https://github.com/CLEARSY/atelierb-mcp.git
cd atelierb-mcp
```

All remaining commands are run from this **repository root** (the directory that
contains `pyproject.toml`), not from the inner `atelierb_mcp/` package directory.

### Recommended: install into a virtual environment

On recent Linux distributions (and macOS with Homebrew Python), installing into
the system interpreter fails with `error: externally-managed-environment`
([PEP 668](https://peps.python.org/pep-0668/)). Use a virtual environment:

```bash
python -m venv .venv

# Activate it
source .venv/bin/activate        # Linux / macOS
# .venv\Scripts\activate         # Windows (PowerShell / cmd)

# Install dependencies (run from the repository root)
pip install -e .

# Or install with dev dependencies
pip install -e ".[dev]"
```

Re-activate the environment (`source .venv/bin/activate`) in any new shell before
running the server. When configuring an MCP client, point `command` at the
interpreter inside `.venv` (for example `.venv/bin/python`) so it uses the
installed dependencies.

## Configuration

Copy `.env.example` and adjust paths:

```bash
cp .env.example .env
```

Environment variables:

| Variable | Description | Default |
|----------|-------------|---------|
| `ATELIERB_PATH` | Path to Atelier B installation | `C:\Program Files\Atelier B Community Edition 24.04.2 24.04.2` |
| `ATELIERB_WORKSPACE` | Path to B projects workspace | *(none -- must be set)* |
| `ATELIERB_BBATCH_CMD` | bbatch executable name | `bbatch.exe` |
| `ATELIERB_COMMAND_TIMEOUT` | Command timeout in seconds | `120` |

**Important:** You must set `ATELIERB_PATH` and `ATELIERB_WORKSPACE` to match your local Atelier B installation and B projects directory.

## Claude Desktop Integration

Add to your Claude Desktop configuration (`%APPDATA%\Claude\claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "atelierb": {
      "command": "python",
      "args": ["-m", "atelierb_mcp.server"],
      "env": {
        "ATELIERB_PATH": "C:\\Program Files\\Atelier B Community Edition 24.04.2 24.04.2",
        "ATELIERB_WORKSPACE": "C:\\path\\to\\your\\B\\workspace"
      }
    }
  }
}
```

Adjust `ATELIERB_PATH` and `ATELIERB_WORKSPACE` to match your local setup, then restart Claude Desktop.

## Usage Examples

Once configured, you can ask Claude:

- *"List all Atelier B projects in the workspace"*
- *"Typecheck the Airlock machine in the SafetySystem project"*
- *"Run B0 check on the Airlock_i implementation"*
- *"Generate proof obligations and run the prover on Airlock"*
- *"Show the proof status of the SafetySystem project"*
- *"Generate C code for the Airlock component"*

## Development

```bash
# Run tests
pytest tests/ -v

# Run only unit tests (skip integration tests requiring bbatch)
pytest tests/ -v -m "not integration"

# Type checking
mypy atelierb_mcp/

# Linting
ruff check atelierb_mcp/

# Test with MCP Inspector
npx @modelcontextprotocol/inspector python -m atelierb_mcp.server
```

## Project Structure

```
atelierb_mcp/
├── server.py              # MCP server entry point with tool definitions
├── bbatch_wrapper.py      # Async subprocess wrapper for bbatch CLI
├── parsers.py             # Output parsers for bbatch responses
├── config.py              # Pydantic settings management
└── tools/
    ├── project_tools.py   # Project management tools
    ├── proof_tools.py     # Verification tools (typecheck, prove, etc.)
    ├── file_tools.py      # File access tools
    └── code_tools.py      # C code generation tools

tests/
├── conftest.py            # pytest fixtures with mock bbatch
├── test_parsers.py        # Parser unit tests
└── test_bbatch_wrapper.py # Wrapper tests

docs/
├── ARCHITECTURE.md        # Detailed architecture documentation
├── DEPLOYMENT_GUIDE.md    # Step-by-step deployment instructions
└── bbatch_commands.md     # bbatch CLI command reference
```

## How This Project Was Built

This project was developed using [Claude Code](https://claude.ai/code) (Anthropic's CLI for Claude). The entire codebase -- server implementation, tools, parsers, tests, and documentation -- was written through interactive sessions with Claude Code, guided by a development plan and iterative refinement.

## Documentation

- [Architecture](docs/ARCHITECTURE.md) - System architecture and design
- [Deployment Guide](docs/DEPLOYMENT_GUIDE.md) - Step-by-step deployment instructions
- [bbatch Commands](docs/bbatch_commands.md) - Atelier B CLI reference

## License

Copyright (C) 2026 [CLEARSY](https://www.clearsy.com)

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

See [LICENSE.md](LICENSE.md) for the full license text.

TDQS

A3.6/5.0

Scored across 18 tools

Disambiguation4/5

Most tools target distinct resource-action pairs (project, component, proof, file, code generation). Potential confusion exists between infos_project and list_project_structure, and between list_files and list_components, but the descriptions are detailed enough to disambiguate.

Naming Consistency3/5

All tools share the 'atelierb_' prefix, but the verb-noun pattern is inconsistent. 'infos_project' lacks a verb, 'status' is a bare noun, and 'b0check' and 'pogenerate' embed the object before the verb in an unusual way. A more uniform pattern like 'check_b0' or 'generate_po' would be clearer.

Tool Count3/5

18 tools is at the high end (16-25 feels heavy). For a specialized B-method IDE, the count is understandable, but some read-only informational tools (infos_project, list_project_structure, list_files) could potentially be consolidated to reduce interface surface.

Completeness5/5

The tool set provides comprehensive lifecycle coverage: project and component CRUD, typecheck/B0 check, proof obligation generation/proving/status, file read/write, and C code generation for both components and entire projects. There are no major gaps in the B development workflow.

Maintenance

ActivityMaintained
ResponsivenessResponsive