@dollhousemcp/mcp-server 2.0.0-rc.6 โ†’ 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (229) hide show
  1. package/CHANGELOG.md +52 -61
  2. package/README.github.md +2 -2
  3. package/README.md +284 -224
  4. package/README.md.backup +284 -224
  5. package/README.npm.md +284 -224
  6. package/dist/cache/LRUCache.d.ts +3 -0
  7. package/dist/cache/LRUCache.d.ts.map +1 -1
  8. package/dist/cache/LRUCache.js +36 -26
  9. package/dist/config/env.d.ts +14 -4
  10. package/dist/config/env.d.ts.map +1 -1
  11. package/dist/config/env.js +20 -6
  12. package/dist/di/Container.d.ts +21 -0
  13. package/dist/di/Container.d.ts.map +1 -1
  14. package/dist/di/Container.js +250 -53
  15. package/dist/elements/BaseElement.d.ts.map +1 -1
  16. package/dist/elements/BaseElement.js +5 -10
  17. package/dist/elements/base/BaseElementManager.d.ts +22 -0
  18. package/dist/elements/base/BaseElementManager.d.ts.map +1 -1
  19. package/dist/elements/base/BaseElementManager.js +47 -7
  20. package/dist/elements/memories/Memory.d.ts +1 -0
  21. package/dist/elements/memories/Memory.d.ts.map +1 -1
  22. package/dist/elements/memories/Memory.js +12 -8
  23. package/dist/elements/memories/MemoryManager.d.ts.map +1 -1
  24. package/dist/elements/memories/MemoryManager.js +23 -42
  25. package/dist/elements/memories/MemorySearchIndex.js +2 -2
  26. package/dist/generated/version.d.ts +2 -2
  27. package/dist/generated/version.d.ts.map +1 -1
  28. package/dist/generated/version.js +3 -3
  29. package/dist/handlers/EnhancedIndexHandler.js +6 -6
  30. package/dist/handlers/element-crud/listElements.d.ts +2 -0
  31. package/dist/handlers/element-crud/listElements.d.ts.map +1 -1
  32. package/dist/handlers/element-crud/listElements.js +3 -1
  33. package/dist/handlers/mcp-aql/Gatekeeper.d.ts.map +1 -1
  34. package/dist/handlers/mcp-aql/Gatekeeper.js +23 -17
  35. package/dist/handlers/mcp-aql/MCPAQLHandler.d.ts +14 -0
  36. package/dist/handlers/mcp-aql/MCPAQLHandler.d.ts.map +1 -1
  37. package/dist/handlers/mcp-aql/MCPAQLHandler.js +110 -14
  38. package/dist/handlers/mcp-aql/OperationRouter.d.ts.map +1 -1
  39. package/dist/handlers/mcp-aql/OperationRouter.js +13 -1
  40. package/dist/handlers/mcp-aql/OperationSchema.d.ts +7 -0
  41. package/dist/handlers/mcp-aql/OperationSchema.d.ts.map +1 -1
  42. package/dist/handlers/mcp-aql/OperationSchema.js +52 -1
  43. package/dist/handlers/mcp-aql/evaluatePermission.d.ts +53 -0
  44. package/dist/handlers/mcp-aql/evaluatePermission.d.ts.map +1 -0
  45. package/dist/handlers/mcp-aql/evaluatePermission.js +132 -0
  46. package/dist/handlers/mcp-aql/policies/ToolClassification.d.ts.map +1 -1
  47. package/dist/handlers/mcp-aql/policies/ToolClassification.js +2 -1
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +3 -3
  50. package/dist/logging/LogHooks.js +11 -11
  51. package/dist/logging/LogManager.d.ts +0 -2
  52. package/dist/logging/LogManager.d.ts.map +1 -1
  53. package/dist/logging/LogManager.js +1 -3
  54. package/dist/logging/sinks/MemoryLogSink.d.ts +2 -0
  55. package/dist/logging/sinks/MemoryLogSink.d.ts.map +1 -1
  56. package/dist/logging/sinks/MemoryLogSink.js +12 -3
  57. package/dist/logging/types.d.ts +0 -2
  58. package/dist/logging/types.d.ts.map +1 -1
  59. package/dist/logging/types.js +1 -1
  60. package/dist/metrics/GatekeeperMetricsTracker.d.ts +32 -0
  61. package/dist/metrics/GatekeeperMetricsTracker.d.ts.map +1 -0
  62. package/dist/metrics/GatekeeperMetricsTracker.js +42 -0
  63. package/dist/metrics/MetricsManager.d.ts +47 -0
  64. package/dist/metrics/MetricsManager.d.ts.map +1 -0
  65. package/dist/metrics/MetricsManager.js +232 -0
  66. package/dist/metrics/OperationMetricsTracker.d.ts +32 -0
  67. package/dist/metrics/OperationMetricsTracker.d.ts.map +1 -0
  68. package/dist/metrics/OperationMetricsTracker.js +53 -0
  69. package/dist/metrics/collectors/DefaultElementProviderCollector.d.ts +27 -0
  70. package/dist/metrics/collectors/DefaultElementProviderCollector.d.ts.map +1 -0
  71. package/dist/metrics/collectors/DefaultElementProviderCollector.js +69 -0
  72. package/dist/metrics/collectors/FileLockManagerCollector.d.ts +16 -0
  73. package/dist/metrics/collectors/FileLockManagerCollector.d.ts.map +1 -0
  74. package/dist/metrics/collectors/FileLockManagerCollector.js +51 -0
  75. package/dist/metrics/collectors/GatekeeperMetricsCollector.d.ts +16 -0
  76. package/dist/metrics/collectors/GatekeeperMetricsCollector.d.ts.map +1 -0
  77. package/dist/metrics/collectors/GatekeeperMetricsCollector.js +76 -0
  78. package/dist/metrics/collectors/LRUCacheCollector.d.ts +18 -0
  79. package/dist/metrics/collectors/LRUCacheCollector.d.ts.map +1 -0
  80. package/dist/metrics/collectors/LRUCacheCollector.js +95 -0
  81. package/dist/metrics/collectors/OperationMetricsCollector.d.ts +16 -0
  82. package/dist/metrics/collectors/OperationMetricsCollector.d.ts.map +1 -0
  83. package/dist/metrics/collectors/OperationMetricsCollector.js +80 -0
  84. package/dist/metrics/collectors/OperationalTelemetryCollector.d.ts +17 -0
  85. package/dist/metrics/collectors/OperationalTelemetryCollector.d.ts.map +1 -0
  86. package/dist/metrics/collectors/OperationalTelemetryCollector.js +26 -0
  87. package/dist/metrics/collectors/PerformanceMonitorCollector.d.ts +14 -0
  88. package/dist/metrics/collectors/PerformanceMonitorCollector.d.ts.map +1 -0
  89. package/dist/metrics/collectors/PerformanceMonitorCollector.js +141 -0
  90. package/dist/metrics/collectors/SecurityMonitorCollector.d.ts +21 -0
  91. package/dist/metrics/collectors/SecurityMonitorCollector.d.ts.map +1 -0
  92. package/dist/metrics/collectors/SecurityMonitorCollector.js +56 -0
  93. package/dist/metrics/collectors/SecurityTelemetryCollector.d.ts +15 -0
  94. package/dist/metrics/collectors/SecurityTelemetryCollector.d.ts.map +1 -0
  95. package/dist/metrics/collectors/SecurityTelemetryCollector.js +112 -0
  96. package/dist/metrics/collectors/TriggerMetricsTrackerCollector.d.ts +16 -0
  97. package/dist/metrics/collectors/TriggerMetricsTrackerCollector.d.ts.map +1 -0
  98. package/dist/metrics/collectors/TriggerMetricsTrackerCollector.js +26 -0
  99. package/dist/metrics/collectors/index.d.ts +11 -0
  100. package/dist/metrics/collectors/index.d.ts.map +1 -0
  101. package/dist/metrics/collectors/index.js +11 -0
  102. package/dist/metrics/sinks/MemoryMetricsSink.d.ts +22 -0
  103. package/dist/metrics/sinks/MemoryMetricsSink.d.ts.map +1 -0
  104. package/dist/metrics/sinks/MemoryMetricsSink.js +121 -0
  105. package/dist/metrics/types.d.ts +98 -0
  106. package/dist/metrics/types.d.ts.map +1 -0
  107. package/dist/metrics/types.js +24 -0
  108. package/dist/portfolio/DefaultElementProvider.d.ts.map +1 -1
  109. package/dist/portfolio/DefaultElementProvider.js +1 -7
  110. package/dist/portfolio/EnhancedIndexManager.d.ts.map +1 -1
  111. package/dist/portfolio/EnhancedIndexManager.js +18 -18
  112. package/dist/portfolio/NLPScoringManager.d.ts.map +1 -1
  113. package/dist/portfolio/NLPScoringManager.js +5 -9
  114. package/dist/portfolio/PortfolioIndexManager.js +2 -2
  115. package/dist/portfolio/RelationshipManager.js +2 -2
  116. package/dist/portfolio/VerbTriggerManager.d.ts.map +1 -1
  117. package/dist/portfolio/VerbTriggerManager.js +5 -19
  118. package/dist/portfolio/config/IndexConfig.d.ts.map +1 -1
  119. package/dist/portfolio/config/IndexConfig.js +1 -12
  120. package/dist/portfolio/enhanced-index/ElementDefinitionBuilder.d.ts.map +1 -1
  121. package/dist/portfolio/enhanced-index/ElementDefinitionBuilder.js +3 -15
  122. package/dist/portfolio/enhanced-index/SemanticRelationshipService.d.ts.map +1 -1
  123. package/dist/portfolio/enhanced-index/SemanticRelationshipService.js +2 -16
  124. package/dist/portfolio/types/RelationshipTypes.d.ts.map +1 -1
  125. package/dist/portfolio/types/RelationshipTypes.js +3 -17
  126. package/dist/security/audit/config/suppressions.d.ts.map +1 -1
  127. package/dist/security/audit/config/suppressions.js +36 -8
  128. package/dist/security/constants.d.ts.map +1 -1
  129. package/dist/security/constants.js +10 -6
  130. package/dist/security/fileLockManager.d.ts.map +1 -1
  131. package/dist/security/fileLockManager.js +8 -6
  132. package/dist/security/secureYamlParser.d.ts.map +1 -1
  133. package/dist/security/secureYamlParser.js +1 -13
  134. package/dist/security/securityMonitor.d.ts +2 -1
  135. package/dist/security/securityMonitor.d.ts.map +1 -1
  136. package/dist/security/securityMonitor.js +14 -3
  137. package/dist/security/telemetry/SecurityTelemetry.d.ts +16 -0
  138. package/dist/security/telemetry/SecurityTelemetry.d.ts.map +1 -1
  139. package/dist/security/telemetry/SecurityTelemetry.js +30 -2
  140. package/dist/security/tokenManager.d.ts +3 -0
  141. package/dist/security/tokenManager.d.ts.map +1 -1
  142. package/dist/security/tokenManager.js +13 -5
  143. package/dist/security/validation/BackgroundValidator.d.ts.map +1 -1
  144. package/dist/security/validation/BackgroundValidator.js +7 -7
  145. package/dist/server/startup.d.ts.map +1 -1
  146. package/dist/server/startup.js +8 -24
  147. package/dist/server/tools/MCPAQLTools.js +4 -1
  148. package/dist/services/ActivationStore.d.ts.map +1 -1
  149. package/dist/services/ActivationStore.js +9 -3
  150. package/dist/services/FileWatchService.d.ts +1 -0
  151. package/dist/services/FileWatchService.d.ts.map +1 -1
  152. package/dist/services/FileWatchService.js +83 -48
  153. package/dist/services/MetadataService.d.ts.map +1 -1
  154. package/dist/services/MetadataService.js +7 -2
  155. package/dist/services/query/ElementQueryService.d.ts.map +1 -1
  156. package/dist/services/query/ElementQueryService.js +1 -41
  157. package/dist/services/query/PaginationService.d.ts.map +1 -1
  158. package/dist/services/query/PaginationService.js +1 -14
  159. package/dist/services/query/SortService.d.ts.map +1 -1
  160. package/dist/services/query/SortService.js +1 -6
  161. package/dist/services/validation/ValidationService.d.ts.map +1 -1
  162. package/dist/services/validation/ValidationService.js +3 -8
  163. package/dist/storage/ElementStorageLayer.d.ts.map +1 -1
  164. package/dist/storage/ElementStorageLayer.js +5 -2
  165. package/dist/storage/MemoryStorageLayer.d.ts.map +1 -1
  166. package/dist/storage/MemoryStorageLayer.js +5 -2
  167. package/dist/telemetry/OperationalTelemetry.js +2 -2
  168. package/dist/utils/EventDeduplicator.d.ts +44 -0
  169. package/dist/utils/EventDeduplicator.d.ts.map +1 -0
  170. package/dist/utils/EventDeduplicator.js +93 -0
  171. package/dist/utils/FileLock.d.ts.map +1 -1
  172. package/dist/utils/FileLock.js +1 -9
  173. package/dist/utils/PerformanceMonitor.d.ts.map +1 -1
  174. package/dist/utils/PerformanceMonitor.js +5 -5
  175. package/dist/utils/SlidingWindowRateLimiter.d.ts +13 -0
  176. package/dist/utils/SlidingWindowRateLimiter.d.ts.map +1 -0
  177. package/dist/utils/SlidingWindowRateLimiter.js +23 -0
  178. package/dist/web/console/IngestRoutes.d.ts +84 -0
  179. package/dist/web/console/IngestRoutes.d.ts.map +1 -0
  180. package/dist/web/console/IngestRoutes.js +252 -0
  181. package/dist/web/console/LeaderElection.d.ts +89 -0
  182. package/dist/web/console/LeaderElection.d.ts.map +1 -0
  183. package/dist/web/console/LeaderElection.js +205 -0
  184. package/dist/web/console/LeaderForwardingSink.d.ts +61 -0
  185. package/dist/web/console/LeaderForwardingSink.d.ts.map +1 -0
  186. package/dist/web/console/LeaderForwardingSink.js +197 -0
  187. package/dist/web/console/SessionNames.d.ts +46 -0
  188. package/dist/web/console/SessionNames.d.ts.map +1 -0
  189. package/dist/web/console/SessionNames.js +257 -0
  190. package/dist/web/console/UnifiedConsole.d.ts +64 -0
  191. package/dist/web/console/UnifiedConsole.d.ts.map +1 -0
  192. package/dist/web/console/UnifiedConsole.js +119 -0
  193. package/dist/web/contentPipeline.d.ts +58 -0
  194. package/dist/web/contentPipeline.d.ts.map +1 -0
  195. package/dist/web/contentPipeline.js +112 -0
  196. package/dist/web/portDiscovery.d.ts +58 -0
  197. package/dist/web/portDiscovery.d.ts.map +1 -0
  198. package/dist/web/portDiscovery.js +143 -0
  199. package/dist/web/public/app.js +148 -60
  200. package/dist/web/public/logs.js +638 -0
  201. package/dist/web/public/metrics.js +682 -0
  202. package/dist/web/public/permissions.js +394 -0
  203. package/dist/web/public/sessions.js +369 -0
  204. package/dist/web/routes/healthRoutes.d.ts +16 -0
  205. package/dist/web/routes/healthRoutes.d.ts.map +1 -0
  206. package/dist/web/routes/healthRoutes.js +29 -0
  207. package/dist/web/routes/logRoutes.d.ts +18 -0
  208. package/dist/web/routes/logRoutes.d.ts.map +1 -0
  209. package/dist/web/routes/logRoutes.js +126 -0
  210. package/dist/web/routes/metricsRoutes.d.ts +17 -0
  211. package/dist/web/routes/metricsRoutes.d.ts.map +1 -0
  212. package/dist/web/routes/metricsRoutes.js +90 -0
  213. package/dist/web/routes/permissionRoutes.d.ts +16 -0
  214. package/dist/web/routes/permissionRoutes.d.ts.map +1 -0
  215. package/dist/web/routes/permissionRoutes.js +133 -0
  216. package/dist/web/routes.d.ts.map +1 -1
  217. package/dist/web/routes.js +309 -339
  218. package/dist/web/server.d.ts +21 -1
  219. package/dist/web/server.d.ts.map +1 -1
  220. package/dist/web/server.js +42 -4
  221. package/dist/web/sinks/WebSSELogSink.d.ts +15 -0
  222. package/dist/web/sinks/WebSSELogSink.d.ts.map +1 -0
  223. package/dist/web/sinks/WebSSELogSink.js +22 -0
  224. package/dist/web/sinks/WebSSEMetricsSink.d.ts +16 -0
  225. package/dist/web/sinks/WebSSEMetricsSink.d.ts.map +1 -0
  226. package/dist/web/sinks/WebSSEMetricsSink.js +23 -0
  227. package/package.json +2 -2
  228. package/server.json +2 -2
  229. package/dist/web/public/public/app.js +0 -1878
