Files
mcp-wms-api/src/resources/entity-schemas.js
T
2026-05-20 09:38:07 +02:00

157 lines
3.3 KiB
JavaScript

/**
* Entity Schema Resources
* Provides schema information for WMS entity types
*/
function listResources() {
return [
{
uri: 'wms://entity-schemas',
name: 'Entity Schemas',
description: 'Schema information and common fields for WMS entities',
mimeType: 'text/markdown',
},
];
}
async function readResource(uri) {
let content;
switch (uri) {
case 'wms://entity-schemas':
content = getEntitySchemas();
break;
default:
throw new Error(`Unknown entity schema resource: ${uri}`);
}
return {
contents: [{
uri,
mimeType: 'text/markdown',
text: content,
}],
};
}
function getEntitySchemas() {
return `# WMS Entity Schemas
## Overview
Entity schemas define the structure and available fields for each entity type.
Use the \`get_entity_schema\` tool to retrieve the actual schema from the API by querying one entity.
## Common Field Patterns
Most WMS entities follow these patterns:
### Standard Fields
- \`Id\` - Unique identifier (GUID or integer)
- \`Code\` - Business code/reference
- \`Name\` - Display name
- \`Description\` - Detailed description
- \`Created\` - Creation timestamp
- \`Modified\` - Last modification timestamp
- \`Status\` - Entity status
### Relationship Fields
- \`{Entity}Id\` - Foreign key to related entity (e.g., ProductId, AccountId)
- \`{Entity}Code\` - Related entity code
- \`{Entity}Name\` - Related entity name
## Entity-Specific Schemas
### Products
Common fields:
- Id, Code, Name, Description
- Category, Family, SubFamily
- Weight, Volume, Height, Width, Length
- UnitOfMeasure, BaseUnit
- Barcode, AlternativeCodes
- Active, Blocked
### Containers
Common fields:
- Id, Code, Name, Type
- Status, Location, Zone
- Weight, Tare, MaxWeight
- ProductId, Quantity
- Created, Modified
### Tasks
Common fields:
- Id, Code, Type, Status
- Priority, Sequence
- SourceLocation, TargetLocation
- ProductId, Quantity
- AssignedUser, AssignedDevice
- StartedAt, CompletedAt
### Stocks
Common fields:
- ProductId, ProductCode, ProductName
- LocationId, LocationCode
- Quantity, AvailableQuantity, ReservedQuantity
- UnitOfMeasure
- LotNumber, SerialNumber
- ExpirationDate
### InboundOrders / OutboundOrders
Common fields:
- Id, Code, ExternalCode
- Type, Status, Priority
- AccountId, AccountCode, AccountName
- SupplierId, SupplierCode (inbound only)
- ExpectedDate, PlannedDate, ActualDate
- TotalLines, TotalQuantity
- Created, Modified
## Retrieving Schemas
Use the \`get_entity_schema\` tool to dynamically retrieve the schema:
\`\`\`
# Get Products schema
get_entity_schema(entity_type="Products")
# Get Tasks schema
get_entity_schema(entity_type="Tasks")
\`\`\`
This will query one entity from the API and return all available fields with sample values.
## LINQ Field Selection
You can select specific fields using LINQ expressions:
\`\`\`
# Select specific fields
query_wms_entities(
entity_type="Products",
select_expression="z => new { z.Id, z.Code, z.Name, z.Category }"
)
# Nested object creation
query_wms_entities(
entity_type="Tasks",
select_expression="z => new {
Task = z.Code,
Product = z.ProductName,
Status = z.Status
}"
)
\`\`\`
---
**Note:** Field availability may vary depending on WMS configuration and version.
`;
}
module.exports = {
listResources,
readResource,
};