# mcp-architector (npm · mcp-architector)

MCP server for architecture and system design. Store and manage project architecture locally.

- Trust score: 75/100 (medium)
- Change this week: +31
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- npm · `mcp-architector`: 75/100 (this document), [markdown](https://verifymcp.io/servers/thesharque-mcp-architector/mcp-architector.md), [page](https://verifymcp.io/servers/thesharque-mcp-architector/mcp-architector)

## Channel facts

- Registry: `npm`
- Package: `mcp-architector`
- Version: `1.9.0`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Supply Chain Security**: 87/100
  - No malware found by supply-chain analysis.
  - Only part of the dependency tree could be resolved (96 of 100), so this covers what we could see, not the whole tree.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (96 of 100), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 97/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to theSharque/mcp-architect).
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 66 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 56/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 4450 tokens (~158/item across 28 items; 28 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 23/100
  - Stability observed for 7 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 99% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add thesharque-mcp-architector -- npx -y mcp-architector
```

### Codex

```bash
codex mcp add thesharque-mcp-architector -- npx -y mcp-architector
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "thesharque-mcp-architector": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "mcp-architector"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add thesharque-mcp-architector --command npx --arg -y --arg mcp-architector
```

### Hermes

```yaml
mcp_servers:
  thesharque-mcp-architector:
    command: "npx"
    args: ["-y", "mcp-architector"]
```

### Other

```json
{
  "mcpServers": {
    "thesharque-mcp-architector": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-architector"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 75, +3)

- [functional improvement] Stability: unverified → 0.23

### 2026-08-02 (score 72, +53)

- [security improvement] Provenance: unverified → pass
- [security improvement] Malware scan: unverified → pass
- [security improvement] Install scripts: unverified → pass
- [security improvement] Known CVEs: unverified → partial
- [security] Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window).
- [security] The attested source repository moved: theSharque/mcp-architect
- [functional improvement] License: unverified → pass
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] MCP protocol: unverified → pass
- [functional improvement] Schema quality: unverified → good
- [functional] Licence: MIT

### 2026-07-31 (score 19, +13)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 6, −38)

- [security regression] Malware scan: pass → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional] First check of Schema quality: unverified

### 2026-07-27 (score 44)

First indexed and scored.

## MCP tools (28)

### `set-project-architecture` (~234 tokens)

Set Project Architecture

Creates or updates vertical module structure (components and dataFlow)—not horizontal facts. By default merges modules and dataFlow by name; omit dataFlow to keep existing flow. Use replaceModules or replaceDataFlow for full replace. For one module use set-module-details or set-module-data-flow. For bulk flow rebuild use rebuild-data-flow. Each new module still needs entries—use set-module-details with facts[] or set-entries after bulk structure. For APIs, domain terms, scripts use set-entry + get-slice—not this tool. If projectId is wrong, call list-projects first. Do not duplicate entry text in module descriptions.

Input parameters:

- `dataFlow` (object): Data flow between modules; omit to preserve existing
- `description` (string, required): Overall project description
- `modules` (array, required): List of modules in the project
- `projectId` (string): Project ID (defaults to normalized workdir)
- `replaceDataFlow` (boolean): Replace entire dataFlow (default false = merge by module name)
- `replaceModules` (boolean): Replace entire modules list (default false = merge by name)

Output parameters:

- `message` (string)
- `projectId` (string)

### `get-project-architecture` (~83 tokens)

Get Project Architecture

Returns vertical structure: project description, module list, dataFlow. Use for refactoring boundaries between components. For all HTTP endpoints or domain terms use get-slice—not this tool. For one module's files and examples use get-module-details. projectId from list-projects if unsure.

Input parameters:

- `projectId` (string): Project ID (defaults to normalized workdir)

Output parameters:

- `architecture`

### `list-projects` (~93 tokens)

List Projects

Lists all projects in ~/.mcp-architector with projectId, description, moduleCount, updatedAt, isCurrent. Call first when tools return empty/wrong project—the workspace path may normalize to a different id (e.g. _qs_my-app). Then pass projectId to other tools. Optional query filters by id or description.

Input parameters:

- `query` (string): Filter by substring in projectId or description