package/README.md CHANGED
@@ -1,313 +1,373 @@
1
1
  # DollhouseMCP
2
2
 
3
3
  [![npm version](https://img.shields.io/npm/v/@dollhousemcp/mcp-server.svg)](https://www.npmjs.com/package/@dollhousemcp/mcp-server)
4
- [![MCP Compatible](https://img.shields.io/badge/MCP-Compatible-green)](https://modelcontextprotocol.io)
5
4
  [![License: AGPL-3.0](https://img.shields.io/badge/License-AGPL--3.0-blue.svg)](https://www.gnu.org/licenses/agpl-3.0)
5
+ [![MCP Compatible](https://img.shields.io/badge/MCP-Compatible-green)](https://modelcontextprotocol.io)
6
6
  [![Core Build & Test](https://github.com/DollhouseMCP/mcp-server/actions/workflows/core-build-test.yml/badge.svg)](https://github.com/DollhouseMCP/mcp-server/actions/workflows/core-build-test.yml)
7
+ [![9600+ Tests](https://img.shields.io/badge/Tests-9600%2B-brightgreen)](https://github.com/DollhouseMCP/mcp-server)
8
+ [![GitHub Views](https://komarev.com/ghpvc/?username=DollhouseMCP&repo=mcp-server&label=Views&style=flat)](https://github.com/DollhouseMCP/mcp-server)
9
+
10
+ [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=DollhouseMCP_mcp-server&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=DollhouseMCP_mcp-server)
11
+ [![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=DollhouseMCP_mcp-server&metric=security_rating)](https://sonarcloud.io/summary/new_code?id=DollhouseMCP_mcp-server)
12
+ [![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=DollhouseMCP_mcp-server&metric=sqale_rating)](https://sonarcloud.io/summary/new_code?id=DollhouseMCP_mcp-server)
13
+ [![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=DollhouseMCP_mcp-server&metric=reliability_rating)](https://sonarcloud.io/summary/new_code?id=DollhouseMCP_mcp-server)
14
+ [![Windows](https://img.shields.io/badge/Windows-โœ“-0078D4?logo=windows&logoColor=white)](https://github.com/DollhouseMCP/mcp-server/actions/workflows/core-build-test.yml)
15
+ [![macOS](https://img.shields.io/badge/macOS-โœ“-000000?logo=apple&logoColor=white)](https://github.com/DollhouseMCP/mcp-server/actions/workflows/core-build-test.yml)
16
+ [![Linux](https://img.shields.io/badge/Linux-โœ“-FCC624?logo=linux&logoColor=black)](https://github.com/DollhouseMCP/mcp-server/actions/workflows/core-build-test.yml)
17
+
18
+ <div align="center">
19
+ <img src="docs/assets/dollhouse-logo.png" alt="DollhouseMCP" width="200" />
20
+
21
+ **Open-source AI customization through modular elements.**
7
22
 
8
- A comprehensive Model Context Protocol (MCP) server that enables dynamic AI persona management with an integrated GitHub-powered collection. DollhouseMCP allows Claude and other compatible AI assistants to activate different behavioral personas while supporting community sharing and monetization.
9
-
10
- **๐ŸŒ Repository**: https://github.com/DollhouseMCP/mcp-server
11
- **๐Ÿช Collection**: https://github.com/DollhouseMCP/collection
12
- **๐Ÿ“ฆ NPM Package**: https://www.npmjs.com/package/@dollhousemcp/mcp-server
13
- **๐ŸŒ Website**: https://dollhousemcp.com
14
-
15
- ## ๐Ÿ“ฆ Installation
16
-
17
- ### Choose Your Installation Method
18
-
19
- <table>
20
- <tr>
21
- <th>Method</th>
22
- <th>Best For</th>
23
- <th>Pros</th>
24
- <th>Cons</th>
25
- </tr>
26
- <tr>
27
- <td><strong>Local Install</strong><br>(Recommended)</td>
28
- <td>Most users, multiple configs, customization</td>
29
- <td>โœ… Multiple setups<br>โœ… Easy backup<br>โœ… No permissions</td>
30
- <td>โŒ Longer path in config</td>
31
- </tr>
32
- <tr>
33
- <td><strong>npx</strong></td>
34
- <td>Quick testing, always latest</td>
35
- <td>โœ… No install<br>โœ… Always updated</td>
36
- <td>โŒ Slower startup<br>โŒ Needs internet</td>
37
- </tr>
38
- <tr>
39
- <td><strong>Global Install</strong></td>
40
- <td>Single shared instance</td>
41
- <td>โœ… Short command</td>
42
- <td>โŒ Only one version<br>โŒ Needs sudo/admin</td>
43
- </tr>
44
- </table>
23
+ [Website](https://dollhousemcp.com) ยท [Browse the Collection](https://dollhousemcp.github.io/collection/) ยท [NPM Package](https://www.npmjs.com/package/@dollhousemcp/mcp-server) ยท [Discord](https://discord.gg/bzY2tkT6rQ)
24
+ </div>
45
25
 
46
26
  ---
47
27
 
48
- ### Claude Code
28
+ ## How It Works
29
+
30
+ ```
31
+ CREATE or EDIT PORTFOLIO ACTIVATE โ†’ USE
32
+ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
33
+
34
+ "Create a skill for ๐Ÿ“ ~/.dollhouse/portfolio/ "Activate the Dollhouse
35
+ writing blog posts" Expert ensemble"
36
+ 38 starter elements:
37
+ "Edit the code review โ”€โ”€โ–ถ personas ยท skills ยท โ”€โ”€โ–ถ Your AI now has
38
+ persona to add security" templates ยท agents ยท new behavior,
39
+ memories ยท ensembles capabilities, and
40
+ persona ยท skill ยท template permission policies
41
+ agent ยท memory ยท ensemble + everything you create
42
+ + community installs
43
+ ```
44
+
45
+ **Pick any path to start:**
46
+ - **Activate** a starter element from your portfolio โ€” your AI immediately changes
47
+ - **Create** any element type (persona, skill, template, agent, memory, ensemble) by describing what you want in plain English
48
+ - **Edit** any existing element to refine it
49
+ - **Browse** the [community collection](https://dollhousemcp.github.io/collection/) and install elements made by other users
50
+
51
+ Your **portfolio** (`~/.dollhouse/portfolio/`) is a local folder that holds all your Dollhouse elements. It ships with 38 starters โ€” including the **dollhouse-expert-suite** ensemble (persona + knowledge base) you can activate for guided help. Everything you create or install lands here. Share back to the community or sync to GitHub whenever you're ready.
52
+
53
+ ---
54
+
55
+ ## Quick Start
56
+
57
+ > **v2.0.0 is now available.** DollhouseMCP v2 is the default release. [Release notes](https://github.com/DollhouseMCP/mcp-server/releases/tag/v2.0.0) | [Migration guide](docs/guides/v2-migration-guide.md) | [Report issues](https://github.com/DollhouseMCP/mcp-server/issues)
58
+
59
+ DollhouseMCP installs on any MCP-compatible AI client โ€” Claude Code, Claude Desktop, Cursor, Gemini, Codex, and local LLMs. Core element management (create, activate, search, browse) works across all platforms. Advanced features (Gatekeeper confirmation flows, agentic loop execution) have been tested extensively on Claude Code and should work on any client that supports standard MCP tool call/response patterns.
60
+
61
+ **Claude Desktop** (one-click install):
62
+
63
+ Download the [DollhouseMCP Desktop Extension](https://github.com/DollhouseMCP/mcp-server/releases/tag/v2.0.0) (`.mcpb` file) and open it. Claude Desktop handles the rest โ€” no terminal required.
64
+
65
+ **Claude Code** (one command):
49
66
 
50
67
  All projects (recommended):
51
68
  ```bash
52
- claude mcp add -s user dollhousemcp -- npx -y @dollhousemcp/mcp-server@rc
69
+ claude mcp add -s user dollhousemcp -- npx -y @dollhousemcp/mcp-server
53
70
  ```
54
71
 
55
72
  Current project only:
56
73
  ```bash
57
- claude mcp add dollhousemcp -- npx -y @dollhousemcp/mcp-server@rc
74
+ claude mcp add dollhousemcp -- npx -y @dollhousemcp/mcp-server
58
75
  ```
59
76
 
60
- ---
77
+ **Other platforms** โ€” see the [Quick Start Guide](docs/guides/quick-start.md) for Claude Desktop manual config, Gemini, Cursor, Codex, local LLMs, and more.
61
78
 
62
- ### Method 1: Local Installation (Recommended)
79
+ Then start a conversation:
63
80
 
64
- Create a dedicated folder for your MCP servers and install there:
81
+ ```
82
+ "What DollhouseMCP tools do you have available?"
83
+ "List all available Dollhouse personas"
84
+ "Activate the Dollhouse debug detective persona"
85
+ ```
65
86
 
66
- ```bash
67
- # Create MCP servers directory
68
- mkdir ~/mcp-servers
69
- cd ~/mcp-servers
87
+ DollhouseMCP ships with 38 Dollhouse elements across all 6 types. Just describe what you want in natural language.
70
88
 
71
- # Install DollhouseMCP
72
- npm install @dollhousemcp/mcp-server
73
- ```
89
+ > **First time?** The [Public Beta Onboarding Guide](docs/guides/public-beta-onboarding.md) walks you from install to your first activated Dollhouse persona in under 10 minutes.
74
90
 
75
- **Configure Claude Desktop:**
76
-
77
- Add to your config file:
78
- - **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
79
- - **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
80
- - **Linux**: `~/.config/Claude/claude_desktop_config.json`
81
-
82
- ```json
83
- {
84
- "mcpServers": {
85
- "dollhousemcp": {
86
- "command": "node",
87
- "args": ["/Users/YOUR_USERNAME/mcp-servers/node_modules/@dollhousemcp/mcp-server/dist/index.js"]
88
- }
89
- }
90
- }
91
- ```
91
+ ---
92
92
 
93
- ๐Ÿ’ก **Pro tip**: Replace `/Users/YOUR_USERNAME` with your actual home directory path.
93
+ ## Dollhouse Elements: Behavior, Capabilities, and Permissions
94
+
95
+ Dollhouse elements are modular building blocks that customize your AI. When you activate a Dollhouse element, you're not just changing a prompt โ€” you're changing what tools the AI can access, what commands it can run, and what operations require your approval.
96
+
97
+ | Dollhouse Element | What It Does |
98
+ |---|---|
99
+ | **Dollhouse Personas** | Shape behavior, tone, expertise, and priorities. <br> Act as security principals with permission policies that control what the AI can do. |
100
+ | **Dollhouse Skills*** | Add discrete capabilities the AI can activate on demand. <br> Code review, data analysis, penetration testing, translation, and more. |
101
+ | **Dollhouse Templates** | Standardize outputs with variable substitution. <br> Reports, emails, briefs, documentation โ€” consistent structure every time. |
102
+ | **Dollhouse Agents** | Execute multi-step goals autonomously. <br> State tracking, resilience policies, autonomy evaluation, and an execution lifecycle. |
103
+ | **Dollhouse Memories** | Persist structured context across sessions. <br> Facts, preferences, project state. Can auto-load on startup. |
104
+ | **Dollhouse Ensembles** | Bundle multiple elements into one activatable unit. <br> Activation strategies, conflict resolution, and coordinated permission policies. |
105
+
106
+ > **\*Skills Compatibility**
107
+ >
108
+ > Dollhouse Skills (introduced July 2025) predate the agent skills format later adopted by Claude/Anthropic. DollhouseMCP includes a built-in lossless bidirectional converter between the two formats.
109
+ >
110
+ > - **Import**: Convert agent skills โ†’ Dollhouse Skills via `convert_skill_format`. Once converted, they're first-class Dollhouse elements โ€” combinable with Personas, Templates, and other Skills inside Ensembles, managed by Dollhouse Agents, and protected by Gatekeeper policies.
111
+ > - **Export**: Convert Dollhouse Skills โ†’ agent skills for platforms that don't have DollhouseMCP installed.
112
+ > - **Roundtrip**: The converter supports a lossless mode that preserves everything in both directions. A safe mode is also available that sanitizes potentially risky patterns during conversion.
113
+ >
114
+ > [Full Skills Converter documentation](docs/guides/skills-converter.md)
115
+
116
+ All Dollhouse elements are readable markdown or YAML files stored in your local portfolio. You own them, you control them. When interacting with your AI, use "Dollhouse" to disambiguate โ€” say "activate the Dollhouse code review persona" or "run the Dollhouse research agent" to ensure the AI uses DollhouseMCP elements rather than native platform features.
94
117
 
95
118
  ---
96
119
 
97
- ### Method 2: Always Latest with npx
120
+ ## MCP-AQL: How Your AI Talks to DollhouseMCP
98
121
 
99
- No installation needed! Configure Claude Desktop to always use the latest version:
122
+ Most MCP servers expose dozens of individual tools, each consuming context tokens and forcing the LLM to pick the right one from a flat list. DollhouseMCP takes a different approach.
100
123
 
101
- ```json
102
- {
103
- "mcpServers": {
104
- "dollhousemcp": {
105
- "command": "npx",
106
- "args": ["@dollhousemcp/mcp-server@latest"]
107
- }
108
- }
109
- }
110
- ```
124
+ **MCP-AQL** (Model Context Protocol โ€“ **A**dvanced **A**gent **A**PI **A**dapter **Q**uery **L**anguage) organizes all operations into 5 semantic endpoints โ€” **CRUDE**: Create, Read, Update, Delete, Execute. The A pulls quadruple duty: **A**dvanced query capabilities, **A**gent-first design, **A**PI consolidation, and **A**dapter layer to bridge other MCP servers and APIs to work directly with LLMs. Each endpoint groups operations by what they do to state, giving the LLM clear semantic signals about the consequences of each action:
125
+
126
+ | Endpoint | Purpose | Permission Level |
127
+ |----------|---------|-----------------|
128
+ | **Create** | Add new elements, install from collection, add memory entries | Confirm once per session |
129
+ | **Read** | List, search, get details, activate, introspect | Auto-approved (safe, no side effects) |
130
+ | **Update** | Edit existing elements | Confirm each time |
131
+ | **Delete** | Remove elements, clear entries | Confirm each time |
132
+ | **Execute** | Run agents, manage execution lifecycle, confirm operations | Confirm each time |
133
+
134
+ ### Why This Matters
135
+
136
+ - **Semantic clarity** โ€” The LLM knows that calling `mcp_aql_read` is always safe. Calling `mcp_aql_delete` is always destructive. No guessing.
137
+ - **Host-level permission control** โ€” MCP clients like Claude Code can set different approval policies per endpoint (auto-approve reads, require confirmation for deletes).
138
+ - **Progressive disclosure through introspection** โ€” The LLM starts with just 5 tool endpoints. It discovers operations, parameters, element formats, and usage examples at runtime by asking the server:
111
139
 
112
- ๐Ÿ“ **Note**: The `@latest` tag ensures you always get the newest version. Remove it to use npm's cached version.
140
+ ```json
141
+ { "operation": "introspect", "params": { "query": "operations" } }
142
+ { "operation": "introspect", "params": { "query": "format", "name": "persona" } }
143
+ ```
144
+
145
+ This is progressive disclosure built into the protocol โ€” the LLM only loads what it needs, when it needs it. Unlike client-side solutions that require special harness support (like Claude Code's deferred tool loading), MCP-AQL's introspection works on any MCP client because it's just a standard tool call that returns structured data. No fancy client features required. The server describes itself.
146
+
147
+ Elements use the same principle: YAML frontmatter provides metadata for quick scanning, full markdown content loads only when activated. The LLM can list 200 elements at a glance and deep-dive into the ones it needs.
148
+
149
+ - **Token efficiency** โ€” 5 endpoints at ~4,300 tokens vs ~29,600 for ~40 discrete tools (85% reduction). Single mode reduces further to ~350 tokens.
150
+
151
+ > [Full MCP-AQL documentation](docs/architecture/mcp-aql/README.md) โ€” protocol design, CRUDE pattern rationale, introspection system, endpoint modes, and debugging.
113
152
 
114
153
  ---
115
154
 
116
- ### Method 3: Global Installation
155
+ ## The Gatekeeper: Elements Control Permissions
117
156
 
118
- ```bash
119
- # Install globally (may require sudo/admin)
120
- npm install -g @dollhousemcp/mcp-server
157
+ Every MCP-AQL operation passes through the Gatekeeper โ€” a server-side permission system that Dollhouse elements directly control. When you activate a Dollhouse Persona, Skill, or Ensemble, its permission policies take effect immediately.
158
+
159
+ ```
160
+ Example: Activate a "read-only analyst" persona
161
+
162
+ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
163
+ โ”‚ Persona: read-only-analyst โ”‚
164
+ โ”‚ โ”‚
165
+ โ”‚ gatekeeper: โ”‚
166
+ โ”‚ allow: [list_elements, search, get_element, introspect] โ”‚
167
+ โ”‚ deny: [create_element, edit_element, delete_element, โ”‚
168
+ โ”‚ execute_agent, confirm_operation] โ”‚
169
+ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
170
+ โ”‚
171
+ โ–ผ
172
+ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
173
+ โ”‚ What the LLM CAN do: What the LLM CANNOT do: โ”‚
174
+ โ”‚ โ”‚
175
+ โ”‚ โœ“ List and search elements โœ— Create new elements โ”‚
176
+ โ”‚ โœ“ Read element details โœ— Edit existing elements โ”‚
177
+ โ”‚ โœ“ Introspect operations โœ— Delete anything โ”‚
178
+ โ”‚ โœ“ Activate/deactivate โœ— Run agents โ”‚
179
+ โ”‚ โœ— Confirm any gated operation โ”‚
180
+ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
121
181
  ```
122
182
 
123
- **Configure Claude Desktop:**
183
+ **This works even if the MCP client has "Always Allow" enabled.** The Gatekeeper runs server-side โ€” after the client approves the tool call, the Gatekeeper still enforces the active element's policies. A deny from any active element cannot be overridden by the LLM or the client.
124
184
 
125
- ```json
126
- {
127
- "mcpServers": {
128
- "dollhousemcp": {
129
- "command": "dollhousemcp"
130
- }
131
- }
132
- }
185
+ ### How Policy Resolution Works
186
+
187
+ ```
188
+ deny > confirm > allow > route default
189
+ (highest priority) (lowest priority)
133
190
  ```
134
191
 
135
- โš ๏ธ **Warning**: Only one version system-wide. Consider local installation for more flexibility.
192
+ 1. **Element deny** โ€” hard-blocked, cannot be confirmed or bypassed
193
+ 2. **Element confirm** โ€” requires user confirmation even if the route default is auto-approve
194
+ 3. **Element allow** โ€” auto-approves operations that would normally require confirmation
195
+ 4. **Route default** โ€” the endpoint's built-in permission level (reads auto-approve, deletes confirm)
136
196
 
137
- ---
197
+ Policies stack across all active elements. If one persona allows an operation but another denies it, deny wins. This lets you compose elements with confidence โ€” a security-focused persona can lock down operations while a skill adds capabilities.
138
198
 
139
- ### ๐ŸŽฏ Advanced: Multiple Configurations
199
+ ### What This Means in Practice
140
200
 
141
- Want separate portfolios for different contexts? Create multiple local installations:
201
+ - **Activate a read-only persona** โ†’ the LLM can only browse and search, even if you've given the MCP client full access
202
+ - **Activate a security analyst ensemble** โ†’ `delete_element` and `rm -rf *` are denied, but code review tools work normally
203
+ - **Deactivate the restrictive element** โ†’ full access returns immediately
204
+ - **Nuclear sandbox** โ†’ `deny: ['confirm_operation']` blocks ALL confirmations, making the session completely read-only until the element is deactivated
142
205
 
143
- ```bash
144
- # Personal assistant
145
- mkdir ~/mcp-servers/personal
146
- cd ~/mcp-servers/personal
147
- npm install @dollhousemcp/mcp-server
206
+ > **Platform compatibility**: The Gatekeeper enforces policies server-side โ€” deny and allow decisions work on any MCP client. The confirmation flow (where the LLM calls `confirm_operation` in response to a block) has been tested extensively on Claude Code and the DollhouseMCP Bridge. It should work on any MCP client where the LLM can interpret structured tool responses and make follow-up tool calls, but has not been rigorously verified on all platforms.
148
207
 
149
- # Work assistant
150
- mkdir ~/mcp-servers/work
151
- cd ~/mcp-servers/work
152
- npm install @dollhousemcp/mcp-server
208
+ > [Gatekeeper documentation](docs/security/gatekeeper-confirmation-model.md) โ€” confirmation flows, element policy syntax, sandbox model, external tool restrictions, and the session-allow problem.
153
209
 
154
- # Creative writing
155
- mkdir ~/mcp-servers/creative
156
- cd ~/mcp-servers/creative
157
- npm install @dollhousemcp/mcp-server
158
- ```
210
+ ---
159
211
 
160
- **Configure each with its own portfolio:**
161
-
162
- ```json
163
- {
164
- "mcpServers": {
165
- "dollhouse-personal": {
166
- "command": "node",
167
- "args": ["/Users/YOU/mcp-servers/personal/node_modules/@dollhousemcp/mcp-server/dist/index.js"],
168
- "env": {
169
- "DOLLHOUSE_PORTFOLIO_DIR": "/Users/YOU/portfolios/personal"
170
- }
171
- },
172
- "dollhouse-work": {
173
- "command": "node",
174
- "args": ["/Users/YOU/mcp-servers/work/node_modules/@dollhousemcp/mcp-server/dist/index.js"],
175
- "env": {
176
- "DOLLHOUSE_PORTFOLIO_DIR": "/Users/YOU/portfolios/work"
177
- }
178
- }
179
- }
180
- }
181
- ```
212
+ ## Portfolio
182
213
 
183
- Now you can enable/disable different configurations in Claude Desktop as needed!
214
+ Your Dollhouse elements live in a local portfolio at `~/.dollhouse/portfolio/`. Ask your AI to "open the portfolio browser" (or call `open_portfolio_browser` via MCP-AQL) to browse them visually. Activation is done through the LLM โ€” ask it to "activate the Dollhouse code review persona" and it handles the rest.
215
+
216
+ <div align="center">
217
+ <img src="docs/assets/portfolio-browser.png" alt="DollhouseMCP Portfolio Browser" width="700" />
218
+ </div>
219
+
220
+ - **Local-first** โ€” Everything works offline. No account required.
221
+ - **38 bundled elements** โ€” 7 personas, 7 skills, 8 templates, 7 agents, 4 memories, 5 ensembles ship with the server as starter content. Includes the **dollhouse-expert-suite** ensemble (persona + knowledge base memory) for guided help, and a **Session Monitor** agent that keeps your LLM synchronized with server state changes.
222
+ - **GitHub sync** โ€” Optionally back up your portfolio to a GitHub repository and share elements with others.
223
+ - **Community Collection** โ€” [Browse the collection](https://dollhousemcp.github.io/collection/) to see what's available, then install elements directly from your AI. Or [submit your own](https://github.com/DollhouseMCP/collection).
224
+
225
+ > [GitHub Portfolio Sync Guide](docs/guides/portfolio-setup-guide.md) โ€” back up to GitHub, sync between machines, submit to the community.
184
226
 
185
227
  ---
186
228
 
187
- ### โœ… Verify Installation
229
+ ## Dollhouse Agent Execution
188
230
 
189
- After configuring and restarting Claude Desktop, test with:
231
+ Dollhouse Agents don't just run โ€” every step passes through the MCP server, back to the LLM, and through the Gatekeeper. The LLM makes semantic decisions; the server handles programmatic enforcement. Neither side operates alone.
190
232
 
191
233
  ```
192
- list_elements type="personas"
234
+ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
235
+ โ”‚ HUMAN โ”‚
236
+ โ”‚ (optional) โ”‚โ—„โ”€โ”€โ”€โ”€ LLM asks for guidance
237
+ โ”‚ โ”‚ when autonomy evaluator
238
+ โ”‚ Approve, deny,โ”‚ says "pause"
239
+ โ”‚ or guide โ”‚
240
+ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
241
+ โ”‚ responds to LLM
242
+ โ–ผ
243
+ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
244
+ โ”‚ โ”‚ โ”‚ DollhouseMCP MCP Server โ”‚ โ”‚ โ”‚
245
+ โ”‚ LLM โ”‚โ”€โ”€โ”€โ”€โ–ถโ”‚ โ”‚โ”€โ”€โ”€โ”€โ–ถโ”‚ LLM โ”‚
246
+ โ”‚ โ”‚ โ”‚ 1. Gatekeeper checks policy โ”‚ โ”‚ โ”‚
247
+ โ”‚ Decides โ”‚ โ”‚ 2. Autonomy Evaluator scores โ”‚ โ”‚ Records โ”‚
248
+ โ”‚ next โ”‚ โ”‚ 3. Danger Zone enforcement โ”‚ โ”‚ step and โ”‚
249
+ โ”‚ action โ”‚ โ”‚ 4. Execute or block โ”‚ โ”‚ continues โ”‚
250
+ โ”‚ โ”‚ โ”‚ 5. Return result + autonomy โ”‚ โ”‚ or pauses โ”‚
251
+ โ”‚ โ”‚โ—€โ”€โ”€โ”€โ”€โ”‚ guidance to LLM โ”‚โ—€โ”€โ”€โ”€โ”€โ”‚ โ”‚
252
+ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
253
+ โ”‚ โ”‚
254
+ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ repeats every step โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
193
255
  ```
194
256
 
195
- You should see your available personas. If not, check the [Troubleshooting](#-troubleshooting) section.
257
+ Each step in the loop:
258
+ - **Gatekeeper** checks every operation against active element policies โ€” deny, confirm, or allow
259
+ - **Autonomy Evaluator** scores whether the agent should continue autonomously or pause for human input
260
+ - **Danger Zone** enforces hard blocks on high-risk operations (file deletion, external API calls, system commands)
261
+ - **Step recording** creates an audit trail of every decision and outcome
262
+ - **The LLM receives autonomy guidance** with each response โ€” continue, pause, or escalate โ€” so it never operates unmonitored
196
263
 
197
- ---
264
+ This means a Dollhouse Agent can't silently escalate. Every action is visible, every step is evaluated, and active element policies are enforced throughout the entire execution.
198
265
 
199
- ### ๐Ÿ“ Default Portfolio Location
266
+ > **Platform note**: The agentic loop relies on the LLM making sequential MCP tool calls and interpreting structured responses โ€” standard MCP behavior. It has been tested extensively on Claude Code and the DollhouseMCP Bridge. The server-side enforcement (Gatekeeper, Danger Zone, step recording) is platform-independent. The LLM's ability to follow autonomy guidance (continue/pause/escalate) depends on the LLM's capability to interpret structured tool responses, which may vary across platforms.
200
267
 
201
- By default, your elements are stored in:
202
- - **macOS/Linux**: `~/.dollhouse/portfolio/`
203
- - **Windows**: `%USERPROFILE%\.dollhouse\portfolio\`
268
+ > [Full Agent Execution documentation](docs/guides/agent-execution.md) โ€” the agentic loop, security enforcement, human-in-the-loop control, agent composition, resilience policies, and execution lifecycle operations.
204
269
 
205
- Use the `DOLLHOUSE_PORTFOLIO_DIR` environment variable to customize this location.
270
+ ---
206
271
 
207
- ## ๐Ÿš€ Quick Start
272
+ ## More Features
208
273
 
209
- Once installed, try these commands in Claude:
274
+ - **Web Portfolio Browser** โ€” Built-in web console for browsing and managing your portfolio visually. Ask your AI to "open the portfolio browser" or run `npm run web` standalone.
275
+ - **Batch Operations** โ€” Execute multiple operations in a single MCP-AQL request for efficient workflows
276
+ - **Activation Persistence** โ€” Elements activated in a session are restored on server restart. No re-activation needed.
277
+ - **Universal Backup** โ€” Built-in backup service for portfolio elements with restore capability
278
+ - **Cache Memory Budget** โ€” Configurable memory budget for collection and index caches to control resource usage
279
+ - **NLP Discovery** โ€” Jaccard similarity and Shannon entropy scoring for intelligent element search and discovery
280
+ - **Cross-Element Relationships** โ€” GraphRAG-style mapping between elements for finding related content
281
+ - **Security Hardened** โ€” Input sanitization, path traversal prevention, YAML injection protection, file locking, DOMPurify sanitization, content validation against hundreds of attack vectors. [Security docs](docs/security/README.md)
282
+ - **Cross-Platform** โ€” Tested on Windows, macOS, and Linux across Node.js 20+
210
283
 
211
- ```bash
212
- # Browse available personas
213
- list_elements type="personas"
284
+ ---
285
+
286
+ ## Installation Options
214
287
 
215
- # Activate a persona
216
- activate_element name="creative-writer" type="personas"
288
+ The [Quick Start](#quick-start) above covers the fastest path. For more control:
217
289
 
218
- # Browse the community collection
219
- browse_collection type="personas"
290
+ ### Local Install (Recommended for Multiple Configs)
220
291
 
221
- # Search for specific content
222
- search_collection query="python" type="skills"
292
+ ```bash
293
+ mkdir -p ~/mcp-servers && cd ~/mcp-servers
294
+ npm install @dollhousemcp/mcp-server
223
295
  ```
224
296
 
225
- > **๐Ÿ“˜ New User?** Follow our [Roundtrip Workflow Guide](docs/guides/roundtrip-workflow-user-guide.md) for a complete walkthrough of discovering, customizing, and sharing AI elements with the community.
297
+ Then point your MCP client at `node <path>/node_modules/@dollhousemcp/mcp-server/dist/index.js`.
226
298
 
227
- ## โœจ Key Features
299
+ ### MCP-AQL Endpoint Modes
228
300
 
229
- | Feature | Description |
230
- |---------|-------------|
231
- | ๐ŸŽญ **41 MCP Tools** | Complete portfolio element management through chat interface |
232
- | ๐Ÿช **GitHub Collection** | Browse, search, install, and submit personas to community collection |
233
- | ๐Ÿ”„ **Roundtrip Workflow** | Complete cycle: discover โ†’ customize โ†’ share โ†’ collaborate |
234
- | ๐Ÿ“ **GitHub Portfolio** | Personal repository for storing and versioning your AI elements |
235
- | ๐Ÿ‘ค **User Identity System** | Environment-based attribution for persona creators |
236
- | ๐Ÿ†” **Unique ID System** | Advanced ID generation: `{type}_{name}_{author}_{YYYYMMDD}-{HHMMSS}` |
237
- | ๐Ÿ’ฌ **Chat-Based Management** | Create, edit, and validate personas through conversational interface |
238
- | ๐Ÿ”„ **Real-time Operations** | Live editing with automatic version bumping and validation |
239
- | ๐Ÿ“ฆ **NPM Installation** | Install MCP servers from npm with cross-platform support and atomic operations |
240
- | ๐Ÿ›ก๏ธ **Data Protection** | Copy-on-write for default personas, comprehensive backup system |
241
- | ๐Ÿ  **Local-First Architecture** | Full functionality without cloud dependency |
301
+ | Mode | Endpoints | Tokens | Env Variable | Best For |
302
+ |------|-----------|--------|-------------|----------|
303
+ | **CRUDE** (default) | 5 | ~4,300 | `MCP_AQL_ENDPOINT_MODE=crude` | Most users. Semantic grouping with host-level permission control |
304
+ | **Single** | 1 | ~350 | `MCP_AQL_ENDPOINT_MODE=single` | Multi-server setups with constrained context windows |
305
+ | **Discrete** | ~40 | ~29,600 | `MCP_INTERFACE_MODE=discrete` | Backward compatibility with v1 tool names |
242
306
 
243
- ## ๐ŸŽจ Portfolio Elements
307
+ > **Note**: CRUDE and Single are controlled by `MCP_AQL_ENDPOINT_MODE`. Discrete mode uses a different variable: `MCP_INTERFACE_MODE=discrete`.
244
308
 
245
- DollhouseMCP supports multiple element types for customizing AI behavior:
309
+ ### Common Configuration
246
310
 
247
- | Element | Purpose | Status |
248
- |---------|---------|--------|
249
- | ๐ŸŽญ **Personas** | Define AI personality, tone, and behavioral characteristics | โœ… Available |
250
- | ๐Ÿ› ๏ธ **Skills** | Add specific capabilities like code review, data analysis, or creative writing | โœ… Available |
251
- | ๐Ÿ“ **Templates** | Create reusable response formats for emails, reports, documentation | โœ… Available |
252
- | ๐Ÿค– **Agents** | Build autonomous assistants that can pursue goals and make decisions | โœ… Available |
253
- | ๐Ÿ’ฌ **Prompts** | Pre-configured conversation starters and structured interactions | ๐Ÿ”„ Coming Soon |
254
- | ๐Ÿง  **Memory** | Persistent context storage with retention policies and search capabilities | ๐Ÿ”„ Coming Soon |
255
- | ๐ŸŽฏ **Ensemble** | Orchestrate multiple elements together as one unified entity | ๐Ÿ”„ Coming Soon |
311
+ | Variable | Default | Description |
312
+ |----------|---------|-------------|
313
+ | `MCP_AQL_ENDPOINT_MODE` | `crude` | Endpoint mode: `crude`, `single` |
314
+ | `MCP_INTERFACE_MODE` | `mcpaql` | Interface style: `mcpaql`, `discrete` |
315
+ | `DOLLHOUSE_PORTFOLIO_DIR` | `~/.dollhouse/portfolio/` | Custom portfolio location |
316
+ | `GITHUB_TOKEN` | โ€” | Personal access token for GitHub operations |
256
317
 
257
- Your portfolio lives in `~/.dollhouse/portfolio/` with elements organized by type.
318
+ > [Full environment variable reference](docs/guides/environment-variables.md) ยท [MCP client setup for other platforms](docs/guides/mcp-client-setup.md)
258
319
 
259
- ## ๐Ÿ”ง Troubleshooting
320
+ ---
260
321
 
261
- ### Common Issues
322
+ ## Documentation
323
+
324
+ | Guide | Description |
325
+ |-------|-------------|
326
+ | [Quick Start Guide](docs/guides/quick-start.md) | Platform-specific install for Claude Code, Desktop, Cursor, Gemini, Codex, local LLMs |
327
+ | [Public Beta Onboarding](docs/guides/public-beta-onboarding.md) | Install to first persona in 10 minutes |
328
+ | [LLM Quick Reference](docs/guides/llm-quick-reference.md) | Operation cheat sheet written for AI assistants |
329
+ | [MCP-AQL Architecture](docs/architecture/mcp-aql/README.md) | CRUDE protocol, introspection, endpoint modes |
330
+ | [Gatekeeper Security Model](docs/security/gatekeeper-confirmation-model.md) | Permission layers, element policies, sandbox model |
331
+ | [GitHub Portfolio Sync](docs/guides/portfolio-setup-guide.md) | Back up to GitHub, sync between machines, community submission |
332
+ | [Memory System](docs/guides/memory-system.md) | Persistent context storage and retrieval |
333
+ | [Skills Converter](docs/guides/skills-converter.md) | Bidirectional agent skills conversion |
334
+ | [Agent Execution](docs/guides/agent-execution.md) | Agentic loop, security enforcement, human-in-the-loop, composition |
335
+ | [Architecture Overview](docs/architecture/overview.md) | System design, DI container, data flow |
336
+ | [Security](docs/security/README.md) | Threat model, testing, and vulnerability reporting |
337
+ | [API Reference](docs/reference/api-reference.md) | Complete MCP tool catalog and payload schemas |
338
+ | [V2 Migration Guide](docs/guides/v2-migration-guide.md) | Upgrading from v1.x |
339
+ | [Troubleshooting](docs/guides/troubleshooting.md) | Common issues and solutions |
262
340
 
263
- | Issue | Solution |
264
- |-------|----------|
265
- | **Personas not loading** | Check `~/.dollhouse/portfolio/personas/` directory exists |
266
- | **Server won't start** | Ensure Node.js v20+ is installed: `node --version` |
267
- | **Collection not working** | Check internet connection and GitHub API access |
268
- | **Tools not appearing in Claude** | Restart Claude Desktop completely after config changes |
269
- | **"Cannot find module" errors** | Reinstall: `npm install -g @dollhousemcp/mcp-server@latest` |
270
- | **Rate limit errors** | Wait 60 seconds; GitHub API has hourly limits |
341
+ ---
271
342
 
272
- ### Need Help?
343
+ ## Contributing
273
344
 
274
- - ๐Ÿ“– [Full Troubleshooting Guide](docs/guides/troubleshooting.md)
275
- - ๐Ÿ’ฌ [GitHub Issues](https://github.com/DollhouseMCP/mcp-server/issues)
276
- - ๐Ÿ’ญ [GitHub Discussions](https://github.com/DollhouseMCP/mcp-server/discussions)
345
+ We welcome contributions โ€” bug reports, feature requests, documentation, code, and community elements.
277
346
 
278
- ## ๐Ÿ“š Resources
347
+ ```bash
348
+ git clone https://github.com/DollhouseMCP/mcp-server.git
349
+ cd mcp-server
350
+ npm install && npm run build && npm test
351
+ ```
279
352
 
280
- ### Documentation
281
- - [Roundtrip Workflow Guide](docs/guides/roundtrip-workflow-user-guide.md)
282
- - [Portfolio Setup Guide](docs/guides/portfolio-setup-guide.md)
283
- - [Element Detection Guide](docs/guides/element-detection-guide.md)
284
- - [PersonaTools Migration Guide](docs/archive/migrations/personatools-migration-guide.md)
285
- - [API Documentation](docs/reference/api-reference.md)
353
+ See [CONTRIBUTING.md](CONTRIBUTING.md) for the full development workflow, branch strategy, and code style guide.
286
354
 
287
- ### Community
288
- - [GitHub Repository](https://github.com/DollhouseMCP/mcp-server)
289
- - [NPM Package](https://www.npmjs.com/package/@dollhousemcp/mcp-server)
290
- - [Community Collection](https://github.com/DollhouseMCP/collection)
291
- - [Discord Community](https://discord.gg/dollhousemcp) (coming soon)
355
+ ---
292
356
 
293
- ### Development
294
- - [Contributing Quick Start](CONTRIBUTING.md)
295
- - [Contributor Reference](docs/contributing.md)
296
- - [Security Policy](docs/security/documentation-guide.md)
297
- - [Full Changelog](CHANGELOG.md)
357
+ ## Community
298
358
 
299
- ## ๐Ÿ“„ License
359
+ - [GitHub Discussions](https://github.com/DollhouseMCP/mcp-server/discussions) โ€” Questions, ideas, and showcase
360
+ - [GitHub Issues](https://github.com/DollhouseMCP/mcp-server/issues) โ€” Bug reports and feature requests
361
+ - [Discord](https://discord.gg/bzY2tkT6rQ) โ€” Real-time chat
362
+ - [Browse the Collection](https://dollhousemcp.github.io/collection/) โ€” Community-contributed Dollhouse elements you can install
363
+ - [Collection Repository](https://github.com/DollhouseMCP/collection) โ€” Source repo for submissions and contributions
300
364
 
301
- DollhouseMCP is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0).
365
+ ---
302
366
 
303
- ### What this means:
304
- - โœ… **Free to use** for personal and commercial purposes
305
- - โœ… **Modify and distribute** with the same license
306
- - โœ… **Network use** requires source code disclosure
307
- - โœ… **Platform stability** commitments protect users
367
+ ## License
308
368
 
309
- See [LICENSE](LICENSE) for full terms.
369
+ [AGPL-3.0-or-later](LICENSE) โ€” free to use, modify, and distribute. Network use requires source disclosure. See [LICENSE](LICENSE) for full terms.
310
370
 
311
371
  ---
312
372
 
313
- *Built with โค๏ธ by the DollhouseMCP team*
373
+ *Copyright 2024-2026 Mick Darling / DollhouseMCP*