Skip to main content
Glama
SShadowS

AL Object ID Ninja MCP Server

by SShadowS

AL Object ID Ninja MCP Server

MCP (Model Context Protocol) server for AL Object ID management in Microsoft Dynamics 365 Business Central development.

πŸš€ Quick Start

Add to Claude Code with one command:

# Standard mode (8 tools) - Recommended for teams
claude mcp add objid @sshadows/objid-mcp --env MCP_MODE=standard

# Lite mode (4 tools) - For individual developers
claude mcp add objid @sshadows/objid-mcp --env MCP_MODE=lite

That's it! The server will be available in Claude Code immediately.

Related MCP server: bcdocker

πŸ“ Manual MCP Configuration

If you prefer to configure manually, add to your MCP settings JSON:

{
  "mcpServers": {
    "objid": {
      "command": "npx",
      "args": ["-y", "@sshadows/objid-mcp"],
      "env": {
        "MCP_MODE": "standard"
      }
    }
  }
}

Lite Mode

{
  "mcpServers": {
    "objid": {
      "command": "npx",
      "args": ["-y", "@sshadows/objid-mcp"],
      "env": {
        "MCP_MODE": "lite"
      }
    }
  }
}

Custom Backend

{
  "mcpServers": {
    "objid": {
      "command": "npx",
      "args": ["-y", "@sshadows/objid-mcp"],
      "env": {
        "MCP_MODE": "standard",
        "BACKEND_URL": "https://your-backend.azurewebsites.net",
        "BACKEND_API_KEY": "your-api-key",
        "LOG_LEVEL": "info"
      }
    }
  }
}

πŸ› οΈ Available Tools

LITE Mode (4 tools)

  • authorization - Manage app authorization with backend

  • config - Read and write .objidconfig files

  • allocate_id - Allocate object IDs for AL objects

  • analyze_workspace - Analyze workspace structure and apps

STANDARD Mode (8 tools - includes all LITE tools plus)

  • pool - Manage app pools for team collaboration

  • consumption - Get consumption reports and statistics

  • sync - Synchronize object IDs with backend

  • log - Retrieve activity logs and audit trail

πŸ“‹ Tool Details

Core Tools (LITE Mode)

authorization

Manage app authorization with the AL Object ID Ninja backend:

  • Check authorization status

  • Authorize apps with backend

  • Manage authorization keys

config

Configuration file management:

  • Read .objidconfig files

  • Write configuration changes

  • Manage AL object ID ranges

allocate_id

Object ID allocation:

  • Get next available object ID

  • Support for all AL object types

  • Range-aware allocation

analyze_workspace

Workspace analysis:

  • Scan for AL apps

  • Detect configurations

  • Analyze project structure

Team Collaboration Tools (STANDARD Mode)

pool

App pool management for teams:

  • Create app pools

  • Join existing pools

  • Leave pools

  • Get pool information

consumption

Usage tracking and reporting:

  • Get detailed consumption statistics

  • Track ID usage over time

  • Generate usage reports

sync

Backend synchronization:

  • Sync object IDs with backend

  • Check synchronization status

  • Force synchronization

log

Activity logging and audit:

  • Retrieve activity logs

  • Filter by event type, user, or date

  • Audit trail for compliance

πŸ”§ Configuration Options

Environment Variables

Variable

Description

Default

MCP_MODE

Server mode: lite or standard

lite

BACKEND_URL

Custom backend URL

https://vjekocom-alext-weu.azurewebsites.net

BACKEND_API_KEY

API key for custom backend

None (not required for default backend)

LOG_LEVEL

Logging level: error, warn, info, debug

info

CACHE_ENABLED

Enable response caching

true

CACHE_TTL

Cache time-to-live in milliseconds

300000 (5 minutes)

πŸ“¦ About

The AL Object ID Ninja MCP Server provides intelligent object ID management for Business Central AL development. It integrates with the AL Object ID Ninja backend to prevent ID collisions, track usage, and enable team collaboration.

Features

  • Collision Prevention - Automatic ID conflict detection

  • Team Collaboration - Shared ID pools for teams

  • Usage Tracking - Comprehensive consumption reports

  • Git Integration - Automatic app identification via Git

  • Zero Configuration - Works out-of-the-box with default backend


Development

Building from Source

# Clone repository
git clone https://github.com/SShadowS/objid-mcp.git
cd objid-mcp/mcp-server

# Install dependencies
npm install

# Build
npm run build

# Run tests
npm test

Testing

