Skip to main content
Glama

mcp-server-mcdev

MCP (Model Context Protocol) server for Accenture SFMC DevTools (mcdev): search the project wiki offline, learn .mcdevrc.json concepts (markets, marketList, createDeltaPkg, validations), walk component checklists (e.g. journeys), and list metadata types via the installed mcdev package.

Pair with mcp-server-sfmc for AMPscript / SSJS language validation and lookups.

Requirements

Node.js ^22.22.2 || >=24.15.0 is required. This server uses the npm mcdev 10.1.0 release line; no separate global mcdev installation is required.

Related MCP server: sfskills-mcp

MCP Registry

Registered as io.github.JoernBerkefeld/mcp-server-mcdev (quickstart). Registry hosts metadata only; the server runs locally via stdio.

Verify after publish:

curl "https://registry.modelcontextprotocol.io/v0.1/servers?search=io.github.JoernBerkefeld/mcp-server-mcdev"

CI publishes npm artifacts and registry metadata using GitHub OIDC (Actions doc) — see .github/workflows/npm-publish.yml. After npm publish succeeds, CI waits five minutes for npm registry propagation before publishing MCP Registry metadata.

Tools

Tool

Purpose

mcdev_search_docs

Search bundled sfmc-devtools wiki Markdown

mcdev_explain_config_key

Short explanations for config topics (markets, marketList, createDeltaPkg, …)

mcdev_component_checklist

Questions + dependent metadata types (journey, automation, …)

mcdev_list_metadata_types

Types from Mcdev.explainTypes() (silent JSON mode — safe for MCP stdio)

read_mcdev_project_config

Read .mcdevrc.json with credentials stripped (never reads .mcdev-auth.json)

Connecting AI clients

Register mcp-server-mcdev with the same patterns as other stdio MCP servers (package name in args).

VS Code (1.99+) — .vscode/mcp.json

{
  "servers": {
    "mcdev": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "mcp-server-mcdev@latest"]
    }
  }
}

Cursor — ~/.cursor/mcp.json or project .cursor/mcp.json

{
  "mcpServers": {
    "mcdev": {
      "command": "npx",
      "args": ["-y", "mcp-server-mcdev@latest"]
    }
  }
}

Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows) — use the same mcpServers object shape as Cursor.

Windsurf

~/.codeium/windsurf/mcp_config.json — same mcpServers shape as Cursor.

Global install (faster startup)

npm install -g mcp-server-mcdev

Then use "command": "mcp-server-mcdev", "args": [] (or the binary name from this package’s bin field).

SFMC DevTools VS Code extension

The SFMC DevTools extension documents optional MCP setup for AI-assisted mcdev workflows (see that repo’s README).

Refresh bundled wiki

Ordinary npm run bundle-wiki, builds, hooks and prepublish reuse the committed bundled/wiki without reading a sibling checkout. To deliberately refresh from the sibling ../sfmc-devtools.wiki checkout:

npm run bundle-wiki -- --refresh

For a reviewed or frozen source directory, set SFMC_DEVTOOLS_WIKI instead. Keep it set for subsequent builds, hooks and prepublish so every bundler invocation uses that same source:

export SFMC_DEVTOOLS_WIKI=/absolute/path/to/reviewed-wiki
npm run bundle-wiki
npm run build

In PowerShell, use $env:SFMC_DEVTOOLS_WIKI = 'F:\path\to\reviewed-wiki'. A missing or empty explicitly selected source fails rather than silently falling back to another checkout.

The bundled baseline is the mcdev 10.1.0 wiki commit d0f315d6a826fe7068494e2e46e8021e26ce0915 (a commit, not a wiki tag). Four pages retain explicitly pending/unreleased extension-bundled CLI and optional-Git annotations: Getting Started, Updating mcdev, Admin Commands, and Git-based deployments and CI/CD. These annotations are not claims that those features shipped with mcdev 10.1.0. Preserve or reconcile them explicitly when refreshing; copying the released wiki alone would discard them.

License

MIT © Jörn Berkefeld

Available Tools

5 tools
mcdev_component_checklistA

Return a structured checklist of questions and dependent metadata types for authoring or migrating SFMC components with mcdev (e.g. journey, automation).

ParametersJSON Schema
NameRequiredDescriptionDefault
componentYesComponent key, e.g. "journey", "automation".

TDQS

A3.6/5.0
Behavior3/5

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

