king-soopers-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@king-soopers-mcpFind the closest King Soopers to 80202 and add milk and eggs to my cart."
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.
king-soopers-mcp
A local Model Context Protocol server for shopping at King Soopers through the official Kroger Developer API. It lets an LLM client such as Claude Code or Claude Desktop find stores, search products with live store pricing, build a shopping list, and push it to your King Soopers cart. Checkout happens in the King Soopers app.
Status: design phase. See docs/BUILD_SPEC.md for the full specification and docs/research/ for the API and SDK research behind it.
What it can and cannot do
The Kroger Public API allows product and store lookup and adding items to a cart. It does not expose cart contents, item removal, checkout, or order history; those require a Kroger Partner agreement. This server keeps a local shadow cart so you can review a list before syncing it to Kroger.
Related MCP server: Kroger MCP Server
Stack
Python 3.12+, managed with uv
Official
mcpPython SDK 2.xhttpx, pydantic-settings
OAuth2 via the Kroger developer API only; no scraping or password login
Setup (once implemented)
Register an app at developer.kroger.com with redirect URI
http://localhost:8000/callback.Copy
.env.exampleto.envand fill in the client id and secret.uv syncRegister with Claude Code:
claude mcp add --scope user --transport stdio king-soopers -- uv run --directory /path/to/king-soopers-mcp king-soopers-mcpPrivacy
Credentials and tokens stay on your machine in .env and a 0600 token file. The server only writes to your Kroger account when you explicitly call the cart sync tool.
License
MIT
Available Tools
6 toolsauth_statusA
Report whether Kroger credentials and tokens are usable.
Only expiry metadata is returned; token values are never exposed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| message | Yes | |
| user_token | Yes | |
| client_token | Yes | |
| token_cache_path | Yes | |
| credentials_configured | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the behavioral burden. It does so by stating that only expiry metadata is returned and that token values are never exposed, which is important security-relevant behavior beyond the tool's name. It could add an explicit read-only/no-side-effects statement, but 'Report' already implies it.
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?
Two tightly written sentences with no filler. The core purpose is front-loaded, and the token-exposure caveat earns its place as an important behavioral note.
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-argument status tool with an output schema, the description is complete: it states purpose, return scope, and a key security guarantee. No additional context is necessary for an agent to invoke it correctly.
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 the schema coverage is 100%, so there is nothing for the description to explain about inputs. Baseline 4 applies for no-parameter tools; the description adds no parameter semantics because none are 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 opening phrase 'Report whether Kroger credentials and tokens are usable' names a specific verb, resource, and result. It also differentiates this auth-focused tool from the sibling store-product tools, so an agent can recognize when it applies.
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 makes the tool's context clear: it is a status check for Kroger credentials and tokens. It does not explicitly list alternatives or exclusion conditions, but no sibling is an auth tool, so the intended use is evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_storesA
Find King Soopers stores near a zip code.
Results are ordered by the API's own proximity ranking. Each store carries a search_scope string describing this search, for example 'within 10 mi of 80202'; the Kroger locations endpoint returns no per-store distance and no coordinates for the search centre, so no distance is reported per store.
Args: zip_code: 5-digit zip to search around. Falls back to KROGER_DEFAULT_ZIP. radius_miles: Search radius, 1-100 miles. limit: Maximum number of stores to return, 1-200.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| zip_code | No | ||
| radius_miles | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and excels: it discloses API-side ordering, the search_scope string, the absence of per-store distance and search-center coordinates, and the zip-code fallback. These are non-obvious behavioral details that an agent would otherwise only learn at runtime.
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 front-loads the core purpose, then uses compact sections for behavioral caveats and parameter documentation. Every sentence provides decision-relevant detail with no 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?
The description covers purpose, all parameters, defaults/fallbacks, ordering, and key output quirks. Since an output schema is present, the description is appropriately complete for a read-only lookup tool.
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 0%, but the Args section fully compensates by explaining zip_code format and fallback, radius_miles range (1-100), and limit range (1-200). This adds units, constraints, and default behavior that the bare integer schema does not convey.
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 opening sentence states a specific verb ('Find'), a specific resource ('King Soopers stores'), and the search criterion ('near a zip code'). This makes the tool's purpose immediately clear and distinguishes it from siblings like search_products and set_default_store without needing to name them.
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 gives clear context: use this tool when you need nearby King Soopers stores for a zip code, and it documents the fallback to KROGER_DEFAULT_ZIP. However, it does not explicitly mention alternatives or say when not to use it, which prevents a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_default_storeA
Show the store currently used for product prices and availability.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | |
| source | Yes | |
| address | Yes | |
| message | Yes | |
| configured | Yes | |
| location_id | Yes |
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. The verb 'Show' implies a read operation, but the description does not state whether the operation is safe/non-mutating, whether it requires certain permissions, what happens if no default store is configured, or any side effects. This is minimal behavioral transparency beyond the core purpose.
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, focused sentence with no filler or redundancy. It is appropriately sized for the simplicity of the tool and front-loads the core information ('Show the store currently used').
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 that this is a zero-parameter getter with an output schema present, the description is nearly complete for invoking the tool correctly. It clearly states what the tool returns (the current store) and its scope (prices and availability). It could optionally mention the relationship with set_default_store or behavior when no default exists, but these are not critical for a simple getter.
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 the schema already covers everything at 100%. With 0 parameters, the baseline is 4. The description adds no parameter-specific details, but there is nothing to describe, so this baseline 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 uses a specific verb ('Show') and a specific resource ('the store currently used for product prices and availability'). This clearly distinguishes it from siblings like set_default_store (which changes the default) and find_stores (which searches stores).
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?
There is no explicit guidance on when to use this tool versus alternatives. The usage is implied by the name and description: call it to retrieve the current default store. However, it does not mention exclusions like 'to change the store, use set_default_store', so the guidance remains implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_productA
Get one product with every image perspective and full fulfillment detail.
Args: product_id: The product_id or UPC from search_products. location_id: Store to price against. Defaults to the saved default store.
| Name | Required | Description | Default |
|---|---|---|---|
| product_id | Yes | ||
| location_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| upc | Yes | |
| size | Yes | |
| aisle | Yes | |
| brand | Yes | |
| aisles | Yes | |
| images | Yes | |
| sold_by | Yes | |
| in_stock | Yes | |
| image_url | Yes | |
| categories | Yes | |
| product_id | Yes | |
| description | Yes | |
| fulfillment | Yes | |
| location_id | Yes | |
| price_promo | Yes | |
| stock_level | Yes | |
| temperature | Yes | |
| price_regular | Yes | |
| snap_eligible | Yes | |
| country_origin | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral disclosure. It reveals output scope ('every image perspective and full fulfillment detail') and location_id default behavior, but does not discuss authentication, failures, or side effects beyond the implied read operation.
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 compact: one purpose sentence and two argument lines. No filler or redundancy, with the most important purpose front-loaded.
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 output schema supplies return structure and the tool has only two parameters, the description covers what the tool does and how to supply both parameters. It lacks explicit alternative routing but is otherwise complete for 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 0%, and the description compensates by explaining product_id is the ID/UPC from search_products and that location_id prices against a store with a saved default. This adds meaningful guidance absent from 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 first sentence 'Get one product with every image perspective and full fulfillment detail' uses a specific verb and resource and distinguishes this from search_products by targeting a single product. It does not explicitly name a sibling alternative, so it falls short of full 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 Args section says product_id comes from search_products, which implies a two-step flow but does not explicitly state when to use get_product versus alternatives. There is no when-not-to-use guidance or named alternatives.
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 with live pricing and stock at one King Soopers store.
Args: term: What to search for, for example 'whole milk'. location_id: Store to price against. Defaults to the saved default store. limit: Maximum number of products to return, 1-50. fulfillment: Optional filter: pickup, delivery, in_store, or ship_to_home.
| Name | Required | Description | Default |
|---|---|---|---|
| term | Yes | ||
| limit | No | ||
| fulfillment | No | ||
| location_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden and does well: it discloses that results are live, scoped to one store, and that location_id has fallback behavior (saved default). It does not explicitly state auth requirements or failure modes, but 'Search' makes the read-only nature evident.
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 summary sentence is front-loaded and precise, and the Args block is compact with no filler. Every sentence contributes actionable information.
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 search tool with four parameters and an output schema present, the description is complete: it covers required vs optional params, defaults, bounds, and filter options. Nothing needed to invoke it correctly is missing.
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 Args section adds meaning for all four parameters despite 0% schema coverage: term gets an example, location_id gets its default/store purpose, limit gets a 1-50 range, and fulfillment gets explicit allowed values (pickup, delivery, in_store, ship_to_home). This fully compensates for the bare 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 opens with a specific verb and resource: 'Search products with live pricing and stock at one King Soopers store.' It clearly communicates the tool's function, though it does not explicitly distinguish itself from sibling get_product or find_stores.
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 gives clear context (single-store scope, live pricing/stock, default store behavior), so an agent can infer when search_products applies. However, it never names alternatives or states when to use get_product or find_stores instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_default_storeA
Remember a store for later product searches.
Args: location_id: The location_id from find_stores, for example '62000115'.
| Name | Required | Description | Default |
|---|---|---|---|
| location_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | |
| source | Yes | |
| address | Yes | |
| message | Yes | |
| configured | Yes | |
| location_id | Yes |
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 only says the store is 'remembered' for later searches; it doesn't say whether an existing default is overwritten, whether authentication is required, or what observable effect occurs beyond future searches.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with the core purpose first and the parameter guidance second. There is no filler or repetition of the schema beyond what adds value.
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 one-parameter setter with an output schema, the description covers the input provenance and the intended effect on future searches. It could state the overwrite behavior and link to get_default_store, but the tool is simple enough that the current text is mostly complete.
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?
With 0% schema description coverage, the description compensates by naming the exact source of location_id (find_stores) and giving a concrete example format ('62000115'). This is sufficient for the single required parameter.
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 an active verb ('Remember') and clearly scopes the resource to a store for later product searches, which matches the setter name. It doesn't explicitly contrast with get_default_store, but the purpose is unambiguous.
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 intended usage is implied: call it before product searches to establish a default store, using a location_id from find_stores. It doesn't state when not to use it or why get_default_store/search_products might be alternatives, so the guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
6 tool updates
v0.1.0- First observed
auth_status - First observed
find_stores - First observed
get_default_store - First observed
get_product - First observed
search_products - First observed
set_default_store
TDQS
Each tool has a clearly distinct purpose: store search, default store state management, product search, product detail, and auth status. There is no meaningful overlap between search_products and get_product because one returns a list of matches while the other retrieves a single product by ID.
Tool names mostly follow a clean verb_noun snake_case pattern like find_stores, set_default_store, search_products, and get_product. The only minor deviation is auth_status, which is a noun phrase rather than a verb_noun form, but it is still short and clearly readable.
Six tools is a well-scoped size for a grocery store/product lookup MCP server. Each tool covers a necessary part of the workflow without redundancy or bloat.
The core workflow of finding a store, setting it as default, searching products, and retrieving product details is well covered. Minor gaps exist, such as no way to clear the default store or browse product categories, but these are workable and don't block the primary use case.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Kroger MCP — grocery products, prices, and store locations (developer.kroger.com)
Search direct grocery storefronts and create product-link pickup handoffs.
AI meal plans that fill your Kroger/Instacart cart - pantry-aware lists, all from chat.
Persistent shopping memory for AI assistants. The AI reasons; Kaufliste stores and executes.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables AI agents to search for products, manage shopping carts, and place grocery orders on Instacart using browser automation. It includes comprehensive tools for store discovery, product searching, and secure checkout with explicit user confirmation.11429MIT
- FlicenseNot gradedqualityDmaintenanceIntegrates Kroger's public API with Claude to allow adding meal plan grocery lists directly to your Kroger cart via natural language.-
- AlicenseNot gradedqualityCmaintenanceProvides access to Kroger grocery products, prices, and store locations via the Kroger API.5MIT
- FlicenseNot gradedqualityBmaintenanceProvides tools for LLMs to search H-E-B stores, coupons, products, and weekly ads using reversed-engineered APIs.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Druhayes/king-soopers-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server