Product Catalog MCP
Click on "Deploy 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., "@Product Catalog MCPsearch for products with 'wireless' in the name"
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.
Product Catalog MCP
An Excel-backed MCP server plus a JOUST product management app.
Local MCP server
npm install
npm run init-data
npm startThe catalog is stored in data\products.xlsx. The MCP server exposes:
list_productssearch_productsadd_productupdate_productdelete_product
VS Code configuration is included in .vscode\mcp.json, and the custom agent is in
.github\agents\product-catalog.agent.md. The agent embeds the MCP server
configuration for GitHub Copilot cloud agent. Its setup workflow installs Node.js
dependencies before the agent starts.
Set PRODUCT_CATALOG_FILE to use a different workbook.
For an HTTP MCP endpoint:
npm run start:httpThe local endpoint is http://localhost:3000/mcp. Deploy this Node.js process to a
server-capable host to obtain a public MCP URL; JOUST itself hosts only static apps.
Related MCP server: ExcelReadMCP
JOUST app
The static app in web\ stores its shared data in JOUST and supports product CRUD,
search, and Excel import/export. The hosted JOUST database and local Excel workbook
are separate stores.
Available Tools
5 toolsadd_productC
Add a product to the Excel catalog.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Unique product ID | |
| sku | No | ||
| name | Yes | Unique product name | |
| price | Yes | ||
| stock | No | ||
| status | No | Active | |
| category | No | ||
| description | No | ||
| manufacturer | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing behavioral traits. It only states the action and target; it does not mention required fields, validation behavior, duplicate handling, defaults, side effects, or return values. This is minimal behavioral disclosure.
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 a single, front-loaded sentence with no fluff, but it is under-specified for a tool with 9 parameters. It is concise structurally yet lacks the detail needed to be considered well-rounded.
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 tool has 9 parameters, low schema coverage, no output schema, and no annotations, one sentence is insufficient. The description does not address required inputs, defaults, uniqueness, or what happens after the product is added, leaving significant gaps for safe invocation.
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?
Schema description coverage is only 22%, so the description must compensate by explaining parameter meaning. It does not mention id, name, price, sku, stock, status, category, description, or manufacturer, leaving most parameters effectively undocumented from the agent's perspective.
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 uses a specific verb ('Add'), identifies the resource ('a product'), and names the target context ('Excel catalog'). This clearly distinguishes it from sibling tools like list_products, search_products, update_product, and delete_product.
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?
No guidance is provided about when to choose this tool over alternatives, prerequisites, or uniqueness constraints. The verb 'Add' implies the basic use case, but the description offers no explicit when-to-use or when-not-to-use context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_productA
Delete a product selected by ID or exact name.
| Name | Required | Description | Default |
|---|---|---|---|
| identifier | Yes | Product ID or exact name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description must fully disclose behavior. It only says 'Delete a product' and provides no detail about irreversibility, permissions, error cases when no product is found, cascading effects, or return value. This is thin coverage for a destructive 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 one compact, front-loaded sentence. It communicates the operation, target, and parameter semantics with no wasted words or filler.
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?
This is a simple one-parameter destructive tool with 100% schema coverage, so the description is minimally adequate. However, no annotations or output schema are present, and the description omits outcome and failure behavior, making it not fully self-contained for an AI agent.
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 schema already documents the only parameter as 'Product ID or exact name', and the description essentially restates that fact. No additional semantic guidance is provided, such as whether name matching is case-sensitive, what takes precedence when the value could be both an ID and a name, or what happens with duplicate names.
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 commands a clear, specific operation: 'Delete a product', and identifies how the product is selected ('by ID or exact name'). This clearly distinguishes it from the CRUD sibling tools such as add_product, update_product, and list_products.
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 intent is implicit: use this when you need to delete an existing product. However, the description does not explicitly state prerequisites, when not to use it, or how it compares with alternative operations such as update_product or search_products.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_productsA
List every product in the Excel catalog.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations available, the description carries the full behavioral disclosure burden. It merely states the action and resource, but does not reveal return format, pagination behavior, or whether it is strictly read-only, leaving the agent to infer safety and data shape.
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 exactly one sentence, front-loaded with the action verb, and contains no extraneous information. Every word 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?
For a zero-parameter listing tool, the description roughly specifies what is listed and the broader context ('the Excel catalog'). However, with no output schema and no mention of returned fields or record shape, the description is barely adequate for fully setting expectations about the tool's result.
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 tool has zero parameters and schema description coverage is 100%, so the schema already carries all parameter information. The description adds no parameter-specific value, which is acceptable given the baseline of 4 for no-parameter tools.
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 uses the specific verb 'List' with the resource 'every product in the Excel catalog,' clearly defining an exhaustive listing operation. It differentiates from sibling search_products by emphasizing completeness ('every product') without any filtering.
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?
No guidance is provided about when to use this tool versus search_products, add_product, update_product, or delete_product. The description gives no context for when listing all products is appropriate or when an alternative should be chosen.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_productsA
Search products by ID, name, description, category, SKU, manufacturer, or status.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Text to search for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral details such as result format, filtering behavior (exact vs. partial match), pagination, or case sensitivity. It only repeats the searchable fields, which overlaps with parameter semantics.
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?
A single, front-loaded sentence that uses minimal words to convey the tool's purpose and parameter scope. No redundancy.
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?
For a simple tool with one parameter and no output schema, the description adequately covers purpose and parameter meaning. It could mention return behavior, but the tool is straightforward enough that the current description is mostly sufficient.
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 schema only describes 'query' as 'Text to search for', but the tool description enriches it by listing the fields that can be matched (ID, name, description, etc.), providing meaningful context 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 searches products and enumerates specific fields (ID, name, description, category, SKU, manufacturer, or status), distinguishing it from sibling tools like list_products which lists all, and add/update/delete which are mutations.
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 implies usage for finding products by specific attributes but does not explicitly state when to prefer this over list_products or provide exclusions. No alternative tools are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_productB
Update a product selected by its current ID or exact name.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Unique product ID | |
| sku | No | ||
| name | No | Unique product name | |
| price | No | ||
| stock | No | ||
| status | No | Active | |
| category | No | ||
| identifier | Yes | Current product ID or exact name | |
| description | No | ||
| manufacturer | No |
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 only says 'Update a product' without disclosing whether this is a partial update (only provided fields) or a full replacement, what happens to unmentioned fields, or what occurs if the product is not found. It also omits any side effects, permissions, or idempotency information.
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 a single, concise sentence that conveys the essential purpose without unnecessary words. It is appropriately sized for a simple tool and front-loads the core action.
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?
For a tool with 10 parameters, no annotations, and no output schema, this description is critically incomplete. It does not mention return values, error handling, update semantics (partial vs full), or any other operational detail needed for safe usage. The agent would have to rely on the schema alone, which is insufficient given the tool's complexity.
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?
Schema coverage is low (30%) with descriptions only on id, name, and identifier. The description adds meaning to the required identifier parameter ('current ID or exact name') but provides no clarification for the other seven parameters (price, stock, status, etc.), which lack schema descriptions. It does not compensate for the missing schema coverage.
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 action ('Update a product') and specifies the selection mechanism ('by its current ID or exact name'), which also differentiates it from sibling tools like add_product (create) and delete_product (delete). It is a specific verb+resource description.
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 implies usage (when you need to modify an existing product) by mentioning 'current ID or exact name,' but it does not explicitly state when to use this tool versus alternatives, nor does it provide exclusions or prerequisites. There is no guidance about using search first or the need for an existing product.
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.
5 tool updates
v1.0.0- First observed
add_product - First observed
delete_product - First observed
list_products - First observed
search_products - First observed
update_product
TDQS
Scored across 5 tools
Each tool has a clearly distinct purpose: list all, search with filters, add, update, and delete. No overlap or ambiguity between the operations.
All tool names follow the exact same verb_noun pattern (list_products, search_products, add_product, update_product, delete_product). Consistent and predictable.
Five tools perfectly cover the core catalog operations (CRUD plus search). The number is well-scoped and each tool earns its place.
The set provides complete lifecycle coverage: list, search, add, update, and delete. There are no obvious dead ends or missing essential operations for a product catalog.
Maintenance
Related MCP Connectors
Manage a Foundry IMS catalog: products, variants, BOMs, plus invoices read from supplier docs.
Manage products, EU Digital Product Passports, operator parties, and GS1 EPCIS supply-chain events.
Manage your Pollen account: sync, enrich, fix, and publish your store's catalog for AI agents.
Manage products, orders, customers, inventory, and store configuration
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables AI models to search, read, and analyze Excel files from your local file system with support for multiple worksheets, text search, and JSON data conversion.4MIT
- AlicenseNot gradedqualityDmaintenanceEnables reading and searching Excel files through MCP-compatible clients. Provides tools to retrieve workbook metadata, read sheet contents, and search across all sheets using absolute file paths.1MIT
- AlicenseNot gradedqualityDmaintenanceEnables manipulation of Excel files including creating, reading, writing data, formatting, charts, pivot tables, and worksheet management via natural language.15MIT
- FlicenseNot gradedqualityCmaintenanceEnables AI-powered Excel spreadsheet manipulation through natural language, supporting CRUD operations with JWT-authenticated REST API and MCP tools.-