Skip to main content
Glama
README.md8.24 kB
# Delphi Build MCP Server A Model Context Protocol (MCP) server that enables AI coding agents like Claude Code to compile Delphi projects programmatically. ## Features - **Automatic Configuration**: Generate config from IDE build logs with multi-line parsing - **Smart Compilation**: Reads .dproj files for build settings and compiler flags - **Filtered Output**: Returns only errors, filters out warnings and hints - **Multi-Language Support**: Parses both English and German compiler output - **Response File Support**: Handles command lines >8000 characters automatically - **Multi-Platform**: Supports Win32 and Win64 compilation - **80+ Library Paths**: Successfully handles projects with extensive dependencies - **Environment Variables**: Auto-expands `${USERNAME}` in paths - **MCP Compatible**: Works with Claude Code, Cline, and other MCP clients ## Quick Start ### 1. Install ```bash # Install UV if you haven't already # Windows: powershell -c "irm https://astral.sh/uv/install.ps1 | iex" # macOS/Linux: curl -LsSf https://astral.sh/uv/install.sh | sh # Or: pip install uv cd delphi-build-mcp-server uv sync ``` ### 2. Generate Configuration In Delphi IDE: 1. Tools -> Options -> Building -> Show compiler progress -> "Verbose" 2. Build your project 3. View -> Messages -> Right-click -> Copy All 4. Save to `build.log` Then generate config: ```bash uv run python -m src.config_generator build.log ``` Or use the Python API: ```python from src.config_generator import ConfigGenerator from pathlib import Path generator = ConfigGenerator() result = generator.generate_from_build_log( build_log_path=Path("build.log"), output_path=Path("delphi_config.toml") ) print(result.message) ``` ### 3. Configure Claude Code Edit `%APPDATA%\Claude\claude_desktop_config.json`: **Using UV (Recommended):** ```json { "mcpServers": { "delphi-build": { "command": "uv", "args": [ "run", "--directory", "X:\\path\\to\\delphi-build-mcp-server", "python", "main.py" ], "env": { "DELPHI_CONFIG": "X:\\path\\to\\delphi_config.toml" } } } } ``` **Or use direct Python path:** ```json { "mcpServers": { "delphi-build": { "command": "X:\\path\\to\\delphi-build-mcp-server\\.venv\\Scripts\\python.exe", "args": ["X:\\path\\to\\delphi-build-mcp-server\\main.py"], "env": { "DELPHI_CONFIG": "X:\\path\\to\\delphi_config.toml" } } } } ``` ### 4. Use in Claude Code ``` Please compile my Delphi project at X:\MyProject\MyApp.dproj ``` ## Tools ### `compile_delphi_project` Compile a Delphi project and return parsed results. **Parameters:** - `project_path` (required): Path to .dpr or .dproj file - `force_build_all`: Force rebuild all units - `override_config`: Override build config (Debug/Release) - `override_platform`: Override platform (Win32/Win64) - `additional_search_paths`: Extra search paths - `additional_flags`: Additional compiler flags **Returns:** - `success`: Whether compilation succeeded - `errors`: List of compilation errors (warnings/hints filtered) - `compilation_time_seconds`: Time taken - `output_executable`: Path to compiled EXE - `statistics`: Compilation statistics ### `generate_config_from_build_log` Generate `delphi_config.toml` from an IDE build log. **Parameters:** - `build_log_path` (required): Path to build log file - `output_config_path`: Output file path (default: delphi_config.toml) - `use_env_vars`: Replace paths with ${USERNAME} (default: true) **Returns:** - `success`: Whether generation succeeded - `config_file_path`: Path to generated config - `statistics`: Paths found and processed - `detected_info`: Delphi version, platform, build config ## Documentation - **[QUICKSTART.md](QUICKSTART.md)** - 5-minute setup guide - **[DOCUMENTATION.md](DOCUMENTATION.md)** - Complete reference - **[PRD.md](PRD.md)** - Product requirements and specifications ## Project Structure ``` delphi-build-mcp-server/ ├── main.py # MCP server entry point ├── src/ │ ├── models.py # Pydantic data models │ ├── buildlog_parser.py # Parse IDE build logs │ ├── dproj_parser.py # Parse .dproj files │ ├── config.py # Load TOML configuration │ ├── output_parser.py # Parse compiler output │ ├── config_generator.py # Generate TOML configs │ └── compiler.py # Compiler orchestration ├── delphi_config.toml.template # Configuration template ├── pyproject.toml # Python project config ├── QUICKSTART.md # Quick start guide ├── DOCUMENTATION.md # Complete documentation └── PRD.md # Product requirements ``` ## Requirements - Python 3.10+ - Delphi 11, 12, or 13 - MCP-compatible client (Claude Code, Cline, etc.) ## How It Works **Note:** The server automatically handles response files for projects with 80+ library paths (command lines >8000 chars) and parses both English and German compiler output. ``` 1. AI Agent calls compile_delphi_project | v 2. MCP Server loads delphi_config.toml - Delphi installation paths - Library search paths | v 3. Parse .dproj file - Active configuration (Debug/Release) - Compiler flags and defines - Project-specific search paths | v 4. Build compiler command - Merge config file + .dproj settings - Add search paths, namespaces, aliases | v 5. Execute dcc32.exe/dcc64.exe | v 6. Parse output - Extract errors (E####, F####) - Filter warnings (W####) and hints (H####) | v 7. Return structured result to AI ``` ## Example Usage ### Compile a Project ```python from src.compiler import DelphiCompiler from pathlib import Path compiler = DelphiCompiler() result = compiler.compile_project( project_path=Path("X:/MyProject/MyApp.dproj") ) if result.success: print(f"Compilation successful: {result.output_executable}") else: print(f"Compilation failed with {len(result.errors)} errors:") for error in result.errors: print(f" {error.file}({error.line},{error.column}): {error.message}") ``` ### Generate Config from Build Log ```python from src.config_generator import ConfigGenerator from pathlib import Path generator = ConfigGenerator(use_env_vars=True) result = generator.generate_from_build_log( build_log_path=Path("build.log"), output_path=Path("delphi_config.toml") ) print(f"{result.message}") print(f" Detected: Delphi {result.detected_info.delphi_version}") print(f" Platform: {result.detected_info.platform}") print(f" Paths found: {result.statistics['unique_paths']}") ``` ## Troubleshooting ### "Configuration file not found" Generate it from a build log: ```bash uv run python -m src.config_generator build.log ``` ### "Unit not found" Regenerate config from a fresh IDE build log that includes all dependencies. ### "Compiler not found" Verify `delphi.root_path` in `delphi_config.toml` points to your Delphi installation. ## Development ### Install Development Dependencies ```bash uv pip install -e ".[dev]" ``` ### Run Tests ```bash uv run pytest ``` ### Test Sample Projects Two sample projects are included for testing: ```bash # Test successful compilation uv run python test_compile_samples.py ``` - **sample/working/Working.dproj** - Compiles successfully - **sample/broken/Broken.dproj** - Intentionally has errors for testing error parsing ### Code Formatting ```bash uv run black src/ uv run ruff check src/ ``` ## Contributing Contributions are welcome! Please see CONTRIBUTING.md for guidelines. ## License MIT License - see LICENSE file for details. ## Support - **Documentation**: [DOCUMENTATION.md](DOCUMENTATION.md) - **Quick Start**: [QUICKSTART.md](QUICKSTART.md) - **Issues**: https://github.com/your-org/delphi-build-mcp-server/issues ## Acknowledgments - Built with [Model Context Protocol](https://modelcontextprotocol.io) - Designed for [Claude Code](https://claude.com/claude-code) - Supports [Embarcadero Delphi](https://www.embarcadero.com/products/delphi)

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/Basti-Fantasti/delphi-build-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server