Skip to main content
Glama
Atelier B MCP Server

Atelier B MCP Server

Official
by CLEARSY

Atelier B MCP Server

An MCP (Model Context Protocol) server that connects Claude AI with Atelier B, 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.

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

Related MCP server: BlenderMCP

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).

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

# 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.

On recent Linux distributions (and macOS with Homebrew Python), installing into the system interpreter fails with error: externally-managed-environment (PEP 668). Use a virtual environment:

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:

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):

{
  "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

# 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 (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

License

Copyright (C) 2026 CLEARSY

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 for the full license text.

Available Tools

18 tools
atelierb_add_componentA

Add a new B component (machine, refinement, or implementation) to a project. Creates the file in src/ with a template and registers it with Atelier B.

Inputs: project_name (required), component_name (required), component_type (required), content.

atelierb_b0checkA

B0 check a B component to verify it is B0 compliant (required before C code generation)

Inputs: project_name (required), component_name (required).

atelierb_create_projectA

Create a new Atelier B project in the workspace with bdp, lang, and src subdirectories

Inputs: project_name (required), project_type.

atelierb_generate_cA

Generate C code for a single B component (implementation or basic machine). Output goes to lang/c directory.

Inputs: project_name (required), component_name (required), profile.

atelierb_generate_project_cA

Generate C code for a complete B project from a toplevel component. Output goes to lang/c directory.

Inputs: project_name (required), toplevel_component (required), profile, generate_main.

atelierb_infos_projectB

Get detailed information about an Atelier B project

Inputs: project_name (required).

atelierb_list_componentsA

List all components (machines, refinements, implementations) in a project

Inputs: project_name (required).

atelierb_list_filesA

List B source files in the workspace. Supports filtering by project and extension (.mch, .ref, .imp, .erf, etc.)

Inputs: project_name, extension_filter.

atelierb_list_projectsA

List all available Atelier B projects

Inputs: no named parameters.

atelierb_list_project_structureA

Get the directory structure of a B project showing files and subdirectories

Inputs: project_name (required).

atelierb_pogenerateB

Generate proof obligations for a B component

Inputs: project_name (required), component_name (required), differential.

atelierb_proveB

Run automatic prover on a B component. Force levels: 0-3 (auto), 10-13 (forced), -1 (fast), -2 (replay)

Inputs: project_name (required), component_name (required), force.

atelierb_read_fileA

Read the content of a B source file (.mch, .ref, .imp, etc.), C code (.c, .h), or Makefile from the workspace. Content is returned verbatim. For a .pmi file, a 'po_labels' list names the proof obligation each entry of its flat theories (ProofState, MethodList, PassList) belongs to; those entries carry no operation name of their own, so do not try to infer it from their position.

Inputs: file_path (required).

atelierb_remove_componentA

Remove a component from an Atelier B project. Optionally delete the source file from disk.

Inputs: project_name (required), component_name (required), delete_file.

atelierb_remove_projectA

Remove an Atelier B project. WARNING: If delete_files is true, permanently deletes all project files!

Inputs: project_name (required), delete_files.

atelierb_statusB

Get proof status of a component or entire project

Inputs: project_name (required), component_name.

atelierb_typecheckB

Typecheck a B component to verify syntax and type correctness

Inputs: project_name (required), component_name (required).

atelierb_write_fileA

Write or update the content of a B source file (.mch, .ref, .imp, etc.), C code (.c, .h), or Makefile in the workspace. Creates a backup by default.

Inputs: content (required), file_path (required), create_backup.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    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

    ActivityNo data
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers