Skip to main content
Glama

Marvin MCP

Official Model Context Protocol server for Marvin CMS.

marvin-mcp is the LLM-facing adapter for Marvin. It talks directly to @inneropen/marvin-sdk; it does not shell out to marvin-cli and it does not recreate Marvin API behavior.

MCP Client
    ↓ stdio
marvin-mcp
    ↓
@inneropen/marvin-sdk
    ↓ HTTPS
Marvin API

Project Relationship

marvin-cli ──┐
             ├──> marvin-sdk ──> Marvin API
marvin-mcp ──┘

marvin-cli is for humans and shells. marvin-mcp is for MCP-compatible AI clients. marvin-sdk remains the canonical programmatic Marvin client.

Related MCP server: Directus MCP Server

Installation

After publication:

npx -y @inneropen/marvin-mcp

For local development:

npm install
npm run dev

Configuration

Required:

MARVIN_API_URL
MARVIN_SITE_CLIENT_TOKEN
MARVIN_WORKSPACE_SLUG

Optional:

MARVIN_MCP_LOG_LEVEL=silent|error|warn|info|debug
MARVIN_MCP_READ_ONLY=true|false

Default: MARVIN_MCP_READ_ONLY is true. Current SDK-backed mutation tools are not implemented, so write tools are absent either way in this first release.

Logs go to stderr. Tokens are never printed intentionally and are redacted from structured logs/errors.

Tools

Self-description:

Tool

Purpose

marvin_describe_capabilities

Describe Marvin MCP capabilities and SDK capability support

Read tools:

Tool

Purpose

marvin_get_workspace

Get workspace info and site settings

marvin_list_entries

List entries with entryType, collection, limit, offset

marvin_get_entry

Get one entry by slug

marvin_list_collections

List collections

marvin_get_collection

Get one collection by slug

marvin_get_collection_entries

Get entries in a collection

marvin_list_assets

List asset metadata

marvin_list_resources

List reusable resources

marvin_get_resource

Get one resource by slug

No destructive or generic API proxy tools are exposed.

Resources

URI

Purpose

marvin://capabilities

Capability and SDK inventory

marvin://workspace

Workspace info

marvin://workspace/site

Public site settings

marvin://entry-types

Entry types inferred from listed entries

marvin://collections

Collection summaries

marvin://resources

Resource summaries

marvin://entries/{slug}

Entry details

marvin://collections/{slug}

Collection details

marvin://resources/{slug}

Resource details

Prompts

Prompt

Purpose

review_workspace_structure

Inspect structure and recommend non-destructive improvements

create_site_page

Guide drafting a page without automatic publishing

prepare_release_update

Draft a release/update content item

audit_content_model

Audit entries, collections, resources, and site settings

review_collections

Review collection organization

review_assets

Review asset metadata quality

review_resources

Review reusable resources

Capabilities

