abl-mcp-server
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., "@abl-mcp-serveranalyze dependencies in my 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.
abl-mcp-server
MCP (Model Context Protocol) server for OpenEdge ABL — pluggable tool architecture with per-project YAML configuration. Provides AI assistants with 24 tools to parse, analyze, lint, document, and scaffold ABL projects.
Built on:
@breakit/abl-mcp-core— ABL parsing, analysis, linting@breakit/abl-mcp-generators— Code scaffolding with REST annotations, ProDataSets, OpenEdge class hierarchy@breakit/abl-mcp-contracts— Data contract generators (.i, JSON Schema, TypeScript)@breakit/abl-mcp-doc— ABLDoc parsing, doc comment generation, HTML documentation
Quick Start
npx github:breakit/abl-mcp-serverOr add to opencode config:
"abl": {
"type": "local",
"command": ["npx", "-y", "github:breakit/abl-mcp-server"],
"enabled": true
}Related MCP server: CodeGraphMCPServer
Pluggable Architecture
Each tool is a separate module in src/tools/. Tools are auto-discovered at startup and can be enabled/disabled via a per-project YAML config file.
Per-Project Config (./abl-mcp-server.yaml)
Place this in your ABL project root:
tools:
enabled:
- read-abl-file
- query-abl-symbols
- analyze-dependencies
- gen-doc-comment
- gen-abldoc
- gen-ablunit-test
- abl-lint
# ... add any tools you need
disabled:
- check-project-configAll tools are enabled by default. Add names to disabled to turn them off, or set enabled to a specific subset.
Adding Custom Tools
Drop a .ts file into ~/.config/abl-mcp-server/tools/:
import type { ToolModule } from '@breakit/abl-mcp-server/types'
export default {
name: 'my-custom-tool',
description: 'Does something custom',
inputSchema: { type: 'object', properties: { input: { type: 'string' } }, required: ['input'] },
handler: async ({ input }) => {
return { content: [{ type: 'text', text: `Got: ${input}` }] }
},
} satisfies ToolModuleAdd my-custom-tool to your abl-mcp-server.yaml enabled list.
Tools (24 total, 13 enabled by default)
All 24 tools are available but only a curated subset is enabled by default. Enable additional tools via abl-mcp-server.yaml (see Pluggable Architecture above).
Default-enabled
Analytical
Tool | Description |
| Parse an ABL file — list class info, methods, constructors, functions, includes, using statements, preprocessor defines |
| List all symbols (class, methods, constructors, functions) in a file |
| Parse a |
| Resolve |
| List all |
| Build a full dependency graph — includes, calls, cycles, orphans |
| Compare two |
| Find unused functions, includes, and preprocessor defines |
| Find TODO, FIXME, HACK, XXX, NOTE and similar marker comments |
| Lint ABL files for coding conventions (37 rules defined in config.yaml) |
Generative
Tool | Description |
| Generate a formatted ABLDoc ( |
| Generate HTML documentation from existing ABLDoc comments in a project (powered by |
| Generate ABLUnit test class extending |
Available (disabled by default)
Tool | Category | Description |
| Analytical | Read |
| Generative | Generate BE |
| Generative | Generate a workflow |
| Generative | Generate a standalone Business Task |
| Generative | Generate the full CCS stack (BE + Service + Controller) |
| Generative | Generate OpenAPI 3.0 spec from |
| Generative | Scaffold a new ABL project with directory structure and |
| Data Contract | Generate temp-table include ( |
| Data Contract | Generate ProDataSet include ( |
| Data Contract | Generate JSON Schema from table/field definition |
| Data Contract | Generate TypeScript interface from table/field definition |
Lint Rules
All 37 rules are defined in config.yaml (shipped with the server). They are inspired by Prolint. To see all active rules: call abl-lint with listRules: true.
Customize rules via your project's abl-mcp-server.yaml:
lint:
rules:
# Override severity of an existing rule
no-undo:
pattern: '^DEFINE (?:VARIABLE|VAR) +\w+ (?:AS \w+ )?(?!.*NO-UNDO)'
message: 'DEFINE VARIABLE should include NO-UNDO'
severity: warning
# Add a custom rule
my-naming-convention:
pattern: '^\s*PROCEDURE\s+[a-z\d]'
message: 'Procedure names should start with uppercase'
severity: warning
# Disable a rule by not including it in enabled (see tools.disabled pattern)Group | Rules |
No-undo / Lock |
|
Deprecations |
|
Shell / Security |
|
Find / Performance |
|
Style / Convention |
|
Strings / i18n |
|
Potential bugs |
|
Cross-platform |
|
Misc |
|
Naming |
|
Test Generator Skill
The gen-ablunit-test tool generates skeleton ABLUnit test files. For fully filled test files with realistic assertions and data, an opencode skill is available:
Skill:
llm-fill-ablunit-testWorkflow: parse source class → generate skeleton → LLM-fills test data + assertions → write completed file
Requires: opencode with the
llm-fill-ablunit-testskill enabled
To install, add to your .opencode/skills/ directory and reference it in your opencode config.
Architecture
abl-mcp-server
├── config.yaml # Default tool enable/disable + 37 lint rules
├── src/
│ ├── index.ts # Bootstrap: auto-discovers tools, registers MCP handlers
│ ├── config-loader.ts # Load + parse per-project YAML config (+ project overlay)
│ ├── types.ts # ToolModule interface + config types
│ └── tools/ # 24 pluggable tool modules (auto-discovered)
│ ├── read-abl-file.ts
│ ├── analyze-dependencies.ts
│ ├── abl-lint.ts
│ ├── find-annotations.ts
│ ├── gen-business-entity.ts
│ ├── gen-workflow.ts
│ ├── gen-business-task.ts
│ ├── gen-doc-comment.ts
│ ├── gen-abldoc.ts
│ ├── gen-contract-*.ts
│ └── ...
├── @breakit/abl-mcp-core # Pure analysis layer — parsers, analysis, linting
├── @breakit/abl-mcp-generators # Scaffolding templates — BE, Service, Controller, Workflow
├── @breakit/abl-mcp-contracts # Data contract generators — .i, JSON Schema, TypeScript
└── @breakit/abl-mcp-doc # Documentation utilities — ABLDoc parser + comment generatorInstallation
The server is distributed as a GitHub package (not published to npm). Install directly from the repo:
# npm
npm install github:breakit/abl-mcp-server
# pnpm
pnpm add github:breakit/abl-mcp-server
# yarn
yarn add github:breakit/abl-mcp-serverOne-shot usage (no install)
npx github:breakit/abl-mcp-serverAs an MCP server dependency
Add to your project's package.json:
"dependencies": {
"@breakit/abl-mcp-server": "github:breakit/abl-mcp-server"
}Then import in your MCP host:
import { createServer } from '@breakit/abl-mcp-server'Development
git clone https://github.com/breakit/abl-mcp-server.git
cd abl-mcp-server
yarn install
yarn build
yarn startLocal Multi-Repo Development
If you are working on the sibling repos in ../abl-mcp-core, ../abl-mcp-contracts, ../abl-mcp-doc, and ../abl-mcp-generators, bootstrap them with Yarn and symlink them into this repo:
yarn setup:localThat command:
runs
yarn installin each sibling repobuilds each sibling repo so their
dist/entrypoints existsymlinks them into this repo's
node_modules/@breakit/includes
@breakit/abl-mcp-docin the local sibling package graphlinks
../abl-mcp-coreinto../abl-mcp-generators/node_modules/@breakit/for local runtime resolution
When you change sibling repo code, rerun:
yarn build:local-deps
yarn link:local-depsAcknowledgments
Lint rules inspired by Prolint by Jurjen Dijkstra and contributors
ABL parsing via tree-sitter-abl
Language server concepts from abl-language-server
Naming conventions derived from Progress ABL community standards
License
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityDmaintenanceMCP server for comprehensive code analysis, navigation, and quality assessment across 25+ programming languages.Last updated88MIT
- Alicense-qualityCmaintenanceA lightweight, zero-configuration MCP server for source code analysis with GraphRAG capabilities, enabling structural understanding and efficient code completion from MCP-compatible AI tools.Last updated12MIT
- Alicense-qualityCmaintenanceUniversal MCP server that analyzes any codebase and provides structured context to AI assistants. Dynamic, accurate, and token-efficient.Last updated12MIT
- Alicense-qualityDmaintenanceMCP server providing 29 tools across 5 layers for semantic TypeScript/JavaScript code intelligence, enabling AI agents to find references, trace impacts, guard APIs, and explain errors without text-search false positives.Last updated191MIT
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Package intelligence MCP for AI agents — 22 tools, 19 ecosystems, AGPL SDK, free.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/breakit/abl-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server