Shopify MCP Server
Shopify MCP 服务器
适用于 Shopify API 的 MCP 服务器,支持通过 GraphQL API 与商店数据交互。该服务器提供用于管理产品、客户、订单等的工具。
特征
产品管理:搜索和检索产品信息
客户管理:加载客户数据并管理客户标签
订单管理:高级订单查询和过滤
GraphQL 集成:与 Shopify 的 GraphQL Admin API 直接集成
全面的错误处理:清晰的 API 和身份验证问题错误消息
Related MCP server: Shopify MCP Server
工具
get-products获取所有产品或按标题搜索
输入:
searchTitle(可选字符串):按标题过滤产品limit(数量):返回的最大产品数量
返回:格式化的产品详细信息,包括标题、描述、句柄和变体
get-products-by-collection从特定集合中获取产品
输入:
collectionId(字符串):从中获取产品的集合的 IDlimit(可选数字,默认值:10):返回的最大产品数量
返回:来自指定集合的格式化产品详细信息
get-products-by-ids通过 ID 获取产品
输入:
productIds(字符串数组):要检索的产品 ID 数组
返回:指定产品的格式化产品详细信息
get-variants-by-ids通过 ID 获取产品变体
输入:
variantIds(字符串数组):要检索的变体 ID 数组
返回:详细的变体信息,包括产品详细信息
get-customers通过分页支持获取 Shopify 客户
输入:
limit(可选数字):返回的最大客户数量next(可选字符串):下一页光标
返回:JSON格式的客户数据
tag-customer为客户添加标签
输入:
customerId(字符串):要标记的客户 IDtags(字符串数组):要添加到客户的标签
返回:成功或失败消息
get-orders通过高级筛选和排序获取订单
输入:
first(可选数字):退货订单数量after(可选字符串):下一页光标query(可选字符串):使用查询语法过滤订单sortKey(可选枚举):排序字段('PROCESSED_AT'、'TOTAL_PRICE'、'ID'、'CREATED_AT'、'UPDATED_AT'、'ORDER_NUMBER')reverse(可选布尔值):反转排序顺序
返回:格式化的订单详情
get-order根据ID获取单个订单
输入:
orderId(字符串):要检索的订单的 ID
返回:详细订单信息
create-discount创建基本折扣代码
输入:
title(字符串):折扣标题code(字符串):客户将输入的折扣代码valueType(枚举):折扣类型(“百分比”或“固定金额”)value(数字):折扣值(小数或固定金额的百分比)startsAt(字符串):ISO 格式的开始日期endsAt(可选字符串):ISO 格式的可选结束日期appliesOncePerCustomer(布尔值):每个客户是否只能使用一次折扣
返回:创建折扣详情
create-draft-order
创建草稿订单
输入:
lineItems(数组):具有 variantId 和数量的项目数组email(字符串):客户电子邮件shippingAddress(对象):送货地址详情note(可选字符串):订单的可选注释
返回:创建草稿订单详情
complete-draft-order
完成草稿订单
输入:
draftOrderId(string):待完成的草稿订单的 IDvariantId(字符串):草稿订单中变体的 ID
返回:已完成的订单详情
get-collections
获取所有集合
输入:
limit(可选数字,默认值:10):返回的最大集合数name(可选字符串):按名称过滤集合
返回:收集详情
get-shop
获取店铺详情
输入:无
返回:基本店铺信息
get-shop-details
获取包括运输国家在内的详细商店详情
输入:无
退货:扩展商店信息,包括运输国家/地区
manage-webhook
订阅、查找或取消订阅 webhook
输入:
action(枚举):要执行的操作('订阅','查找','取消订阅')callbackUrl(字符串): Webhook 回调 URLtopic(枚举):要订阅的 Webhook 主题webhookId(可选字符串):Webhook ID(取消订阅时必需)
返回:Webhook 详细信息或成功消息
设置
Shopify 访问令牌
要使用此 MCP 服务器,您需要在 Shopify 商店中创建一个自定义应用程序:
在 Shopify 管理员中,转到**“设置”** > “应用和销售渠道”
单击**“开发应用程序”** (您可能需要先启用开发人员预览)
单击**“创建应用程序”**
为您的应用设置名称(例如“Shopify MCP Server”)
点击配置管理 API 范围
选择以下范围:
read_products,write_productsread_customers,write_customersread_orders,write_orders
点击**“保存”**
点击**“安装应用程序”**
单击**“安装”**以授予应用访问您的商店数据的权限
安装后,您将看到您的Admin API 访问令牌
复制此令牌 - 您将需要它进行配置
注意:请安全存储您的访问令牌。它可用于访问您的商店数据,切勿共享或提交到版本控制。有关如何创建 Shopify 应用的更多详细信息,请参阅此处。
与 Claude Desktop 一起使用
添加到您的claude_desktop_config.json :
{
"mcpServers": {
"shopify": {
"command": "npx",
"args": ["-y", "shopify-mcp-server"],
"env": {
"SHOPIFY_ACCESS_TOKEN": "<YOUR_ACCESS_TOKEN>",
"MYSHOPIFY_DOMAIN": "<YOUR_SHOP>.myshopify.com"
}
}
}
}发展
克隆存储库
安装依赖项:
npm install创建
.env文件:
SHOPIFY_ACCESS_TOKEN=your_access_token
MYSHOPIFY_DOMAIN=your-store.myshopify.com构建项目:
npm run build运行测试:
npm test依赖项
@modelcontextprotocol/sdk - MCP 协议实现
graphql-request - Shopify API 的 GraphQL 客户端
zod - 运行时类型验证
贡献
欢迎贡献!请先阅读我们的贡献指南。
执照
麻省理工学院
社区
使用模型上下文协议用❤️构建
Available Tools
15 toolscomplete-draft-orderC
Complete a draft order
| Name | Required | Description | Default |
|---|---|---|---|
| draftOrderId | Yes | ID of the draft order to complete | |
| variantId | Yes | ID of the variant in the draft order |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but only states the action without behavioral details. It doesn't disclose if this is a mutation (likely), requires specific permissions, has side effects (e.g., order becomes active), or any rate limits. This is inadequate for a tool that presumably changes state.
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, direct sentence with zero waste—'Complete a draft order' is front-loaded and appropriately sized for the tool's purpose. No unnecessary words or structure detract from clarity.
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 no annotations, no output schema, and a likely mutation tool, the description is incomplete. It doesn't explain what 'complete' does behaviorally, what happens after completion, or any error conditions. For a tool with two required parameters and potential state changes, more context is needed.
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 100%, so the schema fully documents both parameters (draftOrderId, variantId). The description adds no meaning beyond this, such as explaining why variantId is required or how IDs are formatted. Baseline 3 is appropriate as the schema handles parameter semantics.
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 'Complete a draft order' states a clear verb ('complete') and resource ('draft order'), but it's vague about what 'complete' entails—does it finalize, process, or submit the order? It distinguishes from siblings like 'create-draft-order' by implying a different stage, but lacks specificity on the action's outcome.
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 on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an existing draft order), exclusions, or related tools like 'get-order' for post-completion checks, leaving the agent to infer usage from context alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create-discountC
Create a basic discount code
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Title of the discount | |
| code | Yes | Discount code that customers will enter | |
| valueType | Yes | Type of discount | |
| value | Yes | Discount value (percentage as decimal or fixed amount) | |
| startsAt | Yes | Start date in ISO format | |
| endsAt | No | Optional end date in ISO format | |
| appliesOncePerCustomer | Yes | Whether discount can be used only once per customer |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states 'Create' which implies a write/mutation operation, but doesn't mention permissions required, whether the discount is immediately active, if there are rate limits, or what happens on success/failure. For a creation tool with zero annotation coverage, this leaves significant gaps in understanding its 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 a single, efficient sentence that gets straight to the point with zero wasted words. It's appropriately sized for a tool with well-documented parameters in the schema. Every word earns its place by clearly stating the tool's core function.
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 creation tool with no annotations and no output schema, the description is insufficient. It doesn't explain what happens after creation (e.g., returns a discount ID, activates immediately), doesn't mention error conditions or validation rules, and provides no context about the discount system's limitations. The 100% schema coverage helps with parameters but doesn't compensate for missing behavioral and outcome information.
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 100%, so the schema fully documents all 7 parameters with clear descriptions. The description adds no additional parameter information beyond what's in the schema. According to scoring rules, when schema coverage is high (>80%), the baseline is 3 even with no param info in the description.
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 ('Create') and resource ('a basic discount code'), making the purpose immediately understandable. It distinguishes this from sibling tools like 'complete-draft-order' or 'get-products' by focusing on discount creation rather than order or product operations. However, it doesn't specify what 'basic' means compared to more advanced discount options that might exist.
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 no guidance on when to use this tool versus alternatives. There are no explicit instructions about prerequisites, constraints, or comparisons with other discount-related tools (if any existed in the sibling list). The agent must infer usage from the tool name and parameters alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create-draft-orderC
Create a draft order
| Name | Required | Description | Default |
|---|---|---|---|
| lineItems | Yes | Line items to add to the order | |
| Yes | Customer email | ||
| shippingAddress | Yes | Shipping address details | |
| note | No | Optional note for the order |
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 of behavioral disclosure. 'Create a draft order' implies a write/mutation operation, but it doesn't disclose any behavioral traits: no information about permissions required, whether the creation is reversible, rate limits, side effects, or what happens upon success/failure. For a mutation tool with zero annotation coverage, this is a significant gap in transparency.
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 extremely concise at just three words, with zero wasted language. It's front-loaded with the core action and resource. While this conciseness contributes to under-specification in other dimensions, as a standalone assessment of brevity and structure, it's maximally 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?
Given the complexity (4 parameters including nested objects, no output schema, and no annotations), the description is incomplete. It doesn't explain what a draft order is, how it differs from a completed order, what the tool returns, or any behavioral context. For a mutation tool that creates a complex resource, the description fails to provide adequate context for an agent to use it effectively.
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 description coverage is 100%, with clear descriptions for each parameter (e.g., 'Line items to add to the order', 'Customer email'). The description adds no additional meaning beyond what the schema already provides. According to the rules, when schema coverage is high (>80%), the baseline score is 3 even with no parameter info in the description, which applies here.
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 'Create a draft order' is a tautology that essentially restates the tool name 'create-draft-order'. While it indicates the action (create) and resource (draft order), it doesn't provide any additional specificity about what a draft order entails or how it differs from other order-related tools like 'complete-draft-order' or 'get-order'. The purpose is stated but lacks meaningful differentiation from siblings.
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 no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., whether customer or product data must exist first), when to choose this over 'complete-draft-order', or any constraints on usage. With siblings like 'complete-draft-order' and 'get-order', the absence of comparative guidance leaves the agent guessing about appropriate contexts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-collectionsC
Get all collections
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of collections to return | |
| name | No | Filter collections by name |
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 of behavioral disclosure. 'Get all collections' implies a read operation, but it doesn't specify permissions needed, rate limits, pagination behavior, or what 'all' entails (e.g., across the entire system). The description lacks details on return format or error conditions.
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 extremely concise with just three words, front-loading the core purpose without any wasted text. Every word earns its place, making it efficient for quick understanding.
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 no annotations and no output schema, the description is incomplete for a tool with parameters. It doesn't explain what 'collections' are in this context, how results are structured, or behavioral aspects like ordering or defaults. For a list operation with filtering parameters, more context is needed.
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 100%, so the schema fully documents the 'limit' and 'name' parameters. The description adds no parameter-specific information beyond what's in the schema, but since the schema is comprehensive, a baseline score of 3 is appropriate.
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 'Get all collections' clearly states the verb ('Get') and resource ('collections'), making the tool's purpose immediately understandable. It doesn't distinguish from sibling tools like 'get-products-by-collection', but it's specific enough to avoid vagueness or tautology.
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 no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'get-products-by-collection' for filtering products by collection, or clarify if this is for listing all collections versus filtered subsets. No exclusions or prerequisites are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-customersC
Get shopify customers with pagination support
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Limit of customers to return | |
| next | No | Next page cursor |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions 'pagination support' which hints at behavior for large result sets, but fails to disclose critical details: whether this is a read-only operation, what permissions are required, rate limits, error conditions, or the format of returned data. For a tool with no annotations, this leaves significant behavioral gaps.
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, efficient sentence with zero waste. It's front-loaded with the core purpose and includes a key behavioral hint (pagination). 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?
Given no annotations and no output schema, the description is incomplete for a data retrieval tool. It doesn't explain what data is returned (e.g., customer fields), how pagination works in practice, or error handling. For a tool with 2 parameters and complex behavior implied by pagination, more context is needed.
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 100%, so the schema already documents both parameters ('limit' and 'next'). The description adds no additional meaning about parameters beyond implying pagination through 'next', which is already clear from the schema. Baseline 3 is appropriate when schema does the heavy lifting.
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 ('Get') and resource ('shopify customers'), making the purpose understandable. It distinguishes from siblings like 'tag-customer' or 'get-order' by specifying customers as the target. However, it doesn't explicitly differentiate from other customer-related tools (none listed), so it's not a perfect 5.
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 mentions 'pagination support' which implies usage for large datasets, but provides no explicit guidance on when to use this tool versus alternatives like 'get-order' or 'get-products'. No prerequisites, exclusions, or comparisons to sibling tools are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-orderC
Get a single order by ID
| Name | Required | Description | Default |
|---|---|---|---|
| orderId | Yes | ID of the order to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool retrieves an order but fails to describe key behaviors: whether it's a read-only operation, what happens if the order ID is invalid (e.g., error handling), or any rate limits or authentication requirements. This leaves significant gaps in understanding how the tool behaves in practice.
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 extremely concise and front-loaded, consisting of a single, clear sentence that directly states the tool's purpose. There is no wasted verbiage, and it efficiently communicates the core functionality without unnecessary elaboration.
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 is incomplete for a retrieval tool. It doesn't explain what is returned (e.g., order details, error formats) or address behavioral aspects like error conditions. While the purpose is clear, the overall context for effective tool use is insufficient.
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 description coverage is 100%, with the single parameter 'orderId' fully documented in the schema as 'ID of the order to retrieve'. The description adds no additional semantic context beyond implying the parameter is required for retrieval, so it meets the baseline score without compensating for or enhancing the schema information.
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 ('Get') and resource ('a single order by ID'), making the purpose immediately understandable. It distinguishes this from sibling tools like 'get-orders' (plural) by specifying retrieval of a single order, though it doesn't explicitly contrast with other sibling tools beyond this implicit differentiation.
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 no guidance on when to use this tool versus alternatives like 'get-orders' or other retrieval tools. It lacks context about prerequisites, such as needing an existing order ID, and offers no explicit when-not-to-use or alternative recommendations, leaving usage decisions to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-ordersC
Get shopify orders with advanced filtering and sorting
| Name | Required | Description | Default |
|---|---|---|---|
| first | No | Limit of orders to return | |
| after | No | Next page cursor | |
| query | No | Filter orders using query syntax | |
| sortKey | No | Field to sort by | |
| reverse | No | Reverse sort order |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions 'advanced filtering and sorting' but doesn't explain what that entails operationally. It doesn't disclose whether this is a read-only operation, what permissions are required, whether there are rate limits, pagination behavior (implied by 'first' and 'after' parameters but not stated), or what the output format looks like. For a tool with 5 parameters and no output schema, this leaves significant gaps.
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, efficient sentence that communicates the core purpose without unnecessary words. It's appropriately sized for a tool with this complexity level and gets straight to the point. Every word earns its place, with no redundant information or fluff.
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 5 parameters, no annotations, and no output schema, the description is insufficiently complete. It doesn't explain what 'advanced filtering' means operationally, doesn't describe the return format or structure, and provides no guidance on error conditions or limitations. For a data retrieval tool with multiple filtering/sorting options, users need more context about what to expect when invoking 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?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds 'advanced filtering and sorting' which aligns with the 'query' and 'sortKey'/'reverse' parameters, providing some high-level context. However, it doesn't add specific meaning beyond what the schema provides, such as explaining query syntax examples or typical sortKey usage patterns.
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 verb ('Get') and resource ('shopify orders'), making the purpose evident. It adds 'with advanced filtering and sorting' which provides useful context about capabilities. However, it doesn't explicitly differentiate from sibling tools like 'get-order' (singular) or 'get-customers', leaving some ambiguity about when to choose this specific tool.
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 no guidance on when to use this tool versus alternatives. It doesn't mention when to use 'get-orders' versus 'get-order' (singular), nor does it indicate prerequisites, context requirements, or typical use cases. The phrase 'advanced filtering and sorting' hints at capabilities but doesn't specify when those features are needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-productsC
Get all products or search by title
| Name | Required | Description | Default |
|---|---|---|---|
| searchTitle | No | Search title, if missing, will return all products | |
| limit | Yes | Maximum number of products to return |
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 of behavioral disclosure. It states what the tool does but lacks details on permissions, rate limits, pagination, error handling, or response format. For a read operation with no annotation coverage, this leaves significant gaps in understanding its 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 extremely concise with just one sentence that efficiently conveys the core functionality. It's front-loaded and wastes no words, making it easy to parse quickly.
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 is incomplete. It doesn't explain what the return values look like, how results are structured, or any behavioral constraints. For a tool with two parameters and no structured output documentation, more context is needed for effective use.
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 100%, so the schema already documents both parameters thoroughly. The description adds minimal value by implying the 'searchTitle' parameter's optional nature and the tool's dual functionality, but doesn't provide additional syntax or format details beyond what the schema specifies.
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 with a specific verb ('Get') and resource ('products'), and distinguishes between two modes: retrieving all products or searching by title. However, it doesn't explicitly differentiate from sibling tools like 'get-products-by-collection' or 'get-products-by-ids', which would require a 5.
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 no guidance on when to use this tool versus alternatives like 'get-products-by-collection' or 'get-products-by-ids'. It mentions the two modes of operation but doesn't specify scenarios, prerequisites, or exclusions for choosing this tool over siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-products-by-collectionC
Get products from a specific collection
| Name | Required | Description | Default |
|---|---|---|---|
| collectionId | Yes | ID of the collection to get products from | |
| limit | No | Maximum number of products to return |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure but only states the basic action. It doesn't mention whether this is a read-only operation, potential rate limits, authentication needs, error conditions, or response format (e.g., pagination, data structure). For a tool with zero annotation coverage, this is a significant gap in transparency.
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, efficient sentence with zero wasted words. It's front-loaded with the core purpose and appropriately sized for the tool's complexity, making it easy to parse quickly.
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 no annotations and no output schema, the description is incomplete for a retrieval tool. It lacks details on behavioral traits (e.g., read-only nature, error handling), response format, or usage distinctions from siblings. While concise, it doesn't provide enough context for an agent to fully understand how to invoke and interpret results.
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 100% description coverage, with clear documentation for both parameters (collectionId and limit). The description adds no additional semantic context beyond what the schema provides, such as example values or constraints not in the schema. This meets the baseline score of 3 when schema coverage is high.
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 verb ('Get') and resource ('products from a specific collection'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'get-products' or 'get-products-by-ids', which would require more specific language about collection-based filtering versus other retrieval methods.
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 no guidance on when to use this tool versus alternatives like 'get-products' or 'get-products-by-ids'. It mentions 'specific collection' but doesn't clarify prerequisites, exclusions, or comparative contexts with sibling tools, leaving the agent to infer usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-products-by-idsC
Get products by their IDs
| Name | Required | Description | Default |
|---|---|---|---|
| productIds | Yes | Array of product IDs to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure but only states the basic action. It doesn't cover critical aspects like whether this is a read-only operation, error handling, rate limits, authentication needs, or what happens with invalid IDs, leaving significant gaps.
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 extremely concise with a single, direct sentence that front-loads the core functionality. There is no wasted language, making it efficient and easy to parse.
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 is incomplete. It doesn't explain return values, error conditions, or behavioral nuances needed for a tool that retrieves data by IDs, failing to compensate for the missing structured information.
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 100%, so the schema fully documents the single parameter 'productIds'. The description adds no additional meaning beyond what the schema provides, such as format examples or constraints, meeting the baseline for high 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 verb ('Get') and resource ('products by their IDs'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'get-products' or 'get-products-by-collection', which would require more specificity to earn a 5.
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 no guidance on when to use this tool versus alternatives like 'get-products' or 'get-products-by-collection'. It lacks context about prerequisites, limitations, or typical use cases, offering only basic functional information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-shopC
Get shop details
| 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 of behavioral disclosure. 'Get shop details' implies a read-only operation, but it doesn't specify aspects like authentication requirements, rate limits, error conditions, or what the return data includes. This leaves significant gaps for an agent to understand how to use it effectively.
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 extremely concise with just three words, making it front-loaded and efficient. However, it may be overly brief, potentially under-specifying the tool's purpose compared to siblings like 'get-shop-details', which could confuse an agent.
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 complexity of a tool that likely retrieves shop information, the description is incomplete. With no annotations, no output schema, and a vague purpose, it fails to provide enough context for an agent to use it correctly, especially in distinguishing it from similar sibling tools.
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 0 parameters with 100% coverage, meaning no parameters are documented in the schema. The description doesn't add parameter details, but since there are no parameters, this is acceptable. The baseline for 0 parameters is 4, as the description doesn't need to compensate for missing param 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 'Get shop details' clearly states the action (get) and resource (shop details), making the purpose understandable. However, it's somewhat vague about what specific details are retrieved, and it doesn't distinguish this tool from 'get-shop-details' among the sibling tools, which appears to serve a similar function.
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 no guidance on when to use this tool versus alternatives. Given the sibling tool 'get-shop-details', there's a clear need for differentiation, but the description offers no context, prerequisites, or exclusions to help an agent choose appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-shop-detailsB
Get extended shop details including shipping countries
| 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 of behavioral disclosure. It states the tool retrieves data ('Get'), implying a read-only operation, but doesn't address other behavioral aspects such as authentication requirements, rate limits, error conditions, or response format. The description is minimal and lacks critical operational context.
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, efficient sentence that directly states the tool's function without unnecessary words. It is front-loaded with the core purpose and includes a specific detail ('shipping countries') that adds value. There is no waste or redundancy, making it highly concise and well-structured.
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 is incomplete for a tool that likely returns complex data. It mentions 'extended shop details' and 'shipping countries' but doesn't explain what other details are included, the response structure, or any limitations. For a read operation with no structured output documentation, more context is needed to guide effective use.
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 0 parameters with 100% coverage, meaning no parameters are documented in the schema. The description doesn't add parameter details, which is appropriate since there are none to describe. It implies the tool operates without inputs, which aligns with the schema. Baseline is 4 for 0 parameters, as no additional semantic information is needed.
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 with a specific verb ('Get') and resource ('extended shop details'), including the scope of information returned ('including shipping countries'). It distinguishes this from the sibling 'get-shop' tool by specifying 'extended' details, though it doesn't explicitly contrast them. The purpose is not vague or tautological.
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 no guidance on when to use this tool versus alternatives like 'get-shop' or other sibling tools. It lacks context about prerequisites, timing, or exclusions. While the 'extended' detail implies more comprehensive information, it doesn't specify when this is necessary over basic shop details.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-variants-by-idsC
Get product variants by their IDs
| Name | Required | Description | Default |
|---|---|---|---|
| variantIds | Yes | Array of variant IDs to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It only states what the tool does ('Get product variants'), but doesn't describe whether this is a read-only operation, what permissions are required, how many variants can be retrieved at once, error handling for invalid IDs, or the format of returned data. For a retrieval tool with zero annotation coverage, this leaves significant behavioral gaps.
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, efficient sentence that gets straight to the point with zero wasted words. It follows the principle of front-loading the most important information (what the tool does) without unnecessary elaboration. Every word earns its place in this minimal but complete statement of purpose.
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 no annotations, no output schema, and the description provides only basic purpose without behavioral context, this is incomplete for effective agent use. While the purpose is clear, the agent lacks information about what the tool returns, how it handles errors, limitations, or authentication requirements. For a data retrieval tool, this represents significant contextual gaps.
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 description coverage is 100% with the single parameter 'variantIds' fully documented in the schema. The description adds no additional parameter semantics beyond what's already in the schema ('Array of variant IDs to retrieve'). According to scoring rules, when schema coverage is high (>80%), the baseline is 3 even with no param info in the description.
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 'Get product variants by their IDs' clearly states the verb ('Get'), resource ('product variants'), and key constraint ('by their IDs'). It distinguishes from general product retrieval tools like 'get-products' or 'get-products-by-ids' by focusing specifically on variants. However, it doesn't explicitly differentiate from potential sibling tools that might also retrieve variants through other means.
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 no guidance on when to use this tool versus alternatives. It doesn't mention when this tool is preferred over 'get-products' (which might include variants) or 'get-products-by-ids', nor does it specify prerequisites like needing specific variant IDs. The agent must infer usage from the tool name and description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage-webhookC
Subscribe, find, or unsubscribe webhooks
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action to perform with webhook | |
| callbackUrl | Yes | Webhook callback URL | |
| topic | Yes | Webhook topic to subscribe to | |
| webhookId | No | Webhook ID (required for unsubscribe) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. While it implies mutation (subscribe/unsubscribe) and read (find), it doesn't specify permissions required, rate limits, side effects (e.g., whether unsubscribe destroys data), or response format. For a tool with potential write operations and no annotation coverage, this leaves critical gaps in understanding its 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 extremely concise (three words) and front-loaded, with zero wasted words. Every term ('subscribe', 'find', 'unsubscribe', 'webhooks') directly contributes to understanding the tool's scope without redundancy. This efficiency makes it easy for an agent to parse quickly.
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's complexity (multiple actions including mutations), lack of annotations, and no output schema, the description is incomplete. It doesn't address behavioral aspects like authentication, error handling, or return values, which are crucial for safe invocation. While concise, it fails to provide enough context for an agent to use the tool effectively without trial and error.
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 100%, so the schema already documents all parameters thoroughly. The description adds no additional meaning about parameters beyond implying the three actions map to the 'action' enum. It doesn't clarify parameter interactions (e.g., webhookId is only for unsubscribe) or provide examples, so it meets the baseline but doesn't compensate for schema gaps (there are none).
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 with specific verbs (subscribe, find, unsubscribe) and resource (webhooks), making it immediately understandable. However, it doesn't differentiate this multi-action tool from its siblings, which are mostly single-action retrieval tools (e.g., get-products, get-orders) or specific creation tools (e.g., create-draft-order).
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 no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., authentication needs), when to choose subscribe vs. find vs. unsubscribe, or how it relates to sibling tools like get-orders (which might overlap with webhook topics). Without this context, an agent must infer usage from parameters alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tag-customerC
Add tags to a customer
| Name | Required | Description | Default |
|---|---|---|---|
| customerId | Yes | Customer ID to tag | |
| tags | Yes | Tags to add to the customer |
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 of behavioral disclosure. While 'Add tags' implies a mutation operation, it lacks details on permissions required, whether tags are appended or replaced, error handling (e.g., invalid customerId), rate limits, or response format. This is a significant gap for a mutation tool with zero annotation coverage.
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, efficient sentence with zero waste. It's appropriately sized for a simple tool and front-loaded with the core action, making it easy to parse quickly.
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 this is a mutation tool with no annotations and no output schema, the description is incomplete. It doesn't explain what happens on success (e.g., returns updated customer object) or failure, nor does it cover behavioral aspects like idempotency or side effects. For a 2-parameter tool with 100% schema coverage but critical gaps in mutation context, a low score is warranted.
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 description coverage is 100%, with both parameters (customerId and tags) clearly documented in the schema. The description adds no additional meaning beyond what the schema provides (e.g., no examples, format details, or constraints). Baseline 3 is appropriate when the schema does the heavy lifting.
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 ('Add tags') and target resource ('to a customer'), providing a specific verb+resource combination. However, it doesn't differentiate from potential sibling tools like 'get-customers' or other customer management tools that might exist in the broader ecosystem, though none are directly related to tagging in the provided sibling list.
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 no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., customer must exist), exclusions (e.g., cannot remove tags), or related tools (e.g., if there's a 'remove-tags' or 'update-customer' tool). Usage is implied only by the action itself.
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.
15 tool updates
v1.0.0- First observed
complete-draft-order - First observed
create-discount - First observed
create-draft-order - First observed
get-collections - First observed
get-customers - First observed
get-order - First observed
get-orders - First observed
get-products - First observed
get-products-by-collection - First observed
get-products-by-ids - First observed
get-shop - First observed
get-shop-details - First observed
get-variants-by-ids - First observed
manage-webhook - First observed
tag-customer
TDQS
Scored across 15 tools
Most tools have distinct purposes targeting specific Shopify resources like orders, products, customers, and shop details, with clear separation. However, 'get-shop' and 'get-shop-details' could cause confusion as they both retrieve shop information, though descriptions hint at different detail levels.
All tool names follow a consistent verb_noun pattern with hyphens, such as 'create-discount', 'get-products', and 'tag-customer'. This uniformity makes the set predictable and easy to navigate for an agent.
With 15 tools, the server is well-scoped for Shopify operations, covering key areas like orders, products, customers, discounts, and webhooks. Each tool appears to serve a specific function without unnecessary bloat.
The tool set provides good coverage for core Shopify workflows, including CRUD operations for orders, products, and customers, as well as utilities like discounts and webhooks. Minor gaps exist, such as no update or delete tools for products or customers, but agents can likely work around these with available tools.
Maintenance
Related MCP Connectors
Shopify MCP Pack — wraps the Shopify Admin REST API (2024-01)
Manage a Shopify store's Sternify bundles, gifts, upsells, banners and reviews via OAuth.
AI-powered commerce API for luxury skincare shopping. Enables AI agents to search products, browse collections, manage shopping carts, and generate checkout URLs for the Regenique Elegance Shopify store.
The public product catalogue and collections of any Shopify storefront, as structured JSON.
Related MCP Servers
- -licenseNot gradedqualityNot gradedmaintenanceEnables interaction with Shopify store data via GraphQL API, providing tools for managing products, customers, orders, discounts, and more with robust error handling.131 npm30-
- AlicenseNot gradedqualityDmaintenanceEnables interaction with Shopify stores through GraphQL API, providing tools for managing products, customers, orders, and more.131 npm10MIT
- AlicenseCqualityDmaintenanceEnables interaction with Shopify store data through GraphQL API, providing tools for managing products, customers, orders, blogs, and articles.152,033 npm4MIT
- AlicenseDqualityDmaintenanceEnables interaction with Shopify stores through the GraphQL Admin API. Supports product management, customer data, order queries, blog/article management, and store-wide search capabilities through natural language.156 npm2MIT