npm test                    # Run test suite
npm run test:e2e           # Run E2E tests
npm run typecheck          # TypeScript type checking
npm run lint               # ESLint
npm run prerelease         # Full release check

Project Structure

mcp-server/
β”œβ”€β”€ src/v2/
β”‚   β”œβ”€β”€ server.ts          # Main entry point
β”‚   β”œβ”€β”€ tools/             # Tool implementations
β”‚   β”‚   β”œβ”€β”€ lite/          # LITE mode tools
β”‚   β”‚   └── standard/      # STANDARD mode tools
β”‚   └── lib/               # Core libraries
β”œβ”€β”€ tests/v2/              # Test suites
└── dist/v2/               # Compiled output

Contributing

Contributions are welcome! Please open issues or pull requests for bugs, features, or improvements.

License

MIT

Author

Based on the original AL Object ID Ninja by Vjekoslav Babić

Available Tools

4 tools
allocate_idA

Preview, reserve, or reclaim object IDs for AL development. REQUIRES mode ("preview"|"reserve"|"reclaim"), appPath: absolute path to the workspace directory containing app.json and .objidconfig - NOT a file path. Example (OK): "C:\Projects\MyALApp" or "/home/user/MyALApp". Example (NOT OK): "path/to/app.json". REQUIRES object_type (AL object type string). Optional: count (number, default: 1), pool_id (string), preferred_range ({from:number, to:number}), object_metadata ({name?:string, file?:string, tag?:string}), ids (number[], reclaim mode only), dry_run (boolean, default: false), auto_track (boolean, reserve mode only, default: true - automatically stores assignments after reservation).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavior. It describes three modes (preview, reserve, reclaim) and notes auto_track behavior for reserve mode. It does not mention destructive actions, rate limits, or authorization needs, but the description is detailed enough for an agent to understand core behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured, front-loading the main purpose and mode, followed by parameter details and examples. While somewhat long (200+ words), every sentence adds value. Minor redundancy in path examples could be trimmed, but overall it is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description explains the parameters and modes thoroughly, but it does not mention what the tool returns (e.g., allocated IDs or status). Since there is no output schema, this gap reduces completeness. The description is sufficient for invocation but lacks outcome details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero properties, so the description provides all parameter meaning and constraints. It explains each required and optional parameter with types, default values, and examples. This adds essential semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Preview, reserve, or reclaim object IDs for AL development.' It uses a specific verb and resource, and it is distinct from sibling tools (analyze_workspace, authorization, config) which cover different operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear required parameters (mode, appPath, object_type) and gives example paths. It implicitly indicates when to use the tool (when managing object IDs), but does not explicitly state alternatives or when not to use it. However, given the distinct sibling tools, this is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

analyze_workspaceA

Analyze AL workspace for object ID consumption, collisions, and pool mapping. REQUIRES appPath: absolute path to the workspace directory containing app.json and .objidconfig - NOT a file path. Example (OK): "C:\Projects\MyALApp" or "/home/user/MyALApp". Example (NOT OK): "path/to/app.json" or "path/to/file.app". Optional: include (string[], default: ["/*.al"]), exclude (string[], default: ["/.alpackages/", "/.snapshots/**"]), object_types (string[]), return_level ("summary"|"detailed", default: "summary"), detect_collisions (boolean, default: true), map_to_pools (boolean, default: false).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It mentions the tool 'analyzes' but does not explicitly state whether it is read-only, destructive, or requires special permissions. It does not disclose any side effects or error conditions. This is minimal disclosure for a tool with potential file system access.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is somewhat verbose, including examples and default values inline. It is structured with a clear opening purpose, then REQUIRES, then optional parameters. However, it could be more concise by separating parameter details into a bulleted list. Still, it is functional.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers parameters comprehensively but does not explain return values (no output schema). It also does not reference sibling tools for context. Given the complexity (multiple parameters, workspace path required), it is complete for usage but incomplete for understanding outputs or potential interactions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema is empty ('properties': {}), meaning the description provides all parameter semantics. It defines appPath, include, exclude, object_types, return_level, detect_collisions, and map_to_pools with types, defaults, and examples. This adds significant value beyond the schema, compensating for the lack of schema info.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool analyzes AL workspace for object ID consumption, collisions, and pool mapping. It specifies the resource (workspace) and actions (analyze, detect collisions, map pools). The sibling tools (allocate_id, authorization, config) suggest distinct purposes, and this description differentiates well.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides usage guidance for parameters, including a REQUIRED appPath with examples and defaults for optional parameters. However, it does not explicitly state when to use this tool versus alternatives (e.g., allocate_id) or when not to use it. The guidance is adequate but lacks exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

