mcp-server-mcdev
This MCP server exposes the Accenture SFMC DevTools (mcdev) knowledge base and project config to AI clients over stdio, letting you search docs and inspect configuration offline.
mcdev_search_docs— search bundled sfmc-devtools wiki Markdown for configuration, commands, markets,createDeltaPkg, build, and validations (optional result limit, default 8).mcdev_explain_config_key— get short explanations plus wiki file hints for.mcdevrc.jsontopics (markets,marketList,createDeltaPkg,deployment,validations,directories,credentials, etc.).mcdev_component_checklist— retrieve structured questions and dependent metadata types for authoring/migrating components such asjourneyorautomation.mcdev_list_metadata_types— list metadata types supported by the installedmcdevpackage viaMcdev.explainTypes(), with an optional case-insensitive filter on name or apiName.read_mcdev_project_config— read.mcdevrc.jsonfrom a project root withcredentialsstripped; never reads.mcdev-auth.json.Runs locally, read-only, requires Node.js
^22.22.2 || >=24.15.0, and bundlesmcdev10.1.0 (no global install needed).
Integrates with Accenture SFMC DevTools (mcdev) by providing tools to search the bundled sfmc-devtools wiki offline, explain .mcdevrc.json configuration concepts such as markets, marketList, createDeltaPkg, and validations, return component checklists for metadata types like journeys and automations, list supported metadata types from the installed mcdev package, and read project .mcdevrc.json configuration with credentials stripped.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-server-mcdevsearch the wiki for data extensions"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 |
| Search bundled sfmc-devtools wiki Markdown |
| Short explanations for config topics ( |
| Questions + dependent metadata types ( |
| Types from |
| Read |
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-mcdevThen 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 -- --refreshFor 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 buildIn 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 toolsmcdev_component_checklistA
Return a structured checklist of questions and dependent metadata types for authoring or migrating SFMC components with mcdev (e.g. journey, automation).
| Name | Required | Description | Default |
|---|---|---|---|
| component | Yes | Component key, e.g. "journey", "automation". |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | Yes | Topic key or phrase. Known keys: build, createDeltaPkg, credentials, deployment, directories, marketList, markets, metaDataTypes, validations |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Case-insensitive filter on name or apiName. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 8). | |
| query | Yes | Search query (keywords). |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| workspaceRoot | Yes | Absolute path to the mcdev project root containing `.mcdevrc.json`. |
TDQS
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.
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.
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.
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.
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.
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.
5 tool updates
v1.0.0- Changed
mcdev_component_checklist1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
mcdev_explain_config_key1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
mcdev_list_metadata_types1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
mcdev_search_docs1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
read_mcdev_project_config1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
5 tool updates
v0.1.1- First observed
mcdev_component_checklist - First observed
mcdev_explain_config_key - First observed
mcdev_list_metadata_types - First observed
mcdev_search_docs - First observed
read_mcdev_project_config
TDQS
Scored across 5 tools
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.
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.
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.
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
Related MCP Connectors
Search your AI chat history (ChatGPT, Claude, Codex) from any MCP client. Remote, private, read-only
Hosted markdown project wikis your team's AI assistants read, search, and update over MCP.
Connect AI assistants to your GitHub-hosted Obsidian vault to seamlessly access, search, and analy…
Plan Salesforce deploys, open pull requests and trigger pipelines from your AI client.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables Salesforce developers to create code and configuration using local documentation, with optional semantic search.4 npm1MIT
- FlicenseNot gradedqualityCmaintenanceProvides live-org context for AI assistants with tools to search skills, agents, templates, decision trees, and query Salesforce metadata (Apex, LWC, objects, fields, etc.) via MCP.19-
- AlicenseAqualityDmaintenanceScrapes, indexes, and serves Salesforce Architect documentation locally, enabling fast offline RAG-powered search and retrieval for AI coding assistants.9MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to search and read offline documentation from synced libraries via MCP tools, providing hybrid keyword and semantic search without network calls.4 npm1MIT