koble-mcp
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| EBMS_SANDBOX | No | Optional company ID to restrict writes to only that company (for testing). | |
| EBMS_LOG_FILE | No | Optional path to a log file for request logs. | |
| EBMS_PASSWORD | Yes | The EBMS password. | |
| EBMS_USERNAME | Yes | The EBMS username. | |
| EBMS_COMPANIES | No | Optional comma-separated list of company IDs to narrow access (default: all companies the serial reaches). | |
| KOBLE_OUTPUT_DIR | No | Directory for MRP worksheets. Defaults to Documents/Koble MRP. | |
| EBMS_COF_PASSWORD | No | Optional per-company password. | |
| EBMS_COF_USERNAME | No | Optional per-company username. | |
| EBMS_SERIAL_NUMBER | Yes | The EBMS serial number. | |
| EBMS_ALLOWED_COMMANDS | No | Comma-separated list of allowed commands. Default: MarkAllAsShipped,RecalculateAllPrices,CalculateFreight,ChangeCustomer. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| ebms_companiesA | List the companies (datasets) this server can reach on its EBMS serial number, with name, ID, version and whether writes are allowed. Needs no credentials. Call it when the user names a company you haven't seen, or before the first write of a session, so the company is confirmed by name. Nothing marks a company as live or a test copy; ask if unsure. |
| ebms_getA | Read from EBMS OData: a collection (path 'ARINV') or one record (path "ARINV('')"). Always pass select — an unselected read returns every field, many computed, and large ones hit the 2-minute limit. For a collection, count is on by default and the result says whether rows were truncated. Query syntax and the install's quirks are in the ebms-api skill. |
| ebms_writeA | Write to EBMS: POST creates a record (documents take their lines nested as Details), PATCH updates one by quoted AUTOID (lines via a Details@delta array), DELETE removes one. Refused for a company that is not configured (or not the sandbox, while testing), and refused if the body carries PROCESS anywhere or a POST's EXTERNALID already exists. A 2xx is not proof — EBMS silently ignores unknown @ids and unwritable fields — so the server reads back the fields you sent and returns a verification: ok, mismatches (sent vs stored), problems (a row that never appeared or was not removed), notes (rows EBMS added itself) and the stored rows. Treat ok:false as a partly failed write and tell the user. If the result says uncertain, read back before resending — a resent create or add duplicates. |
| ebms_commandA | Run a bound action on one record: POST /ENTITY('')/Model.Entities.. Omit body for a command with no dialog (MarkAllAsShipped, RecalculateAllPrices) — EBMS rejects even {}. Pass the dialog's fields for one that has a dialog (ChangeCustomer). Refused for a company that is not configured (or not the sandbox, while testing), and for any action that is not on the server's short allow-list — nothing that posts, processes, pays or sends. Commands return little; read the record back afterwards. |
| mrp_planA | Material requirements plan for one company, read-only: nets open sales and job demand, open manufacturing batches and open purchase orders against stock, day by day, through the bill of materials, and returns what to buy and make, by when, and why. ALWAYS ask the user two things first and never assume either: the time frame (through, or days) — 'buy and make what is needed to cover everything due by this date' — and the scope: everything, particular vendors, or particular products. EBMS does not publish vendor lead times, so orders carry a needed-by date; pass leadTimeDays only if the user gives one. Only stocked products and stocked lines are planned; drop-ship, associated and sync lines belong to their own orders. The planner's worksheet comes back attached as CSV: give it to the user as a file in the conversation, unchanged. |
| mrp_item_viewA | The total view of one finished good, read-only: everything needed to build a quantity of it, down every level of its bill of materials, against what is available (on hand + incoming − on order). Stock of a sub-assembly covers its branch before anything is exploded further, and a part used in two branches is only counted once. Returns an indented tree, what to make, what to buy, and canBuildWithoutBuying: true when every purchased part is available, even if sub-assemblies still have to be made from them. |
| po_from_csvA | Turn an approved MRP worksheet into purchase-order drafts, read-only. Reads the CSV mrp_plan produced, after the planner set Approve to Y on BUY rows (and perhaps changed Order Qty or Vendor); checks every vendor and product against EBMS; and returns one draft per vendor with the exact body to POST to APINV with ebms_write. It creates nothing. A worksheet handed in twice cannot order twice: ebms_write refuses the duplicate EXTERNALID. Show the drafts and get a clear yes per purchase order before writing. |
| batches_from_csvA | Turn approved MAKE rows of an MRP worksheet into manufacturing-batch drafts, read-only. For each it checks EBMS will accept the product as a finished good (it must be classified Track Count), lists every component from the bill of materials with its quantity per one finished good (EBMS does NOT add consumed materials itself when a batch arrives through the API), picks the warehouse (the one given, else where the product was last made), and returns the exact body to POST to INMFG with ebms_write. It creates nothing. Drafts mark nothing as made or consumed and never carry PROCESS: finishing and processing a batch is done by a person in EBMS. Show each draft and get a clear yes before writing it. |
| ebms_guideA | The procedures for working with EBMS through this server: how to build and change sales orders and purchase orders, receive stock, manage products and tasks, and run MRP. Call it before any task beyond a single read, unless the matching skill is already loaded in this app. With no arguments it lists the skills; with skill it returns that skill; with file it returns one of the skill's reference files. Read-only. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| mrp-plan | Plan purchasing and production for a time frame, and get a worksheet to approve. |
| mrp-purchase-orders | Turn the BUY rows approved on an MRP worksheet into purchase orders, one confirmed at a time. |
| mrp-batches | Turn the MAKE rows approved on an MRP worksheet into manufacturing batches. |
| sales-order | Enter a new sales order, or change or ship an existing one. |
| purchase-order | Raise a purchase order for a vendor, or change an existing one. |
| receive | Record what arrived against a purchase order. |
| on-order | Show open purchase orders, for everything or one vendor. |
| product | Create a product, or change one's price, cost, units or vendor records. |
| task | Raise a task or work order, assign it, move it along, book time or close it. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 9 tools
Each tool has a distinct purpose: generic EBMS reads writes and commands, company discovery, MRP planning at company or item level, CSV-to-draft conversion for purchase orders vs batches, and procedural guidance. The two CSV tools are separated by purchase orders vs manufacturing batches, and mrp_plan vs mrp_item_view differ by aggregate vs single-item scope.
The tools fall into recognizable clusters like ebms_* for API operations and mrp_*/csv workflow tools, which keeps names readable, but they mix verb-style names like ebms_get and ebms_write with noun-style names like ebms_command and mrp_plan. The naming is understandable and grouped by prefix, yet not a uniform verb_noun convention.
Nine tools is a well-scoped set for an EBMS/MRP integration server. Each tool covers a necessary part of the workflow—read, write, command, planning, CSV draft conversion, company discovery, and guidance—without redundant or filler tools.
The tool surface covers the core MRP-to-order workflow well: planning, item-level explosion, CSV draft generation, generic OData read/write, command execution, and procedural documentation. The main gap is a lack of dedicated higher-level workflow helpers beyond generic EBMS write operations, but those are workable with ebms_get and ebms_write.