authorizationC

Manage app authorization for Object ID synchronization. REQUIRES action ("status"|"start"|"deauthorize"), appPath: absolute path to the workspace directory containing app.json and .objidconfig - NOT a file path. Example (OK): "C:\Projects\MyALApp" or "/home/user/MyALApp". Example (NOT OK): "path/to/app.json". Optional: interactive (boolean, default: true).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It mentions required parameters and gives appPath formatting examples, but does not disclose side effects, authorization state changes, or potential errors. Incomplete for a management tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is relatively concise with examples and formatting. Every sentence adds information, though the contradiction with schema costs a point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, no annotations, and schema empty. Description tries to fill gaps but misses return behavior, prerequisites, and error conditions. Incomplete for a tool requiring multiple inputs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Description details parameters (action, appPath, interactive) that the input schema does not include (empty schema). Schema coverage is 100% empty, so description adds meaning but contradicts the schema, creating confusion.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it manages app authorization for OID sync, listing specific actions. Distinguishes from sibling tools (allocate_id, analyze_workspace, config) by focusing on authorization.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Lists required inputs (action, appPath) but provides no when-to-use guidance or alternatives. Sibling tools suggest authorization is a distinct operation, but no explicit usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

configA

Read, write, and validate .objidconfig configuration files. REQUIRES action ("read"|"write"|"validate"), appPath: absolute path to the workspace directory containing app.json and .objidconfig - NOT a file path. Example (OK): "C:\Projects\MyALApp" or "/home/user/MyALApp". Example (NOT OK): "path/to/.objidconfig". Optional: keys (string[], read only), patch (object, write only), merge (boolean, write only, default: true), schema_version (string).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full burden. It discloses the three possible actions (read, write, validate) and outlines parameter constraints (e.g., appPath must be a workspace directory, not a file). It does not cover error conditions or side effects, but the disclosed behavior is adequate for a configuration tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no extraneous information. The first sentence states the purpose, the second details parameters. It uses capitalization and examples for clarity. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations and output schema, the description covers the tool's purpose, required/optional parameters, and constraints. It does not describe return values or error handling, but for a config tool with clear actions, this is reasonably complete. Slightly more detail on outputs would improve it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema is empty, so the description provides all parameter documentation. It enumerates parameters (action, appPath, keys, patch, merge, schema_version) with types, constraints, and examples. This fully compensates for the missing schema and adds significant meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Read, write, and validate .objidconfig configuration files.' This is a specific verb+resource combination. The sibling tools (allocate_id, analyze_workspace, authorization) deal with unrelated tasks, so this tool is well-differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly lists required parameters (action, appPath) with examples and constraints, and optional parameters with restrictions (read-only/write-only). It does not explicitly state when to use this tool versus alternatives, but the context of .objidconfig files is unique enough to imply usage. No exclusions are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 4 tool updatesv2.2.0
    • First observedallocate_id
    • First observedanalyze_workspace
    • First observedauthorization
    • First observedconfig

TDQS

A3.7/5.0
Disambiguation5/5

Each tool serves a completely distinct function: allocation, analysis, authorization, and configuration. There is no functional overlap or ambiguity between them.

Naming Consistency3/5

Two tools follow a verb_noun pattern (allocate_id, analyze_workspace), while authorization and config are single nouns, creating inconsistency. All use snake_case, but the grammatical pattern is mixed.

Tool Count5/5

With 4 tools covering the core operations for AL object ID management, the number is well-scoped and appropriate for the server's narrow domain.

Completeness4/5

The tool set covers the essential workflows: allocation, workspace analysis, authorization, and configuration. A minor gap is the lack of a dedicated status or pool listing tool, but the analysis tool partially fills this.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    An MCP server for Microsoft Dynamics 365 Finance & Operations that enables the creation, modification, and analysis of D365 objects like classes, tables, and forms. It integrates with Visual Studio 2022 to provide tools for X++ code extraction, codebase search, and safe object deletion with dependency validation.
    -
  • A
    license
    A
    quality
    C
    maintenance
    MCP server for managing Business Central Docker containers, enabling AI assistants to list, create, test, and manage BC sandboxes via natural language.
    15
    16
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server for Microsoft Dynamics 365 Finance & Operations development, enabling object creation, modification, deletion, and analysis through the MCP standard.
    MIT

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/SShadowS/al-objid-mcp-server'

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