Fortran Companion Server
FreeNot checkedEnables AI models to write, format, compile, lint, and structure modern Fortran code using best practices and industry design patterns.
About
Enables AI models to write, format, compile, lint, and structure modern Fortran code using best practices and industry design patterns.
README
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.
🔁 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.
Install Fortran Companion Server in Claude Desktop, Claude Code & Cursor
unyly install fortran-companion-mcp-serverInstalls into Claude Desktop, Claude Code, Cursor & VS Code — handles npx, uvx and build-from-source repos for you.
First time? Get the CLI: curl -fsSL https://unyly.org/install | sh
Or configure manually
Run in your terminal:
claude mcp add fortran-companion-mcp-server -- uvx --from git+https://github.com/enkiEng/fortran-mcp fortran-mcpFAQ
Is Fortran Companion Server MCP free?
Yes, Fortran Companion Server MCP is free — one-click install via Unyly at no cost.
Does Fortran Companion Server need an API key?
No, Fortran Companion Server runs without API keys or environment variables.
Is Fortran Companion Server hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install Fortran Companion Server in Claude Desktop, Claude Code or Cursor?
Open Fortran Companion Server on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
GitHub
PRs, issues, code search, CI status
by GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
by mcpdotdirectCompare Fortran Companion Server with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All development MCPs