Output parameters:

- `projects` (array)

### `set-module-details` (~366 tokens)

Set Module Details

Creates or updates one vertical module (files, dependencies, dataFlow sync). IMPORTANT: Slices (api, domain, persistence) are built from entries, not from module text. When adding or updating a module, also add entries this module owns: pass facts[] (http-endpoint, entity, glossary, …) in this call (max 50 per call), or call set-entry / set-entries in 50-entry batches with refs.moduleName=<module name>. Max 50 entries per bulk call—split large catalogs into batches of ~50 to avoid oversized tool payloads. For full re-import: delete-entries once, then set-entries in 50-entry chunks; or replace-entries with deleteOrphans=false until the final batch (deleteOrphans=true). Without entries, get-slice will be empty for this module. After edits call validate to verify links. Does not replace other modules. Prefer over set-project-architecture for single-module edits.

Input parameters:

- `dependencies` (array): List of module dependencies
- `description` (string, required): Detailed description of the module
- `facts` (array): Horizontal facts for this module (APIs, entities, terms). Max 50 per call; use set-entries for more. Each becomes an entry with refs.moduleName set automatically.
- `files` (array): Files belonging to this module; add matching entry kinds per Controller/Repository
- `inputs` (string, required): What the module accepts as input
- `name` (string, required): Module name
- `notes` (string): Additional notes or comments
- `outputs` (string, required): What the module produces as output
- `projectId` (string): Project ID (defaults to normalized workdir)
- `usageExamples` (array): Usage examples for this module

Output parameters:

- `entriesCreated` (number)
- `entriesUpdated` (number)
- `entryIds` (array)
- `message` (string)
- `moduleId` (string)
- `reminder` (string)
- `suggestedKinds` (array)

### `get-module-details` (~108 tokens)

Get Module Details

Returns one module's full detail (files, dependencies, examples). Use when you know the module name from get-project-architecture or list-modules. If module has files but get-slice is empty, add entries with refs.moduleName=this module. For cross-cutting API/domain lists use get-slice. moduleName must match architecture exactly.

Input parameters:

- `moduleName` (string, required): Name of the module to retrieve
- `projectId` (string): Project ID (defaults to normalized workdir)

Output parameters:

- `module`

### `list-modules` (~74 tokens)

List All Modules

Lists module summaries from architecture (name, description)—vertical structure only. For horizontal facts (endpoints, tables, terms) use list-slices then get-slice. After edits run validate. Use module names in set-entry refs.moduleName.

Input parameters:

- `projectId` (string): Project ID (defaults to normalized workdir)

Output parameters:

- `modules` (array)

### `set-module-data-flow` (~118 tokens)

Set Module Data Flow

Patches dataFlow for one module (dependsOn is canonical; providesTo is recomputed). Syncs module file dependencies. Prefer over set-project-architecture for single-module graph edits.

Input parameters:

- `dataTransformation` (string): How data is transformed between modules
- `dependsOn` (array): Modules this module depends on
- `moduleName` (string, required): Module name
- `projectId` (string): Project ID (defaults to normalized workdir)
- `syncInverse` (boolean): Recompute providesTo from dependsOn (default true)

Output parameters:

- `message` (string)
- `moduleName` (string)

### `rebuild-data-flow` (~111 tokens)

Rebuild Data Flow

Rebuilds dataFlow for all modules from module file dependencies or existing dependsOn edges. Recomputes providesTo and optionally syncs module files. Use instead of editing architecture.json directly.

Input parameters:

- `projectId` (string): Project ID (defaults to normalized workdir)
- `pruneOrphans` (boolean): Remove invalid module references (default true)
- `source` (string): Source for dependsOn edges (default module-dependencies)
- `syncInverse` (boolean): Recompute providesTo (default true)

Output parameters:

- `edgesAdded` (number)
- `edgesRemoved` (number)
- `message` (string)
- `modulesUpdated` (number)

### `validate` (~300 tokens)

Validate Project

Run after set-project-architecture, set-module-details, set-entry, or set-entries. Returns a compact report (summary, stats, issues by kind)—no need to load the full project in the agent. Checks only known rules: dataFlow consistency, module↔entry links, module detail files, entry index drift, empty api/domain/persistence slices, entry slice coverage, optional module-too-few-entries when moduleEntryMin is set. Fix issues[] then call validate again.

