Fortran Companion MCP Server
The Fortran Companion MCP Server equips AI models with 26 tools to write, analyze, modernize, and structure modern Fortran code (F2003/F2018/F2023) across four capability areas:
Author & Verify
explain_best_practices– Retrieve a guide to modern Fortran coding standards and design patterns.lint_code/lint_file– Statically analyze code for legacy syntax, implicit typing, missingintentattributes, and bad practices.format_code/format_file– Auto-format usingfprettifywith configurable indentation, line length, and spacing.compile_project– Compile viagfortran/fpmwith strict flags (-Wall -Wextra -std=f2018, etc.).run_tests– Execute test suites viafpm testormake test.validate_syntax/validate_syntax_file– Fast, build-free syntax checks using fparser2 AST.initialize_project– Scaffold new modular Fortran projects withfpmor Makefile layouts.
Modernize & Refactor
modernize_file– Convert F77 idioms (e.g.,.eq.→==,double precision→ parameterized kinds) and injectiso_fortran_env.verify_regression– Compare legacy and modernized binary outputs to confirm no behavior change.convert_common_to_module– TransformCOMMONblocks into encapsulated modules.rename_legacy_identifiers– Safely rename variables to descriptive modern names within file scope.analyze_pure_candidates– Identify procedures suitable forpure/elementalattributes.audit_implicit_interfaces– Flag call sites lacking explicit interfaces across a project.suggest_refactoring/suggest_refactoring_file– Get idiomatic restructuring recommendations.suggest_design_pattern– Retrieve boilerplate for GoF/modern Fortran patterns (OOP, Generics, RAII, Callbacks, Factory, Observer, Strategy, C-Interop, etc.).
Understand a Codebase
project_metrics– Compute modernization scores, legacy construct counts, LOC, and comment density as a "legacy heatmap."dependency_graph– Generate moduleusedependency graphs with fan-in/fan-out metrics, keystone module detection, mutable-global-state flags, and a Mermaid diagram.find_large_units– Detect oversized procedures/modules by LOC, nesting depth, andSELECT CASEarity.
Scaffold & Interoperate
scaffold_unit_test– Generate unit test templates for specific module procedures.scaffold_hpc_grid– Bootstrap HPC grid/stencil templates using Coarrays or OpenMP.generate_c_bindings– Auto-generate a C binding layer usingiso_c_binding.generate_python_interface– Auto-generate Pythonctypes/numpybinding scripts (also auto-generates C bindings).
Allows AI agents to write, format, compile, lint, and structure modern Fortran code (F2003/F2018/F2023) using best practices and industry design patterns.
Generates NumPy-compatible binding wrapper scripts for Fortran modules, enabling high-performance array data interchange.
Generates Python (ctypes/numpy) binding wrapper scripts to enable integration of Fortran modules with Python.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Fortran Companion MCP Serverlint and compile my Fortran project"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Fortran Companion MCP Server
A Model Context Protocol (MCP) server designed to enable AI models to write, format, compile, lint, and structure modern Fortran code (F2003/F2018/F2023) using best practices and industry design patterns.
🌟 Why This Project?
AI models are trained on large volumes of legacy Fortran code (e.g., Fortran 66, 77, 90). When generating Fortran today, they regularly produce "AI Slop":
Implicit variable typing (omitting
implicit none).Non-standard vendor-specific types (like
real*8orinteger*4instead of standardkindparameters).Obsolescent control structures (numbered loops like
do 10 i = 1, Nandgotostatements).Global state blocks (
commonandequivalence) which violate modern scoping rules.Lack of explicit interfaces (omitting module containers and dummy argument
intentattributes).
This MCP server equips AI agents (in Cursor, Claude Desktop, or Antigravity CLI) with tools to statically check, auto-format, compile, and structure Fortran code. This creates a self-correcting feedback loop where the AI compiles and lints its own work, ensuring only high-quality, modern Fortran is delivered.
Related MCP server: MCP AI POC
🔁 How It Works
You don't call these tools yourself — your AI assistant does, automatically. This is a server your AI talks to — not a CLI you run, not a library you import.
Install it once into your MCP-capable AI host (Claude Desktop, Cursor, or Antigravity CLI — see Setup & Connection below).
Work with your AI as you normally would — ask it to write a new module, modernize a legacy routine, or review a file.
Behind the scenes, the AI uses these tools to check its own work — it lints, compiles, and formats what it just wrote, reads the diagnostics, and fixes its own mistakes before showing you the result.
The net effect: you get modern, standards-compliant Fortran instead of "AI Slop," without hand-correcting the model's output.
👥 Who It's For
Engineers pairing with an AI on Fortran who want generated code to follow F2003/F2018 standards out of the box.
Teams modernizing legacy F77/F90 code — convert fixed-format layouts,
commonblocks, and obsolete types into modular, intent-checked modern Fortran, with regression checks to prove behavior didn't change.Anyone auditing or onboarding onto a large codebase — get project-wide modernization metrics, a module dependency graph, and oversized "god-file" hot spots to see what needs attention first.
🛠️ What It Does (Tool Catalog)
The server exposes 26 MCP tools the AI can call, grouped by purpose:
Author & verify
explain_best_practices— the modern-Fortran style guide the agent is told to follow.lint_code/lint_file— static analysis for obsolete types, missingintent, missingimplicit none, fixed-format layout, and deprecated statements.format_code/format_file— clean indentation and formatting viafprettify.compile_project— strictgfortran/fpmcompilation (-Wall -Wextra -Wimplicit-interface -fcheck=all -std=f2018).run_tests— runs the project'sfpm/maketest suite.validate_syntax/validate_syntax_file— fast, build-free syntax check via the fparser2 AST; preprocess-aware for source laced with C-preprocessor macros.initialize_project— scaffolds a modern modular project (fpm or Makefile layout) with intents and test templates.
Modernize & refactor
modernize_file— converts F77 idioms (.eq.→==,double precision→ parameterized kinds, injectsiso_fortran_env) and reformats.verify_regression— runs legacy vs. modernized binaries and compares output + exit status to prove no behavior change.convert_common_to_module— turns globalcommonblocks into module-scoped state.rename_legacy_identifiers— safe, scoped identifier renaming.analyze_pure_candidates— finds procedures that could becomepure.audit_implicit_interfaces— flags call sites that lack explicit interfaces.suggest_refactoring/suggest_refactoring_file— recommends idiomatic restructurings.suggest_design_pattern— serves architectural blueprints and code templates: OOP (classes, inheritance, polymorphism, deferred bindings), Generics (interface overloading), RAII (allocatablecleanup), Callbacks (Strategy via abstract interfaces / procedure pointers), and C-Interop (iso_c_binding).
Understand a codebase
project_metrics— per-file and aggregate modernization scores and legacy-feature counts.dependency_graph— moduleusegraph with fan-in/fan-out, keystone modules, and mutable-global-state detection.find_large_units— oversized procedures/modules ranked by length, nesting, andselect casearity.
Scaffold & interoperate
scaffold_unit_test/scaffold_hpc_grid— unit-test and HPC grid boilerplate.generate_c_bindings/generate_python_interface—iso_c_bindingC bindings and Python (ctypes/numpy) interfaces.
📂 Project Structure
fortran-mcp/
├── pyproject.toml # Python project configuration & dependencies
├── README.md # Project overview & documentation
├── session_handoff.md # Context handoff for AI agents
├── docs/
│ └── FEATURE_IDEAS.md # Prioritized backlog from large-codebase field use
├── src/
│ └── fortran_mcp/
│ ├── __init__.py
│ ├── linter.py # Custom Fortran linter engine
│ ├── design_patterns.md # Design-pattern blueprints served by the server
│ └── server.py # FastMCP tool definitions and entrypoint
├── test/ # Demonstration and verification test suite
│ ├── unformatted_legacy.f90 # Non-compliant Fortran demonstration file
│ ├── modern_compliant.f90 # Formatted, best-practice compliant Fortran file
│ ├── run_benchmarks.py # Regression & benchmark harness (run in CI)
│ ├── illustrate_mcp_tools.py # Python script orchestrating the MCP tool calls
│ └── README.md # Test runner documentation
└── dist/ # Packaged python distributions (tar/wheel)⚙️ Setup & Connection
This server uses the standard Python MCP SDK (fastmcp) and requires Python 3.14+ (or 3.10+ compatible environments) with uv or pip.
1. Add to Antigravity CLI
Add the server configuration to your local Antigravity config file at ~/.gemini/antigravity-cli/mcp_config.json:
{
"mcpServers": {
"fortran-companion": {
"command": "uv",
"args": [
"--directory",
"/path/to/fortran-mcp",
"run",
"fortran-mcp"
]
}
}
}2. Add to Claude Desktop
To use this with Claude Desktop, insert the block below into your claude_desktop_config.json (typically under ~/Library/Application Support/Claude/ on macOS or %APPDATA%/Claude/ on Windows):
{
"mcpServers": {
"fortran-companion": {
"command": "uv",
"args": [
"--directory",
"/path/to/fortran-mcp",
"run",
"fortran-mcp"
]
}
}
}🚀 How to Test
Start a new conversation session with any MCP-capable host (like Claude or Antigravity) in this workspace. Try prompts like:
"Design a modules-based modern Fortran project that integrates a user-defined function using midpoint integration. Make sure you use modern intents, explicit kinds, and test it."
The agent will use the MCP tools to bootstrap the structure, write, lint, format, and compile the code successfully, correcting its errors on the fly.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/enkiEng/fortran-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server