AL Object ID Ninja 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., "@AL Object ID Ninja MCP Serverallocate next available object ID for table 50000"
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.
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=liteThat'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:
Standard Mode (Recommended)
{
"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 backendconfig- Read and write .objidconfig filesallocate_id- Allocate object IDs for AL objectsanalyze_workspace- Analyze workspace structure and apps
STANDARD Mode (8 tools - includes all LITE tools plus)
pool- Manage app pools for team collaborationconsumption- Get consumption reports and statisticssync- Synchronize object IDs with backendlog- 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 |
| Server mode: |
|
| Custom backend URL |
|
| API key for custom backend | None (not required for default backend) |
| Logging level: |
|
| Enable response caching |
|
| Cache time-to-live in milliseconds |
|
π¦ 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
Related Projects
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 testTesting
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 checkProject 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 outputContributing
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 toolsallocate_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).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
4 tool updates
v2.2.0- First observed
allocate_id - First observed
analyze_workspace - First observed
authorization - First observed
config
TDQS
Each tool serves a completely distinct function: allocation, analysis, authorization, and configuration. There is no functional overlap or ambiguity between them.
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.
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.
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
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
The MCP server for Azure DevOps, bringing the power of Azure DevOps directly to your agents.
MCP Server for JFrog, providing tools for development and artifact management.
A MCP server built for developers enabling Git based project management with project and personalβ¦
MCP Server for Slima - AI Writing IDE for Novel Authors with AI Beta Reader.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAn 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.-
- AlicenseAqualityCmaintenanceMCP server for managing Business Central Docker containers, enabling AI assistants to list, create, test, and manage BC sandboxes via natural language.1516MIT
- AlicenseAqualityCmaintenanceMCP server for Microsoft Dynamics 365 Business Central that enables AI assistants to query and manage Business Central data via full CRUD operations.630MIT
- AlicenseNot gradedqualityCmaintenanceAn MCP server for Microsoft Dynamics 365 Finance & Operations development, enabling object creation, modification, deletion, and analysis through the MCP standard.MIT
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/SShadowS/al-objid-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server