Input parameters:

- `checkEmptySlices` (boolean): Warn when api/domain/persistence slices have zero entries but modules exist (default true)
- `checkEntryCoverage` (boolean): Check modules vs entries linkage (default true)
- `checkInverse` (boolean): Check providesTo vs dependsOn inverse (default true)
- `checkModuleDeps` (boolean): Check module.dependencies vs dataFlow.dependsOn (default true)
- `checkModuleEntryCounts` (boolean): Check module-too-few-entries when moduleEntryMin is set (default true)
- `checkSliceCoverage` (boolean): Check entries match at least one built-in or custom slice (default true)
- `checkStorage` (boolean): Check module files on disk and entry index drift (default true)
- `moduleEntryMin` (number): Min entries per module when count > 0; omit to disable module-too-few-entries
- `projectId` (string): Project ID (defaults to normalized workdir)

Output parameters:

- `checksRun` (array)
- `coverage` (object)
- `issueCount` (number)
- `issues` (array)
- `issuesByKind` (object)
- `projectId` (string)
- `stats` (object)
- `summary` (string)
- `valid` (boolean)

### `validate-architecture` (~222 tokens)

Validate Architecture

Alias for validate with the same checks. Prefer validate after edits. Legacy name kept for compatibility.

Input parameters:

- `checkEmptySlices` (boolean): Warn when api/domain/persistence slices have zero entries but modules exist (default true)
- `checkEntryCoverage` (boolean): Check modules vs entries linkage (default true)
- `checkInverse` (boolean): Check providesTo vs dependsOn inverse (default true)
- `checkModuleDeps` (boolean): Check module.dependencies vs dataFlow.dependsOn (default true)
- `checkModuleEntryCounts` (boolean): Check module-too-few-entries when moduleEntryMin is set (default true)
- `checkSliceCoverage` (boolean): Check entries match at least one built-in or custom slice (default true)
- `checkStorage` (boolean): Check module files on disk and entry index drift (default true)
- `moduleEntryMin` (number): Min entries per module when count > 0; omit to disable module-too-few-entries
- `projectId` (string): Project ID (defaults to normalized workdir)

Output parameters:

- `checksRun` (array)
- `coverage` (object)
- `issueCount` (number)
- `issues` (array)
- `issuesByKind` (object)
- `projectId` (string)
- `stats` (object)
- `summary` (string)
- `valid` (boolean)

### `rebuild-entry-index` (~62 tokens)

Rebuild Entry Index

Rebuilds entries/index.json from entry files on disk. Use when list-entries or get-slice miss entries that exist as files (index drift). Does not modify entry bodies.

Input parameters:

- `projectId` (string): Project ID (defaults to normalized workdir)

Output parameters:

- `itemCount` (number)
- `message` (string)

### `delete-module` (~68 tokens)

Delete Module

Deletes one module from architecture and its module detail file. Does not delete entries—remove those with delete-entry if needed. Does not delete custom slices.

Input parameters:

- `moduleName` (string, required): Name of the module to delete
- `projectId` (string): Project ID (defaults to normalized workdir)

Output parameters:

- `message` (string)

### `set-entry` (~345 tokens)

Set Entry

Entries need vertical structure: create modules via set-project-architecture / set-module-details before or when adding entries. Set refs.moduleName to an existing module name from list-modules. Run validate after edits to find entries-without-modules, entry-unlinked, or empty slices. Creates or updates one canonical project fact (entry). Use when you discovered a concrete fact while working. Do not use for module structure—use set-module-details. Do not copy module.description into summary; link via refs.moduleName only. Upsert: pass id to update, or omit id to match by kind+title or create new. Example: kind=http-endpoint, title='POST /orders', summary='Creates order', refs.moduleName='orders', refs.files=['src/OrderController.java'].

Input parameters:

