Starbucks MCP Server
Automates ordering Starbucks coffee and food through a browser, supporting login, favorite management, custom orders, location selection, and order review before confirmation.
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., "@Starbucks MCP ServerOrder my usual morning coffee"
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.
Starbucks MCP Server
The first MCP server for ordering Starbucks coffee using AI! Built with Playwright automation and the Model Context Protocol.
⚠️ Important Disclaimers
UNOFFICIAL & EDUCATIONAL USE ONLY
This project is NOT affiliated with, endorsed by, or connected to Starbucks Corporation in any way
Use at your own risk - This tool may violate Starbucks Terms of Service
For educational and personal use only - Not intended for commercial use
You are financially responsible for all orders placed through this tool
No warranty - Provided "AS IS" without warranty of any kind (see LICENSE)
Your Starbucks account may be banned for using automated tools
Starbucks may request this repository be taken down at any time
FINANCIAL SAFETY:
✅ Every order requires manual confirmation - Orders are NOT automatically placed
✅ Review flow built-in - You see the order details before confirming
⚠️ Always verify order details, prices, and totals before confirming
⚠️ Monitor your account - Check your bank statements regularly
🚨 Emergency stop - Close the browser immediately if something goes wrong
By using this software, you acknowledge these risks and agree to use it responsibly.
Related MCP server: Burger King MCP Server
Features
🔐 Browser-based authentication - Log in once, order anytime
⭐ Favorite orders - Save and reorder your go-to drinks and food
🎯 Custom orders - Order any combination of drinks and food
📍 Location support - Select your pickup location
✅ Order approval - Review before placing your order
Installation
cd ~/code/starbucks-mcp-server
npm install
npm run buildConfiguration
Add to your Claude Code config (~/.claude.json):
{
"mcpServers": {
"starbucks": {
"type": "stdio",
"command": "node",
"args": ["/path/to/starbucks-mcp-server/dist/server.js"],
"env": {},
"cwd": "/path/to/starbucks-mcp-server"
}
}
}Usage
First Time Setup
# Log in to Starbucks
> login_starbucks
# Complete the login in the browser, then:
> complete_starbucks_loginOrdering
# Order a favorite
> Order my "Morning Coffee Run"
# Custom order
> Order a grande Pike Place Roast and a Bacon Gouda sandwich
# List favorites
> What are my Starbucks favorites?
# Add a new favorite
> Save a new favorite called "Afternoon Pick-Me-Up" with a venti cold brewExample Commands
"Order me a tall iced cold brew from Polk Street"
"Place my usual morning coffee order"
"What Starbucks favorites do I have saved?"
"Order breakfast - grande pike place and a breakfast sandwich"
Tools
login_starbucks- Open browser for authenticationcomplete_starbucks_login- Complete login after manual sign-incheck_starbucks_auth- Check authentication statuslist_starbucks_favorites- List saved favorite ordersorder_starbucks_favorite- Order a saved favoriteorder_starbucks_custom- Place a custom orderadd_starbucks_favorite- Save a new favoriteconfirm_starbucks_order- Confirm and place pending ordercancel_starbucks_order- Cancel pending order
How It Works
This MCP server uses Playwright to automate the Starbucks website:
Authentication: Opens a browser for you to log in manually
Session Management: Saves cookies for future orders
Order Automation: Navigates the menu, selects items, and adds to cart
Review Flow: Shows you the order before placing it
Confirmation: Places the order ONLY when you explicitly approve
Safety Features
No automatic ordering - Every order stops at the cart for your review
Explicit confirmation required - You must run
confirm_starbucks_orderto place the orderCancel anytime - Use
cancel_starbucks_orderto abort before confirmationOrder details shown - See items, prices (when available), and location before confirming
Session-based - You control when the browser opens and closes
Troubleshooting
If something goes wrong:
Close the browser window immediately
Check your Starbucks app/account for pending orders
Cancel any unwanted orders in the Starbucks app
Delete
starbucks-session.jsonto force re-authenticationUse
cancel_starbucks_orderbefore confirming to abort
Common issues:
Orders fail to add items → Website may have changed, headless mode issues
Session expired → Run
login_starbucksagainWrong location → Specify location explicitly in order commands
Requirements
Node.js 18+
Playwright (automatically installs browsers)
Active Starbucks account
Contributing
This is the first Starbucks MCP server! Contributions welcome:
Add support for customizations (milk, sweeteners, etc.)
Improve location detection
Add order history
Support for gift cards and rewards
License
MIT
Author
Dean Wenstrand
☕ Built with Claude Code and caffeine
Available Tools
10 toolsadd_starbucks_favoriteB
Save a new Starbucks favorite order
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name for this favorite | |
| items | Yes | Items in this favorite order |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavioral traits like authentication requirements, duplicate handling, or return value. It only states 'Save a new Starbucks favorite order' without any additional context, leaving the agent unaware of side effects or prerequisites.
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 sentence containing only essential information, with no redundancy. It is appropriately sized and 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?
For a mutation tool with no annotations and no output schema, the description is too sparse. It fails to mention potential conflicts (e.g., duplicate names), authentication needs, or what the response will look like, making it incomplete for an agent to use reliably.
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 already documents both parameters with descriptions ('Name for this favorite', 'Items in this favorite order'). The tool description adds no further parameter semantics, so it meets the baseline expectation given 100% 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 uses the specific verb 'Save' and identifies the resource as a 'new Starbucks favorite order', which clearly distinguishes it from sibling tools like list, order, and cancel. It communicates the core function in a single, unambiguous phrase.
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 relative to alternatives, such as prerequisites (e.g., logging in first) or conditions that would make it inappropriate. There is no mention of when this tool is preferred over order_starbucks_favorite or other siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_starbucks_orderA
Cancel a pending Starbucks order
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description carries the full burden for behavioral disclosure. It only states the action without explaining consequences (e.g., irreversibility, side effects, authentication requirements, or what happens if the order is not pending). For a destructive operation, this is a significant gap.
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 wasted words. It is concise and directly conveys the tool's 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 a mutation tool with no annotations, no output schema, and an empty input schema, the description is insufficient. It fails to explain how the order to cancel is identified or any behavioral context (e.g., whether it cancels the most recent order, requires login, etc.). The empty schema raises critical questions that the description leaves unanswered.
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 is empty (0 parameters), so there is no parameter semantics to explain. The baseline for 0 params is 4, and the description does not need to add parameter information since none exist.
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 (Cancel), resource (Starbucks order), and scope (pending). It distinguishes from sibling tools like confirm_starbucks_order and order_starbucks_favorite by specifying the action and target.
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 pending orders, providing some context. However, it does not explicitly state when to use this tool vs alternatives, nor any prerequisites like authentication. The 'pending' qualifier gives partial guidance but no exclusions or alternative references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_starbucks_authA
Check if Starbucks session is authenticated
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 beyond 'check'. It does not state whether the tool is read-only, what it returns, or any side effects. For a tool that likely validates authentication state, this minimal disclosure is insufficient without annotation support.
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 filler. Every word adds value, making it appropriately concise and structured for a trivial check operation.
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 simplicity (0 params, no output schema), the description is minimally adequate but leaves out the result type (e.g., boolean or status object). Without an output schema, a brief mention of the return value would improve completeness, so a mid-range score is appropriate.
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 zero parameters, so there is nothing to explain. The baseline for 0 params is 4, and the description correctly avoids adding unnecessary parameter details.
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 'Check if Starbucks session is authenticated' uses a specific verb ('Check') and resource ('Starbucks session'), clearly distinguishing this from sibling tools like login_starbucks or order_starbucks_favorite. It is unambiguous and immediately conveys the tool's 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?
There is no guidance on when to use this tool versus alternatives. The description only states the purpose, leaving the agent to infer the proper context (e.g., before ordering or after login). No exclusions or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
complete_starbucks_loginA
Complete Starbucks login after user has logged in manually in the browser
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses a key trait: it requires a prior manual login in the browser. However, it does not describe side effects like session creation, token handling, or failure behavior, leaving the agent with limited understanding of the tool's internal actions.
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, clear sentence with no wasted words. The key information (action, resource, precondition) is front-loaded, making it highly 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?
For a zero-parameter tool with no output schema, the description provides essential context: what it does and when to use it. The precondition 'after user has logged in manually in the browser' is critical. However, it does not cover edge cases like calling without the prerequisite, but given its simplicity, it is reasonably 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?
The tool has zero parameters, so there is nothing to explain. The description adds no parameter details, but none are needed. Per the rubric, 0 params merits a baseline of 4, and the description meets this baseline.
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 'complete' with the resource 'Starbucks login' and specifies the precondition 'after user has logged in manually in the browser.' This clearly differentiates it from siblings like login_starbucks and check_starbucks_auth, making the purpose 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 description explicitly states the condition for use: after the user has manually logged in via the browser. This implies a follow-up step and provides a clear prerequisite. It does not explicitly name alternative tools, but the sibling context makes the usage scenario evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confirm_starbucks_orderA
Confirm and place a pending Starbucks order after review
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full burden of behavioral disclosure. It states the action ('Confirm and place') but does not disclose whether placing the order is irreversible, triggers a charge, or what the response/confirmation looks like. This is a significant gap for a mutating tool that finalizes a transaction.
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 sentence, front-loaded with the action, and every word contributes meaning. It is suitably concise, though it could include a brief note on prerequisites or effects without becoming bloated.
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 mutation tool with no annotations and no output schema, the description is too sparse. It lacks critical context such as the prerequisite of having a pending order, the irreversibility of placing the order, and any confirmation details. The empty input schema does not compensate for these omissions.
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, so the schema is trivially complete at 100% coverage. The description does not need to explain parameters, and per the guidelines, a baseline of 4 is appropriate for zero-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 a specific verb 'Confirm and place' with a clear resource 'a pending Starbucks order', and the phrase 'after review' distinguishes this from siblings like cancel_starbucks_order or order_starbucks_favorite. It uniquely identifies the tool's role in finalizing an already-created 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 implies usage context ('after review') but provides no explicit when-to-use or exclusions, and does not mention alternatives like cancel_starbucks_order for changing one's mind. It gives a hint that this is the final step in an order workflow, but the guidance is not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_starbucks_favoritesA
List all saved Starbucks favorite orders
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 implies a read-only operation but does not disclose whether login is required, what the output structure looks like, or any rate limits or side effects. It is not misleading but severely minimal.
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 clear sentence with no unnecessary words. It is front-loaded with the action verb and resource, making it immediately understandable.
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 simplicity (0 params, no output schema), the description provides the basic purpose. However, it lacks context such as the need for prior login (given sibling auth tools) and what information is returned (e.g., favorite names, IDs). This is adequate but leaves gaps for an 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 tool has 0 parameters, and the schema is empty. The description's inclusion of 'all' clarifies that there are no filtering parameters, adding a small but useful semantic beyond the schema. Baseline for 0 params is 4, which is appropriate 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 uses a specific verb 'list' and a clear resource 'saved Starbucks favorite orders'. It distinguishes from sibling tools like add_starbucks_favorite and order_starbucks_favorite by indicating a read-only retrieval action.
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 description does not mention that listing favorites is a prerequisite for ordering or that authentication is required, leaving the agent to infer usage from sibling tool names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
login_starbucksA
Open browser for Starbucks login (first-time setup or to refresh expired session)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the key behavior ('Open browser') and the conditions under which it is used. It does not elaborate on possible side effects or post-conditions, but for a simple browser-opening tool, this is adequate 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, concise sentence that is front-loaded with the action ('Open browser') and purpose. Every word earns its place, with no redundant or excessive 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?
Given the tool's simplicity (no parameters, no output schema) and its role as one step in a larger authentication flow (with sibling tools like complete_starbucks_login), the description provides enough context to understand what the tool does and when to invoke it. It could mention that it requires user interaction, but that is implied by 'login'.
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 zero parameters, and schema coverage is 100% (trivially). According to the rubric, baseline is 4 for zero parameters. The description does not need to explain parameters and does not add any, which 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 'Open browser' and clearly states the resource ('Starbucks login') and purpose ('first-time setup or to refresh expired session'). This distinguishes it from sibling tools like complete_starbucks_login or check_starbucks_auth by indicating it initiates the login flow by opening a browser.
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 explicitly states when to use the tool ('first-time setup or to refresh expired session'), providing clear context. It does not mention explicit exclusions or alternative tools, but the given context is sufficient for an agent to decide to use this tool over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
order_starbucks_customA
Place a custom Starbucks order with specific drinks and food. IMPORTANT: Always use get_starbucks_menu first to get exact item names before ordering.
| Name | Required | Description | Default |
|---|---|---|---|
| food | No | List of food items (e.g., 'Bacon Gouda Artisan Breakfast Sandwich') | |
| drinks | No | List of drinks to order | |
| location | No | Optional: Full store address. If not provided, uses default location from environment. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the burden of disclosing side effects and workflow. It fails to mention that placing an order likely triggers a purchase, requires authentication, or that confirmation may be needed (given siblings like confirm_starbucks_order). The menu prerequisite is a useful constraint, but the description omits critical behavioral context about order placement and consequences.
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 sentences, front-loaded with the primary action, and includes a crucial tip in an attention-grabbing way. Every word earns its place; no fluff or repetition.
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 tool operates within a complex workflow (login, order, confirm, cancel), yet the description provides no context about authentication, order confirmation, or cancellation. It does not mention that confirm_starbucks_order may be required after placing the order. While the schema covers parameter structure, the description fails to convey the surrounding process, making it incomplete for an agent to use 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?
Schema description coverage is 100%, so the baseline is 3. The description adds minimal extra meaning beyond the schema—it merely mentions 'specific drinks and food' and the menu prerequisite, which is more of a usage guideline than parameter semantics. The schema already provides useful examples and definitions.
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 ('Place a custom Starbucks order') and specifies the content ('specific drinks and food'). It distinguishes itself from sibling 'order_starbucks_favorite' by explicitly labeling this as 'custom', making the purpose 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 description provides an explicit prerequisite: 'Always use get_starbucks_menu first to get exact item names before ordering.' This gives clear guidance on a necessary precondition. However, it does not state when not to use this tool (e.g., for favorites) or explicitly contrast with siblings, so it misses the full 'when-not' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
order_starbucks_favoriteA
Order a saved Starbucks favorite (e.g., 'Morning Coffee Run', 'Breakfast'). IMPORTANT: If order fails due to item names not found, use get_starbucks_menu first to get exact item names.
| Name | Required | Description | Default |
|---|---|---|---|
| location | No | Optional: Full store address. If not provided, uses default location from environment. | |
| favoriteName | Yes | Name of the favorite order |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the transparency burden. It discloses a potential failure mode (item names not found) and suggests recovery, which is valuable. However, it does not mention side effects like payment, confirmation, or how order status is returned, leaving gaps for a mutation 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?
Two sentences, with the primary action front-loaded and the troubleshooting tip highlighted with 'IMPORTANT'. Every word earns its place; no fluff or repetition.
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 provides a useful failure-recovery note, but the tool lacks an output schema and does not explain what happens after ordering (e.g., auto-confirm, cancellation, or status return). Sibling tools like confirm_starbucks_order and cancel_starbucks_order suggest additional steps, yet the description does not guide the agent on these dependencies.
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 100% with descriptions for both parameters. The description adds value over the schema by giving examples of favorite names ('Morning Coffee Run', 'Breakfast'), which helps infer the expected format. The location parameter is mentioned in schema and not expanded, but the description's examples enhance understanding.
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: 'Order a saved Starbucks favorite' with concrete examples. It distinguishes from siblings like order_starbucks_custom by focusing on 'saved' favorites, and from list_starbucks_favorites by indicating an ordering action.
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?
It gives a clear when-to-use context ('Order a saved favorite') and a specific conditional fallback: 'If order fails due to item names not found, use get_starbucks_menu first'. However, it does not explicitly contrast with order_starbucks_custom or mention prerequisites like login, but the siblings signal these are available.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a distinct purpose: auth flows, favorite management, order placement (favorite vs custom), order confirmation/cancellation, and menu lookup. No two tools overlap in a way that would confuse an agent.
All tool names follow a consistent pattern of action + 'starbucks' + target (e.g., login_starbucks, list_starbucks_favorites, order_starbucks_custom). The naming is uniform and predictable across the entire set.
10 tools is well-scoped for a Starbucks ordering and favorites management server. The count covers the essential workflows without being bloated or thin.
The toolset covers the core lifecycle: auth, menu access, placing and managing orders, and managing favorites. Minor gaps exist such as no delete/update favorite and no order history, but these are not critical for the primary ordering flow.
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
Provides cloud browser automation capabilities using Stagehand and Browserbase, enabling LLMs to i…
Stealth web automation for AI agents. Login, signup, navigate, screenshot.
Stealth web automation for AI agents. Login, signup, navigate, screenshot.
AI-powered browser automation — navigate, click, fill forms, and extract data from any website.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables users to interact with Wingstop by finding nearby locations, browsing the menu, and managing orders. It utilizes Playwright browser automation to facilitate checkout, apply promo codes, and check Wing Club rewards status.817MIT
- AlicenseAqualityDmaintenanceEnables AI assistants to search the Burger King menu, manage a cart with item customizations, and find nearby restaurant locations. It facilitates ordering for pickup or delivery using Playwright browser automation.720MIT
- FlicenseNot gradedqualityDmaintenanceProvides browser automation capabilities for AI assistants, enabling web navigation, form filling, and data extraction through Playwright.-
- AlicenseAqualityDmaintenanceEnables AI assistants to perform browser automation using Playwright, including navigation, content extraction, screenshot analysis, and custom script execution.517MIT
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/deanwenstrand/starbucks-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server