Marvin MCP is organized by Marvin capability under src/capabilities/*. Each capability owns its tools, resources, and prompts.

Capability

MCP Surface

Workspace

marvin_get_workspace, marvin://workspace, marvin://workspace/site

Entries

marvin_list_entries, marvin_get_entry, marvin://entries/{slug}

Entry Types

marvin://entry-types, audit_content_model

Collections

collection tools, marvin://collections, marvin://collections/{slug}

Assets

marvin_list_assets, review_assets

Resources

resource tools, marvin://resources, marvin://resources/{slug}

Capability

marvin_describe_capabilities, marvin://capabilities

The SDK capability inventory and architecture review are documented in docs/CAPABILITY_INVENTORY.md.

Client Examples

Generic stdio MCP client:

{
  "mcpServers": {
    "marvin": {
      "command": "npx",
      "args": ["-y", "@inneropen/marvin-mcp"],
      "env": {
        "MARVIN_API_URL": "https://marvin.example.com",
        "MARVIN_SITE_CLIENT_TOKEN": "${MARVIN_SITE_CLIENT_TOKEN}",
        "MARVIN_WORKSPACE_SLUG": "example-workspace",
        "MARVIN_MCP_READ_ONLY": "true"
      }
    }
  }
}

Claude Code and other clients use the same command/env shape, though exact config file locations differ by client.

Development

npm run dev
npm run build
npm run typecheck
npm run lint
npm test

MCP Inspector:

npm run inspect

Integration tests are opt-in and read-only:

MARVIN_MCP_INTEGRATION_TESTS=true npm test

They also require MARVIN_API_URL, MARVIN_SITE_CLIENT_TOKEN, and MARVIN_WORKSPACE_SLUG.

Capability Matrix

Capability

SDK support

Authentication

MCP mapping

Read/write

Implemented

Limitations

Workspace info/site settings

@inneropen/marvin-sdk/publish getWorkspaceInfo(), getSite()

Site token

Tool and resources

Read

Yes

API credentials enforce access

List/get entries

Publishing getEntries(), getEntry(slug)

Site token

Tools and marvin://entries/{slug}

Read

Yes

SDK source does not send status; backend returns published entries. In 2.0.0-next.17, missing entries return null and are reported as not found.

Collections

Publishing getCollections(), getCollection(slug), getCollectionEntries(slug)

Site token

Tools and resources

Read

Yes

Missing collections return null; collection entries depend on collection detail payload.

Assets

Publishing getAssets(options)

Site token

marvin_list_assets

Read

Yes

Metadata only; no binary payloads

Resources

Publishing getResources(), getResource(slug)

Site token

Tools and resources

Read

Yes

Resource entries method exists but is not a first-release tool

Entry types

Platform SDK has entryTypes; publishing SDK has no list method

Platform user auth

marvin://entry-types

Read

Partial

Inferred from entries in first release

Platform entries/assets/forms/etc.

@inneropen/marvin-sdk/platform modules expose CRUD

User token/session

Future editor capabilities

Read/write

No

Requires auth, permission-aware registration, and mutation safety design

Administration

Platform admin/user/workspace/API client/webhook/task modules

User token/session

Future admin capabilities

Read/write

No

High-impact/destructive and secret-adjacent operations are intentionally excluded

SDK Capability Gaps

Current @inneropen/marvin-sdk 2.0.0-next.17 publishing client is read-focused. The installed declarations expose no create, update, add-to-collection, or publish entry methods, so this MCP server does not implement write tools and does not bypass the SDK with direct fetch() calls.

This prerelease returns null for missing entries and collections. The MCP server translates those results into structured not-found errors.

The SDK does not expose permission metadata for permission-aware discovery. First release behavior relies on MARVIN_MCP_READ_ONLY and Marvin API authorization failures.

Security

Security decisions:

  • Read-only mode defaults to true.

  • No arbitrary HTTP request, shell, SQL, migration, plugin, or secret-management tools.

  • No generic marvin_api_request.

  • Inputs are validated with Zod.

  • Outputs are normalized into JSON-safe structures.

  • Asset storage internals and tokens are not exposed.

  • Prompts never instruct automatic publishing.

  • Final authorization is enforced by Marvin API credentials.

Planned Streamable HTTP

The first transport is stdio. Server creation, capability registration, and transport connection are separated so Streamable HTTP can be added later without rewriting the tool/resource/prompt layer.

Available Tools

1 tool
marvin_describe_capabilitiesDescribe Marvin capabilitiesA

Explain the Marvin capabilities exposed by this MCP server and summarize the SDK capability inventory.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It indicates the tool explains and summarizes, but does not disclose output format, comprehensiveness, or any side effects. For a read-only informational tool, this is adequate but could be more specific.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences with no unnecessary words. It is front-loaded with the primary action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters, no output schema, and a simple informational purpose, the description is largely complete. It could mention that the output is a text summary, but overall it is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters and the schema coverage is 100% (trivially). The description adds no parameter information, but according to guidelines, baseline is 4 for zero parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses specific verbs ('Explain', 'summarize') and clearly identifies the resource ('Marvin capabilities', 'SDK capability inventory'). It is distinct from sibling tools which are specific get/list operations for individual resources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is used for obtaining an overview of capabilities, but does not explicitly state when to use it over siblings or provide any prerequisites or exclusions.

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.

  1. 9 tool updatesv1.1.0
    • Removedmarvin_get_collection
    • Removedmarvin_get_collection_entries
    • Removedmarvin_get_entry
    • Removedmarvin_get_resource
    • Removedmarvin_get_workspace
    • Removedmarvin_list_assets
    • Removedmarvin_list_collections
    • Removedmarvin_list_entries
    • Removedmarvin_list_resources
  2. 10 tool updatesv0.1.0
    • First observedmarvin_describe_capabilities
    • First observedmarvin_get_collection
    • First observedmarvin_get_collection_entries
    • First observedmarvin_get_entry
    • First observedmarvin_get_resource
    • First observedmarvin_get_workspace
    • First observedmarvin_list_assets
    • First observedmarvin_list_collections
    • First observedmarvin_list_entries
    • First observedmarvin_list_resources

TDQS

A3.9/5.0
Disambiguation5/5

With only one tool, there is no possibility of confusion between tools. The single tool has a clear, distinct purpose.

Naming Consistency5/5

The sole tool name 'marvin_describe_capabilities' follows a clear verb_noun pattern in snake_case, so there is no inconsistency.

Tool Count3/5

The server has only one tool, which is borderline for typical MCP servers. It could be acceptable if the server's sole purpose is introspection, but it feels thin for a general-purpose server.

Completeness1/5

The server only provides a single tool that describes capabilities, with no tools to actually perform any actions. This is severely incomplete for a functional MCP server.

Maintenance

ActivitySlowing
ResponsivenessSyncing

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

Related MCP Servers

Latest Blog Posts

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/InnerOpen/marvin-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server