- `id` (string): Entry uuid; omit to upsert by kind+title or create new
- `kind` (string, required): Free-form type: http-endpoint, glossary, entity, flow, script, godot-scene, etc. Builtin slice list-slices shows recommended kinds per sliceId
- `payload` (object): Kind-specific extra fields only, e.g. method/path for APIs, steps for flow
- `projectId` (string): Project id from list-projects if workspace path may differ; defaults to MCP_PROJECT_ID
- `refs` (object)
- `summary` (string, required): 1-2 sentences; not a module essay—only this fact
- `tags` (array): Optional labels for get-slice query filtering
- `title` (string, required): Short unique label for search, e.g. 'POST /orders' or 'Order'

Output parameters:

- `entryId` (string)
- `message` (string)
- `reminder` (string)
- `suggestedModuleNames` (array)
- `warning` (string)

### `set-entries` (~213 tokens)

Set Entries

Entries need vertical structure: create modules via set-project-architecture / set-module-details before or when adding entries. Set refs.moduleName to an existing module name from list-modules. Run validate after edits to find entries-without-modules, entry-unlinked, or empty slices. Max 50 entries per bulk call—split large catalogs into batches of ~50 to avoid oversized tool payloads. For full re-import: delete-entries once, then set-entries in 50-entry chunks; or replace-entries with deleteOrphans=false until the final batch (deleteOrphans=true). Set refs.moduleName per entry, or pass top-level moduleName as default. Prefer set-entries in 50-entry chunks over one huge replace-entries payload.

Input parameters:

- `entries` (array, required): Facts to upsert (max 50 per call; use multiple calls for larger catalogs)
- `moduleName` (string): Default refs.moduleName for entries that omit refs.moduleName
- `projectId` (string): Project id

Output parameters:

- `entriesCreated` (number)
- `entriesUpdated` (number)
- `entryIds` (array)
- `message` (string)
- `reminder` (string)
- `suggestedModuleNames` (array)
- `warning` (string)

### `delete-entries` (~125 tokens)

Delete Entries

Bulk delete entries matching kind/moduleName/tags filter. Requires confirm=true. Use before full re-import or to clear a module slice. Prefer replace-entries with deleteOrphans for idempotent sync.

Input parameters:

- `confirm` (boolean, required): Must be true to delete; safety guard against accidental bulk delete
- `kind` (string): Exact entry kind
- `kinds` (array): Entry kinds
- `moduleName` (string): Only entries linked to this module
- `projectId` (string): Project id
- `tags` (array): Entries having any of these tags

Output parameters:

- `deleted` (number)
- `message` (string)

### `replace-entries` (~232 tokens)

Replace Entries

Max 50 entries per bulk call—split large catalogs into batches of ~50 to avoid oversized tool payloads. For full re-import: delete-entries once, then set-entries in 50-entry chunks; or replace-entries with deleteOrphans=false until the final batch (deleteOrphans=true). Idempotent sync for up to 50 entries in scope; optionally delete orphans not in this batch. Match by upsertBy (default kind+title). For large catalogs use deleteOrphans=false on intermediate batches, true only on the last batch.

Input parameters:

- `deleteOrphans` (boolean): Delete scope entries missing from this batch (default true; set false until final batch)
- `entries` (array, required): Batch slice for this scope (max 50; repeat calls for larger catalogs)
- `moduleName` (string): Default refs.moduleName for entries without refs.moduleName
- `projectId` (string): Project id
- `scope` (object, required): Which existing entries participate in orphan deletion
- `upsertBy` (array): Fields used to match existing entries (default kind+title)

Output parameters:

- `created` (number)
- `deleted` (number)
- `entryIds` (array)
- `message` (string)
- `updated` (number)

### `import-entries` (~211 tokens)

Import Entries

Max 50 entries per bulk call—split large catalogs into batches of ~50 to avoid oversized tool payloads. For full re-import: delete-entries once, then set-entries in 50-entry chunks; or replace-entries with deleteOrphans=false until the final batch (deleteOrphans=true). Alias for replace-entries (mode=replace). Pass filter as scope; send up to 50 entries per call.

Input parameters:

