Exposes Laravel Nova dashboards, resources, lenses, actions and notifications as MCP tools.
Nova MCP demonstrates solid tool design with clear naming conventions (verb_resource pattern), comprehensive parameter schemas, and good descriptions. All 12 tools have explicit descriptions and input schemas with type definitions. Tool annotations (readOnlyHint/destructiveHint) are present. However, output schemas are not documented in the source code, parameter descriptions lack depth in some tools (e.g., nova_notifications limit/unreadOnly lack context on defaults), and error handling guidance is absent. Overall structure is production-ready but lacks LLM-optimized descriptions and recovery guidance.
Run the Nova action "<action>" on <resource> records.
Run the Nova lens "<lens>" over <resource>, returning the rows and columns the lens defines rather than the resource's own index fields.
Create a <resource> record through Nova, running the resource's creation validation rules and fill callbacks. Call nova_resource_schema with resource "<resource>" first to learn the writable attributes and their rules. File uploads are not supported.
Delete <resource> records through Nova, honoring the resource's delete policy, field deletion callbacks and action events. Soft deleting resources are trashed rather than removed.
Permanently delete <resource> records through Nova, bypassing soft deletes. This cannot be undone.
Read one <resource> record by its key, returning every field Nova shows on its detail screen along with the actions and lenses available for it.
Dynamic tool registration (nova_<resource>_list, nova_<resource>_get, etc.) is inferred from template patterns rather than explicitly visible in source code.
Output schemas are not documented in source code. LLMs cannot plan downstream calls or extract required fields without knowing what each tool returns. Descriptions mention 'returns' but formal schema definitions are missing.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | 2026-07-28+ | v2 |
List <resource> records from Nova, applying the same search, filters, sorting and authorization as the Nova index screen. Call nova_resource_schema with resource "<resource>" for the available fields, filters and sort keys.
Restore soft deleted <resource> records through Nova, honoring the resource's restore policy.
Read the Nova "<dashboard>" dashboard: every card the current user is authorized to see, with each metric resolved to its current value.
Read the Nova notification center for the current user: the latest notifications with their message, type, action link and read state, plus the unread count.
Map this Laravel Nova installation: who the server is acting as, every resource with its label, model and authorization, every dashboard, the unread notification count, and the name of every tool available for each of them. Call this first, then nova_resource_schema for the resource you need.
Describe a Nova resource in full: its index, detail, creation and update fields with validation rules and options, its filters and their allowed values, its lenses, actions, cards and resource tools. Read this before listing, creating or updating records.
Parameter descriptions lack actionable constraints. E.g., nova_notifications 'limit' has no default value stated, 'unreadOnly' lacks context on what 'unread' means in Nova's domain. Descriptions should state defaults, ranges, and domain-specific semantics.
No error handling guidance. Tools lack recovery hints (e.g., 'If resource not found, call nova_overview to list available resources'). Destructive tools (delete, force_delete) have no confirmation or dry-run pattern.
Tool descriptions are generic and do not guide LLM selection. E.g., 'List <resource> records' does not explain when to use this vs nova_<resource>_<lens>_lens, or what filters/sorting capabilities exist. Descriptions should be 50-200 chars and answer WHAT, WHEN, and WHAT RETURNS.