mirror of
https://github.com/forcedotcom/afv-library.git
synced 2026-07-30 03:09:50 +08:00
3.6 KiB
3.6 KiB
MCP Action Integration — Examples & Reference
Two MCP actions provide component discovery and schema retrieval. Call them via execute_metadata_action.
discoverUiComponents
Discovers components available for a page type in the user's org.
When to call: Tier 2 discovery — after local scan finds no match.
Input:
execute_metadata_action({
"actionName": "DISCOVER_UI_COMPONENTS",
"metadataType": "FLEXI_PAGE",
"parameters": {
"pageType": "RECORD_PAGE",
"pageContext": { "entityName": "Account" },
"searchQuery": "related list"
}
})
Parameters:
| Param | Type | Required | Description |
|---|---|---|---|
| pageType | String | Yes | RECORD_PAGE, APP_PAGE, or HOME_PAGE |
| pageContext | JSON | Conditional | Required for RECORD_PAGE: {"entityName": "ObjectApiName"} |
| searchQuery | String | No | Natural language search from user intent |
Output:
{
"componentDefinitions": [
{
"definition": "lst/dynamicRelatedList",
"label": "Dynamic Related List",
"description": "Shows related records...",
"attributes": [{"name": "parentFieldApiName", "description": "..."}]
}
]
}
Notes:
- Output uses forward-slash delimiter (
namespace/blockName), but XML uses colon (namespace:blockName) - Only returns components compatible with the page type and accessible in the org
- May return empty list if no match — proceed to Tier 3
When multiple components are returned:
- Best-match selection: If one component clearly matches user intent (label/description aligns with the request), auto-select it
- Ambiguous results: If multiple components could satisfy the request, present the top candidates to the user with their labels and descriptions, and ask which one to use
- Refinement: If results are too broad, refine the
searchQueryparameter with more specific keywords from user intent and retry once before prompting the user
getUiComponentSchemas
Retrieves the full property schema for one or more components.
When to call: Tier 2 (org-discovered) components only — skip for Tier 1 (local) and Tier 3 (generated) components; read @api properties from source instead.
Input:
execute_metadata_action({
"actionName": "GET_UI_COMPONENT_SCHEMAS",
"metadataType": "FLEXI_PAGE",
"parameters": {
"pageType": "RECORD_PAGE",
"pageContext": { "entityName": "Account" },
"componentDefinitions": ["lst/dynamicRelatedList", "flexipage/richText"],
"includeKnowledge": true
}
})
Parameters:
| Param | Type | Required | Description |
|---|---|---|---|
| pageType | String | Yes | RECORD_PAGE, APP_PAGE, or HOME_PAGE |
| pageContext | JSON | Conditional | Required for RECORD_PAGE |
| componentDefinitions | List | Yes | Component FQNs (forward-slash format) |
| includeKnowledge | Boolean | No | Include component guidance text (default: true) |
Output:
{
"componentSchemas": [
{
"definition": "lst/dynamicRelatedList",
"success": true,
"schema": "{...JSON Schema string...}",
"knowledge": "Optional guidance text for this component"
}
]
}
Notes:
- Supports partial failures — each component has its own
successboolean - On failure:
{"definition": "...", "success": false, "error": "reason"} - When a component schema fails, fall through to Step 3 (smart defaults + LLM inference)
knowledgeprovides platform-curated guidance — use it alongside instructions files- Component definition format: always
namespace/blockName(forward-slash)