- `deleteOrphans` (boolean): Delete scope entries missing from this batch (default true; set false until final batch)
- `entries` (array, required): Import batch (max 50 per call)
- `filter` (object, required): Scope filter (kind, moduleName, tags)
- `mode` (string, required): Only replace mode is supported (full slice sync)
- `moduleName` (string): Default refs.moduleName for entries without refs.moduleName
- `projectId` (string): Project id
- `upsertBy` (array): Match keys (default kind+title)

Output parameters:

- `created` (number)
- `deleted` (number)
- `entryIds` (array)
- `message` (string)
- `updated` (number)

### `validate-import` (~172 tokens)

Validate Import

Dry-run validation for a proposed import batch (max 50 entries). Max 50 entries per bulk call—split large catalogs into batches of ~50 to avoid oversized tool payloads. For full re-import: delete-entries once, then set-entries in 50-entry chunks; or replace-entries with deleteOrphans=false until the final batch (deleteOrphans=true). Checks duplicate upsert keys and unknown moduleName refs without writing.

Input parameters:

- `checkDuplicates` (boolean): Detect duplicate keys in batch (default true)
- `checkModuleExists` (boolean): Warn on unknown refs.moduleName (default true)
- `entries` (array, required): Proposed entries to validate (max 50)
- `projectId` (string): Project id
- `upsertBy` (array): Match keys (default kind+title)

Output parameters:

- `valid` (boolean)
- `warningCount` (number)
- `warnings` (array)

### `get-import-stats` (~43 tokens)

Get Import Stats

Returns entry counts grouped by kind, module, and tag. Use after replace-entries/import to verify catalog size.

Input parameters:

- `projectId` (string): Project id

Output parameters:

- `byKind` (object)
- `byModule` (object)
- `byTag` (object)
- `total` (number)

### `get-entry` (~95 tokens)

Get Entry

Returns one full entry by id. Use after list-entries or search-entries when you need payload and refs. Do not use for a full API list—use get-slice sliceId=api. Do not use for module structure—use get-module-details.

Input parameters:

- `id` (string, required): Entry id from list-entries or search-entries
- `projectId` (string): Project id; use list-projects if unsure

Output parameters:

- `entry`

### `delete-entry` (~65 tokens)

Delete Entry

Removes one entry and updates the index. Use when a fact is obsolete. Do not use to delete modules—use delete-module. Cannot delete slice definitions—use delete-slice.

Input parameters:

- `id` (string, required): Entry id to delete
- `projectId` (string): Project id

Output parameters:

- `message` (string)

### `list-entries` (~169 tokens)

List Entries

Returns the entry catalog (id, kind, title, tags, moduleName)—no payload. Supports kind/moduleName/tags filters and pagination (limit max 200). Unlinked entries lack moduleName; run validate after edits. For typed horizontal views use get-slice.

Input parameters:

- `kind` (string): Filter by exact kind, e.g. http-endpoint
- `limit` (number): Max items (default 50, max 200)
- `moduleName` (string): Filter by refs.moduleName
- `offset` (number): Skip first N matches (default 0)
- `projectId` (string): Project id
- `query` (string): Case-insensitive substring in title, kind, or tags
- `tags` (array): Filter entries having any of these tags

Output parameters:

- `entries` (array)
- `hasMore` (boolean)
- `offset` (number)
- `returned` (number)
- `total` (number)

### `search-entries` (~170 tokens)

Search Entries

Compact navigation search over entries by title, summary, kind, and tags. Returns snippet, matchedIn, slices, and moduleName per hit—use get-entry for full payload. Prefer get-slice when you know the category (api, domain). Filters (moduleName, kind, tags) narrow agent context. Default limit 10.

Input parameters:

- `kind` (string): Exact filter on entry kind
- `limit` (number): Max results per page (default 10, max 50)
- `moduleName` (string): Exact filter on refs.moduleName
- `offset` (number): Skip first N matches (default 0)
- `projectId` (string): Project id
- `query` (string, required): Search text
- `tags` (array): Filter entries having any of these tags

Output parameters:

- `hasMore` (boolean)
- `offset` (number)
- `results` (array)
- `returned` (number)
- `summary` (string)
- `total` (number)

### `list-slices` (~68 tokens)

List Slices

Lists built-in and custom slice views (filters over entries—not separate stored data). Empty slice = no entries with matching kind, not a missing slice definition. Use before get-slice to pick sliceId (api, domain, persistence, …).