No annotations exist, so the description carries the burden. It does disclose the return content (a checklist of questions plus dependent metadata types), which is the key behavioral fact and useful given there is no output schema. However, it says nothing about whether component keys are validated, what happens on an unknown key, or how dependency resolution is performed.

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?

A single sentence with the verb front-loaded and zero filler. Nothing could be removed without losing information.

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?

For a one-parameter read tool with full schema coverage, the description is nearly sufficient, and it partly compensates for the absent output schema by characterizing the return value. It stops short of telling the agent how to discover valid component keys, which is relevant given the sibling list.

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

Parameters3/5

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

Schema description coverage is 100% and the single `component` parameter is well documented, so the baseline is 3. The parenthetical examples ("journey, automation") merely repeat the schema's own examples and add no new semantics.

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

Purpose4/5

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

Names a specific verb ("Return") and a concrete resource ("structured checklist of questions and dependent metadata types"), scoped to authoring/migrating SFMC components. It does not explicitly distinguish itself from siblings like mcdev_list_metadata_types, which also deals with metadata types, so an agent must infer the boundary.

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 phrase "for authoring or migrating SFMC components" gives an implicit usage context, but there is no statement of when NOT to use it and no named alternative (e.g. use mcdev_list_metadata_types to enumerate valid keys). The agent is left to infer.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mcdev_explain_config_keyA

Explain a .mcdevrc.json concept (markets, marketList, createDeltaPkg, deployment, validations, etc.) with a short summary and wiki file hints.

ParametersJSON Schema
NameRequiredDescriptionDefault
topicYesTopic key or phrase. Known keys: build, createDeltaPkg, credentials, deployment, directories, marketList, markets, metaDataTypes, validations

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden, and it does disclose the return shape ('short summary and wiki file hints'), which is useful. It says nothing about permissions, rate limits, or whether explanations are static or project-aware, so gaps remain.

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

Conciseness4/5

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

One front-loaded sentence that states the action, the target, examples, and the output in a compact form. The example key list slightly duplicates the schema's known-keys list, which is minor redundancy.

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?

For a single-parameter, read-only explainer with 100% schema coverage and no output schema, the description is nearly sufficient: it names the target concept space and what comes back (summary plus wiki hints). Only the relationship to sibling lookup tools is left implicit.

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

Parameters3/5

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

Schema coverage is 100% and the single 'topic' parameter already documents its known keys in the schema description. The description's parenthetical key list adds no semantics beyond the schema, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb (Explain) and resource (.mcdevrc.json concept) and gives concrete example keys, so the agent knows exactly what it returns. It does not explicitly differentiate from siblings like read_mcdev_project_config or mcdev_search_docs, which keeps it from a 5.

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?

Usage is only implied: an agent can infer this is for learning what a config concept means, as opposed to read_mcdev_project_config (reads an actual project's values) or mcdev_search_docs (free-text docs search). No explicit when-to-use or when-not-to-use statement is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mcdev_list_metadata_typesB

List metadata types supported by the installed mcdev package (from Mcdev.explainTypes). Optional filter substring.

ParametersJSON Schema
NameRequiredDescriptionDefault
filterNoCase-insensitive filter on name or apiName.

TDQS

B3.4/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 the full burden. It usefully discloses that the list is derived from the installed package (Mcdev.explainTypes), meaning results vary by version, and 'List' implies a read operation. It does not state return shape, ordering, or whether the result is exhaustive.

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?

A single compact sentence that front-loads the action and resource, with the optional filter noted at the end. No filler, nothing redundant.

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?

For a no-required-param, read-only listing tool with full schema coverage, the definition plus source provenance is nearly sufficient. The one omission is any hint about what the returned type entries look like, which matters slightly since no output schema exists.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents the filter as 'Case-insensitive filter on name or apiName.' The description's 'Optional filter substring' merely restates this at a higher level and adds no new syntax or matching detail. Baseline 3 applies.

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

Purpose4/5

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

Specific verb+resource: lists metadata types, and identifies the data source (installed mcdev package / Mcdev.explainTypes). An agent can distinguish it from search_docs or explain_config_key, though it never explicitly names a sibling to sharpen the contrast.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites, and no alternatives named among the four sibling tools. The agent must infer that this is the discovery step for available metadata types before other mcdev operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mcdev_search_docsB

Search bundled sfmc-devtools wiki Markdown (from GitHub wiki) for mcdev configuration, commands, markets, createDeltaPkg, build, validations.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 8).
queryYesSearch query (keywords).

TDQS

