
Overview
Connect your favorite AI coding assistants directly to your Frontic Commerce projects through secure OAuth authentication. Build a frontend AND the corresponding Frontic API — all from your coding agent or IDE of choice.Claude Code
Claude Desktop
Cursor
Project & Resource Discovery
Blocks, Listings, Pages & Trees
Storage Management
Project Configuration
Browse Data
Integrations
Data Syncs & Value Composer
Context Documents
Browser Tools
Setup
The fastest path is the CLI — pick your package manager:cursor for claude, windsurf, vscode, or codex. The CLI prompts whether to install Frontic Tools, Frontic Docs, or both — the recommended default is both. See the Frontic CLI reference for full options.
If you’d rather edit the config yourself, drop this entry into your client’s MCP config file:
Client-specific configuration
Claude Code
Claude Code
.mcp.json at your project root — Claude Code reads project MCP config from this file:Claude Desktop
Claude Desktop
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Cursor
Cursor
.cursor/mcp.json in your project root, or Cursor’s global settings:Example Prompts
Once connected, try these prompts to explore the MCP server’s capabilities:Have your agent list your projects and inspect the main one
Ask the agent to map out your Data Storages and their fields
Let the agent build a Search Listing with filters and sorting
Tell the agent to scaffold a hero block with the standard fields
Have the agent assemble a homepage from existing primitives
Get the agent to plan and set up a basic storefront end to end
Have the agent extend a Data Storage schema with a new translatable field
Have the agent create a Products storage and connect a feed
Have the agent set up a content storage from scratch
Have the agent add a relation field linking two storages
Walk the integration → feed → data sync workflow end to end
Ask the agent to inspect your data syncs and their field mappings
Have the agent preview a Value Composer transformation on a sample record
Use the agent's browser tools to screenshot a storefront and extract its links
Ask the agent to walk your scope, region, and domain hierarchy
Available Tools
Project & Resource Discovery
list_projects
Browse all your Frontic projects with their names, IDs, data types, and configured locales. This is typically the first call in any workflow.
list_resources
List all blocks, listings, trees, pages, storages, or integrations within a project. When listing integrations, returns a compact inventory of each integration with its connected feeds (id and name only) — use get_integration_feed for the full feed schema.
storage_ids
Get record identifiers (IDs, slugs, keys) for a specific storage. Returns projected column values, not full records.
fetch_api_call
Get a sample Fetch API response for a block, listing, tree, or page — exactly what the frontend receives when calling the Frontic API. Useful for understanding the response shape before building your frontend.
delete_resource
Permanently delete a block, listing, page, or storage from the project. This action cannot be undone.
Block Management
create_block
Create a new block — a reusable content component that defines which fields are exposed in Fetch API responses. Blocks serve single-record endpoints.
manage_block
Update an existing block by adding or removing fields, and control its active status.
Listing Management
create_listing
Create a new listing — a searchable, filterable, sortable collection that performs search queries on a block index.
manage_listing
Configure all aspects of an existing listing: search fields, filter fields, sort fields, parameters, query conditions, search settings, and pagination.
Page Management
create_page
Create a page — a URL routing pattern that generates SEO-friendly routes from block data records.
manage_page
Update an existing page’s URL generation settings like slug source, conflict strategy, and delete behavior.
Tree Management
create_tree
Create a Menu Tree — a hierarchical collection of records (navigation menus, category trees, support article hierarchies). Each tree references a connected Data Storage and a Detail Block that defines the node shape. Multiple trees can share the same block; the agent prefers reusing an existing block over creating a new one.
Storage Management
create_storage
Create a new Data Storage with a name and schema type.
defaultcreates a regular Content storage for content or reference data.commercecreates a Products storage for product catalog data and adds commerce-specific system fields for variants, prices, parent keys, and options.
manage_storage to add custom fields.
manage_storage
Update an existing Data Storage by adding, renaming, or removing top-level fields. Field type is fixed at creation — to change a field’s type you delete and recreate it.
Multiple operations can be batched in a single call and run sequentially, so a later operation can target a field added or renamed earlier in the same call.
The tool works on top-level fields only — nested sub-fields of composite types aren’t editable through this tool. To create a new storage from scratch through MCP, use create_storage.
Project Configuration
Explore the context hierarchy of your project. A domain is the top layer — from a domain you get the exact configuration map of scope, region, and locale.- Domains map a scope, region, and locale combination to URL routing. Start here to understand how your project is configured.
- Scopes are data segmentation layers (e.g., B2B vs B2C). Every project has at least the default
publicscope. A scoped field can return different values per scope — for example,truein scope A andfalsein scope B. - Regions are subdivisions of a scope (e.g., EU, US, APAC). Each region holds a currency and one or more locales, determining which prices to show.
- Locales determine which translation to return for translatable fields. If a field is set as translatable, the response value matches the translation for that locale.
| Tool | Description |
|---|---|
list_domains | List all domains configured in a project |
get_domain | Get domain details including bound scope, region, locale, and URL pattern |
list_scopes | List all scopes in a project |
get_scope | Get scope details including associated regions |
list_regions | List all regions within a scope |
get_region | Get region details |
list_locales | List all configured locales in a project |
get_locale | Get locale details |
Browse Data
Search and inspect the actual data in your project — both transformed storage records and raw feed records from integrations.search_storage_records
Search records in a storage to see the transformed values blocks and listings serve to the frontend. Useful for verifying data after a sync, debugging unexpected output, or pulling a realistic sample for a composer dry-run with preview_composer_value or preview_composer_record. Filter by scope, region, and locale to see contextualized values like scoped pricing or translated content.
By default records[] contains bare payload objects — exactly what the user stored, no wrapper. Pass includeMetadata: true to get each record wrapped with its id, key, parentKey, createdAt, and updatedAt. Opt in when you need to know when a record was updated/created or walk parent–child relationships in a follow-up call.
metadata.parentKey is the storage-tree parent — distinct from any parentKey a user happens to have inside their own payload. That namespacing is why metadata is opt-in rather than always-on.
availableFilters and metaSearchResult (pagination + total count) are always returned alongside records[], regardless of includeMetadata.
Filtering with conditions
Pass an optional conditions object to narrow results. It takes an and array, an or array, or both — each item is {field, operator, value}:
availableFilters in the response.like and notLike take a raw substring — no SQL wildcards, the backend wraps them.string[] for IN-style matches.conditions entirely to return all records.
search_feed_records
Search feed records from an integration to see the connector-normalized data before the composer transforms it. Every commerce platform names fields differently (Shopify: flat keys; Shopware: dot-notation; commercetools: deeply nested objects), so inspecting an actual feed record is the only reliable way to know what’s available and how it’s shaped.
Same metadata contract as search_storage_records: bare payloads by default, full envelope (id, key, parentKey, createdAt, updatedAt) when you pass includeMetadata: true. availableFilters and metaSearchResult are always returned.
Integrations
Discover and inspect connected source systems and their feed schemas. The typical workflow islist_resources(type="integrations") → pick a feed → get_integration_feed → use the field paths in manage_data_sync_value_configs or composer previews.
get_integration_feed
Get the full schema for a single integration feed by feed ID. Returns the integration metadata, feed metadata (including type, token, urls, methods, configurations, and refreshSupported), and a flat field list in dot-path notation with types — for example, title (string), manufacturer (object), manufacturer.name (string). The flat representation is what you copy into composer configs.
If the feed ID isn’t found, the tool returns the list of available feed IDs in the project so the agent can recover without a separate discovery call.
Data Syncs
| Tool | Description |
|---|---|
list_data_syncs | List all data sync configurations, showing which integrations feed into which storages |
create_data_sync | Create a data sync shell that connects one integration feed to one storage with a name, feed, storage, and optional scope/channel/locale mappings. New data syncs are enabled on creation; call get_data_sync, then manage_data_sync_value_configs, to configure field value mappings |
get_data_sync | Get a single data sync with full field-level detail including value-composer configurations |
manage_data_sync_value_configs | Update data sync value composer field configurations by field ID |
Value Composer
| Tool | Description |
|---|---|
list_composer_operations | List all available value-composer operations with type, input/output shapes, and documentation |
preview_composer_value | Preview a computed value by running a single value-composer config against a sample record (dry-run) |
preview_composer_record | Preview a full transformed record by running all storage-field mapping configs against a sample source record |
Context Documents Plus
| Tool | Description |
|---|---|
list_context_documents | List all active documents in a collection (skills, rules, commands, guides, docs) |
fetch_context_document | Fetch a single document by key, returning full markdown with YAML frontmatter |
create_context_document | Create a new document in draft status (must be manually activated in the admin UI) |
manage_context_document | Update a document’s metadata and/or content |
Studio Settings Plus
system/studio-rules) and the project Studio Prompt (system/studio-agent).
| Tool | Description |
|---|---|
list_studio_settings | List the available Studio settings keys for the project |
manage_studio_setting | Update a Studio setting’s content by key (e.g. system/studio-rules, system/studio-agent) |
Browser Tools
Screenshot, extract content, and discover links on external websites using a server-side headless browser. Useful for analyzing existing storefronts during migration planning or store discovery.browser_screenshot
Take a screenshot of a URL and return it as a compressed JPEG image.
MAX_MCP_OUTPUT_TOKENS=100000 in your environment to handle screenshot responses.