Input parameters:

- `projectId` (string): Project id

Output parameters:

- `slices` (array)

### `get-slice` (~238 tokens)

Get Slice

Returns a horizontal project view: filtered entries transformed for agents. Empty slice = no entries with matching kind. Call list-slices first to pick sliceId. format=compact default; table for api/ui slice. Use offset/limit for pagination. Filter further by moduleName or tags.

Input parameters:

- `format` (string): compact=minimal list; detail=full entries; table=rows for API-like kinds (method/path columns)
- `includeModuleContext` (boolean): If true, attach module name+description from architecture when refs.moduleName is set
- `limit` (number): Max items (default 50, max 200)
- `moduleName` (string): Filter by refs.moduleName
- `offset` (number): Skip first N items after sort (default 0)
- `projectId` (string): Project id
- `query` (string): Further filter by substring in title, summary, kind, tags
- `sliceId` (string, required): Built-in id (api, ui, domain, persistence, …) or custom id from list-slices
- `tags` (array): Filter entries having any of these tags

Output parameters:

- `slice`

### `set-slice` (~162 tokens)

Set Slice

Saves a custom slice definition (filter only—no items). Items always live in entries. Use when built-in slices (api, domain, …) are not enough, e.g. filter kinds godot-scene + tag gameplay. Do not store duplicate entry text here. get-slice reads entries through this filter.

Input parameters:

- `description` (string): When an agent should use this slice
- `id` (string, required): Custom slice id (avoid colliding with built-in: api, domain, persistence, …)
- `kinds` (array): Include entries with any of these kind values
- `projectId` (string): Project id
- `tags` (array): Include entries having any of these tags
- `title` (string, required): Human-readable slice name

Output parameters:

- `message` (string)
- `sliceId` (string)

### `delete-slice` (~64 tokens)

Delete Slice

Deletes a custom slice definition only. Built-in slices (api, domain, …) cannot be deleted. Does not delete entries—use delete-entry.

Input parameters:

- `projectId` (string): Project id
- `sliceId` (string, required): Custom slice id from list-slices

Output parameters:

- `message` (string)

### `refactor-architecture` (~239 tokens)

Refactor Architecture

Preview or apply in-repo refactor sync to architector data (no workspace access). Default dryRun=true. Workflow: (1) scan with file/text to list hits, (2) build 1-3 mutation ops, (3) dryRun preview, (4) apply with dryRun=false and confirm=true. Mutations: move-file, replace-path-prefix, rename-text, patch-entry, merge-files, remove-file-ref. Orphan entries with empty refs.files and no entryIds are deleted. Does not change module names or dataFlow.

Input parameters:

- `confirm` (boolean): Required true when dryRun=false
- `dryRun` (boolean): Preview only (default true). Set false with confirm=true to apply
- `limit` (number): Max changes/hits per page (default 15, max 50)
- `offset` (number): Pagination offset (default 0)
- `operations` (array, required): Refactor operations (max 10 per call)
- `projectId` (string): Project ID (defaults to normalized workdir)
- `scope` (object): Optional filter: moduleName, kinds, tags

Output parameters:

- `changes` (array)
- `dryRun` (boolean)
- `hasMore` (boolean)
- `hits` (array)
- `offset` (number)
- `stats` (object)
- `summary` (string)
- `warnings` (array)

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/thesharque-mcp-architector/mcp-architector#diagnostics

## Score history

- 2026-08-03: 75
- 2026-08-02: 72
- 2026-08-01: 19
- 2026-07-31: 19
- 2026-07-30: 6
- 2026-07-28: 44
- 2026-07-27: 44

## Links

- npm package: https://www.npmjs.com/package/mcp-architector
- Socket report: https://socket.dev/npm/package/mcp-architector
- Repository: https://github.com/theSharque/mcp-architect
- Changelog RSS feed: https://verifymcp.io/servers/thesharque-mcp-architector/mcp-architector/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/thesharque-mcp-architector/mcp-architector/changelog.json
- HTML version of this page: https://verifymcp.io/servers/thesharque-mcp-architector/mcp-architector