B3.4/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 the full behavioral burden. It does usefully disclose the corpus origin (bundled Markdown sourced from the GitHub wiki), implying local/offline retrieval and possible staleness, but says nothing about ranking, snippet format, or freshness relative to the live wiki.

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

Conciseness4/5

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

A single front-loaded sentence with the verb and corpus stated first, followed by the topical scope. No filler, though the trailing keyword list reads more like tags than prose.

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

Completeness3/5

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

Adequate for a two-parameter search tool, but with no output schema and no annotations the description leaves the return shape (file paths? snippets? scores?) unstated and gives no hint about result freshness or whether the query supports multiple keywords. Minimum viable rather than complete.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters (query, limit with default 8 and max 25) are already documented in the schema. The description adds only topical keyword hints for what a query should contain; baseline 3 applies when the schema does the heavy lifting.

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

Purpose4/5

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

States a specific verb (Search) and a precisely bounded resource (bundled sfmc-devtools wiki Markdown from GitHub wiki), plus the topical coverage: configuration, commands, markets, createDeltaPkg, build, validations. This scope makes it distinguishable from topical siblings like mcdev_explain_config_key, though no sibling is named explicitly.

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 topic list implies when the tool is useful (questions about mcdev config, commands, build/validation), but there is no explicit when-to-use vs. when-not guidance and no routing to alternatives such as mcdev_explain_config_key for single-key questions. Usage is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_mcdev_project_configA

Read .mcdevrc.json from a workspace path (never reads .mcdev-auth.json). Use to inspect markets and marketList with the assistant.

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceRootYesAbsolute path to the mcdev project root containing `.mcdevrc.json`.

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description must carry the full behavioral burden. It usefully discloses the file being read and an important safety boundary ('never reads `.mcdev-auth.json`'), but it omits error behavior if the file is missing, whether the read is purely side-effect-free, and what the tool returns beyond a vague mention of inspecting markets and marketList.

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 well-formed sentences with zero waste. The core action is front-loaded, followed by a concise usage note. Every sentence contributes useful information.

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?

For a simple, single-parameter read tool with no output schema and no annotations, the description is nearly sufficient: it identifies the file, an exclusion, and a primary use case. It could be stronger by briefly stating the return shape or error behavior, but no major element needed for correct invocation is missing.

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

Parameters3/5

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

Schema description coverage is 100% for the single parameter `workspaceRoot`, and the schema already defines it as an absolute path to the project root. The description adds no syntax, format, or validation details beyond what the schema provides, so the baseline of 3 is appropriate.

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

Purpose4/5

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

The description states a specific verb and resource: 'Read `.mcdevrc.json` from a workspace path'. It also distinguishes the target from a related file by noting it 'never reads `.mcdev-auth.json`'. However, it does not differentiate its purpose from any of the listed sibling tools, so it falls short of a 5.

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 second sentence gives one intended use: 'Use to inspect markets and marketList with the assistant.' This implies when the tool is useful but provides no exclusions, prerequisites, or alternatives. There is no guidance on when to prefer this over siblings such as mcdev_explain_config_key.

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.

  1. 5 tool updatesv1.0.0
    • Changedmcdev_component_checklist1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedmcdev_explain_config_key1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedmcdev_list_metadata_types1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedmcdev_search_docs1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedread_mcdev_project_config1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
  2. 5 tool updatesv0.1.1
    • First observedmcdev_component_checklist
    • First observedmcdev_explain_config_key
    • First observedmcdev_list_metadata_types
    • First observedmcdev_search_docs
    • First observedread_mcdev_project_config

TDQS

A3.6/5.0

Scored across 5 tools

Disambiguation4/5

Each tool has a fairly distinct purpose: docs search, config-key explanation, component checklist, metadata-type listing, and config reading. The only mild overlap is between mcdev_search_docs and mcdev_explain_config_key, since both address configuration concepts, but the search-vs-explain distinction is reasonably clear.

Naming Consistency3/5

Four tools use a consistent mcdev_ prefix (mcdev_search_docs, mcdev_explain_config_key, etc.), but read_mcdev_project_config breaks the pattern by placing the prefix mid-name and using a different verb style. The mixed convention is still readable but not uniform.

Tool Count5/5

Five tools is well-scoped for a documentation and configuration helper server. Each tool covers a distinct facet of assisting with mcdev/SFMC development without redundancy.

Completeness4/5

The surface covers the key helper workflows: searching docs, explaining config, authoring checklists, listing metadata types, and reading project config. Minor gaps exist (e.g. no config validation or write/migration helper), but the read-only assistance scope is largely covered.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers