@dollhousemcp/mcp-server 1.6.11 → 1.7.0

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.
package/README.md CHANGED
@@ -1,1797 +1,298 @@
1
1
  # DollhouseMCP
2
2
 
3
- ## Project Status
4
- [![MCP Compatible](https://img.shields.io/badge/MCP-Compatible-green)](https://modelcontextprotocol.io)
5
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)
6
5
  [![License: AGPL-3.0](https://img.shields.io/badge/License-AGPL--3.0-blue.svg)](https://www.gnu.org/licenses/agpl-3.0)
7
- [![GitHub Views](https://komarev.com/ghpvc/?username=DollhouseMCP&repo=mcp-server&label=Repository+Views&style=flat)](https://github.com/DollhouseMCP/mcp-server)
8
-
9
- ## Build & Quality
10
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)
11
- [![Build Artifacts](https://github.com/DollhouseMCP/mcp-server/actions/workflows/build-artifacts.yml/badge.svg)](https://github.com/DollhouseMCP/mcp-server/actions/workflows/build-artifacts.yml)
12
- [![Test Coverage](https://img.shields.io/badge/Coverage-1858%2B%20Tests-green)](https://github.com/DollhouseMCP/mcp-server/tree/main/__tests__)
13
- [![Enterprise-Grade Security](https://img.shields.io/badge/Security-Enterprise%20Grade-purple)](docs/SECURITY.md)
14
-
15
- ## Platform Support
16
- [![Windows Build Status](https://img.shields.io/badge/Windows-✓_Tested-0078D4?logo=windows&logoColor=white)](https://github.com/DollhouseMCP/mcp-server/actions/workflows/core-build-test.yml?query=branch:main "Windows CI Build Status")
17
- [![macOS Build Status](https://img.shields.io/badge/macOS-✓_Tested-000000?logo=apple&logoColor=white)](https://github.com/DollhouseMCP/mcp-server/actions/workflows/core-build-test.yml?query=branch:main "macOS CI Build Status")
18
- [![Linux Build Status](https://img.shields.io/badge/Linux-✓_Tested-FCC624?logo=linux&logoColor=black)](https://github.com/DollhouseMCP/mcp-server/actions/workflows/core-build-test.yml?query=branch:main "Linux CI Build Status")
19
- [![Docker](https://img.shields.io/badge/Docker-Ready-2496ED?logo=docker&logoColor=white)](https://github.com/DollhouseMCP/mcp-server/blob/main/Dockerfile)
20
-
21
- ## Technology
22
- [![TypeScript](https://img.shields.io/badge/TypeScript-007ACC?logo=typescript&logoColor=white)](https://www.typescriptlang.org/)
23
- [![Node.js](https://img.shields.io/badge/Node.js-339933?logo=nodedotjs&logoColor=white)](https://nodejs.org/)
24
- [![Extended Node Compatibility](https://github.com/DollhouseMCP/mcp-server/actions/workflows/extended-node-compatibility.yml/badge.svg)](https://github.com/DollhouseMCP/mcp-server/actions/workflows/extended-node-compatibility.yml)
25
- [![Docker Testing](https://github.com/DollhouseMCP/mcp-server/actions/workflows/docker-testing.yml/badge.svg)](https://github.com/DollhouseMCP/mcp-server/actions/workflows/docker-testing.yml)
26
7
 
27
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.
28
9
 
29
10
  **🌐 Repository**: https://github.com/DollhouseMCP/mcp-server
30
11
  **🏪 Collection**: https://github.com/DollhouseMCP/collection
31
12
  **📦 NPM Package**: https://www.npmjs.com/package/@dollhousemcp/mcp-server
32
- **🌍 Website**: https://dollhousemcp.com (planned)
33
- **📦 Version**: v1.6.10
34
-
35
- > **🎉 New in v1.6.9**: Fixed version update script to prevent wrong file creation and package-lock.json corruption. The release workflow now works reliably with proper version management.
36
-
37
- > **⚠️ Breaking Change**: PersonaTools have been streamlined in v1.6.0. 9 redundant tools were removed in favor of ElementTools. See [PersonaTools Migration Guide](docs/PERSONATOOLS_MIGRATION_GUIDE.md) for migration instructions.
13
+ **🌍 Website**: https://dollhousemcp.com (planned)
38
14
 
39
15
  ## 🚀 Quick Start
40
16
 
41
- ```bash
42
- # Install globally
43
- npm install -g @dollhousemcp/mcp-server
44
-
45
- # Add to Claude Desktop config (see path below for your OS)
46
- # macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
47
- # Windows: %APPDATA%\Claude\claude_desktop_config.json
48
- # Linux: ~/.config/Claude/claude_desktop_config.json
49
- ```
50
-
51
- ```json
52
- {
53
- "mcpServers": {
54
- "dollhousemcp": {
55
- "command": "npx",
56
- "args": ["@dollhousemcp/mcp-server"]
57
- }
58
- }
59
- }
60
- ```
61
-
62
- Restart Claude Desktop and you're ready to use DollhouseMCP! Try `list_elements type="personas"` to get started.
63
-
64
- > **🎯 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.
65
-
66
- ## Key Features
67
-
68
- | Feature | Description |
69
- |---------|-------------|
70
- | 🎭 **42 MCP Tools** | Complete portfolio element management through chat interface |
71
- | 🏪 **GitHub Collection** | Browse, search, install, and submit personas to community collection |
72
- | 🔄 **Roundtrip Workflow** | Complete cycle: discover → customize → share → collaborate |
73
- | 📁 **GitHub Portfolio** | Personal repository for storing and versioning your AI elements |
74
- | 👤 **User Identity System** | Environment-based attribution for persona creators |
75
- | 🆔 **Unique ID System** | Advanced ID generation: `{type}_{name}_{author}_{YYYYMMDD}-{HHMMSS}` |
76
- | 💬 **Chat-Based Management** | Create, edit, and validate personas through conversational interface |
77
- | 🔄 **Real-time Operations** | Live editing with automatic version bumping and validation |
78
- | 📦 **NPM Installation** | Install MCP servers from npm with cross-platform support and atomic operations |
79
- | 🛡️ **Data Protection** | Copy-on-write for default personas, comprehensive backup system |
80
- | 🏠 **Local-First Architecture** | Full functionality without cloud dependency |
81
-
82
- ## 🎨 Portfolio Customization Elements
83
-
84
- DollhouseMCP introduces a comprehensive portfolio system for customizing AI behavior through **customization element types**. Your portfolio is your personal collection of these element types that enhance and tailor your AI experience. Each element type serves a specific purpose in shaping how AI assistants interact with you.
85
-
86
- ### Current Portfolio Element Types
87
-
88
- | Element | Purpose | Status |
89
- |---------|---------|--------|
90
- | 🎭 **Personas** | Define AI personality, tone, and behavioral characteristics | ✅ Available |
91
- | 🛠️ **Skills** | Add specific capabilities like code review, data analysis, or creative writing | ✅ Available |
92
- | 📝 **Templates** | Create reusable response formats for emails, reports, documentation | ✅ Available |
93
- | 🤖 **Agents** | Build autonomous assistants that can pursue goals and make decisions | ✅ Available |
94
-
95
- ### Coming Soon
96
-
97
- | Element | Purpose | Status |
98
- |---------|---------|--------|
99
- | 💬 **Prompts** | Pre-configured conversation starters and structured interactions | 🔄 Coming Soon |
100
- | 🧠 **Memory** | Persistent context storage with retention policies and search capabilities | 🔄 Coming Soon |
101
- | 🎯 **Ensemble** | Orchestrate multiple elements together as one unified entity | 🔄 Coming Soon |
102
-
103
- > **📢 Note**: Prompt, memory, and ensemble element types are actively being developed and will be available in upcoming releases.
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>
104
45
 
105
- ### Managing Your Portfolio
106
-
107
- Use these new generic tools to manage any element type in your portfolio:
108
-
109
- - **`list_elements`** - Browse your portfolio elements by type
110
- - **`activate_element`** - Activate elements to customize AI behavior
111
- - **`get_active_elements`** - View currently active customizations
112
- - **`deactivate_element`** - Deactivate specific customizations
113
- - **`get_element_details`** - Examine element configuration and metadata
114
- - **`reload_elements`** - Refresh portfolio from filesystem
115
-
116
- ### GitHub Portfolio Integration (NEW!)
117
-
118
- Manage your portfolio on GitHub for sharing and collaboration:
119
-
120
- - **`portfolio_status`** - Check your GitHub portfolio repository status
121
- - **`init_portfolio`** - Create a new GitHub portfolio repository
122
- - **`portfolio_config`** - Configure sync and submission settings
123
- - **`sync_portfolio`** - Synchronize local and GitHub repositories
124
- - **`search_portfolio`** - Search your local portfolio with advanced indexing
125
- - **`search_all`** - Unified search across local, GitHub, and collection sources
126
- - **`submit_content`** - Upload elements to your GitHub portfolio
127
-
128
- > **📘 Getting Started**: New to portfolios? Follow our [Portfolio Setup Guide](docs/guides/PORTFOLIO_SETUP_GUIDE.md) for step-by-step instructions.
46
+ ---
129
47
 
130
- ### Smart Element Detection
48
+ ### Method 1: Local Installation (Recommended)
131
49
 
132
- DollhouseMCP automatically detects element types when submitting content, eliminating the need to manually specify types:
50
+ Create a dedicated folder for your MCP servers and install there:
133
51
 
134
52
  ```bash
135
- # System automatically detects whether this is a persona, skill, template, etc.
136
- submit_content name="code-review"
137
- ```
138
-
139
- **Key Features:**
140
- - **Automatic Type Detection**: Searches all element directories simultaneously
141
- - **Fuzzy Matching**: Finds content with partial names or different extensions
142
- - **Clear Error Messages**: Provides actionable guidance when content isn't found
143
- - **No More Mistakes**: Prevents accidentally submitting content as wrong element type
144
-
145
- **Example Output:**
146
- ```
147
- ✅ Smart detection: Found "code-review" as SKILL
148
- ✅ Successfully uploaded code-review to your GitHub portfolio!
149
- ```
150
-
151
- > **📖 Learn More**: See our [Element Detection Guide](docs/guides/ELEMENT_DETECTION_GUIDE.md) for detailed usage examples and troubleshooting tips.
152
-
153
- ### Complete Naming Freedom
154
-
155
- DollhouseMCP gives you **complete freedom** to name your elements whatever you want. There are no naming restrictions or forbidden words.
156
-
157
- **✅ You can create elements named**:
158
- - "Test Assistant" - Previously blocked, now fully supported
159
- - "Sample Code Reviewer" - No restrictions
160
- - "テスト" (Japanese for "test") - Unicode supported
161
- - "My Debugging Helper" - Any descriptive name
162
-
163
- **How it works**: DollhouseMCP uses metadata-based test detection instead of filename patterns, so only internal DollhouseMCP test files are filtered (those with `_dollhouseMCPTest: true` metadata). Your personal elements are never affected.
164
-
165
- > **📘 Technical Details**: See our [Test Metadata Convention](docs/TEST_METADATA_CONVENTION.md) for information about how DollhouseMCP identifies its own test files without affecting user content.
166
-
167
- ### Specialized Element Tools
168
-
169
- Some portfolio elements have specialized operations:
170
-
171
- - **`render_template`** - Generate content using template elements with variables
172
- - **`execute_agent`** - Deploy agent elements to accomplish specific goals
173
-
174
- ### Portfolio Examples
175
-
176
- ```
177
- # Browse your skill portfolio
178
- list_elements type="skills"
179
-
180
- # Activate a code review skill
181
- activate_element name="code-review" type="skills"
182
-
183
- # Activate a professional email template
184
- activate_element name="email-professional" type="templates"
185
-
186
- # Use a template to generate content
187
- render_template name="project-update" variables='{"project": "DollhouseMCP", "status": "Released"}'
53
+ # Create MCP servers directory
54
+ mkdir ~/mcp-servers
55
+ cd ~/mcp-servers
188
56
 
189
- # Deploy an agent for a specific task
190
- execute_agent name="project-manager" goal="Create a sprint plan for next week"
57
+ # Install DollhouseMCP
58
+ npm install @dollhousemcp/mcp-server
191
59
  ```
192
60
 
193
- ### Portfolio Structure
61
+ **Configure Claude Desktop:**
194
62
 
195
- Your portfolio lives in `~/.dollhouse/portfolio/` with elements organized by type:
196
-
197
- ```
198
- ~/.dollhouse/portfolio/
199
- ├── personas/ # Personality and behavior profiles
200
- ├── skills/ # Specialized capabilities
201
- ├── templates/ # Reusable content structures
202
- └── agents/ # Autonomous assistants
203
- ```
204
-
205
- ### Persona Management via ElementTools
206
-
207
- Personas are now managed through the generic ElementTools system:
208
- - **`list_elements type="personas"`** - Display all local personas with enhanced metadata
209
- - **`activate_element name="name" type="personas"`** - Activate by name, filename, or unique ID
210
- - **`get_active_elements type="personas"`** - Get current active persona information
211
- - **`deactivate_element type="personas"`** - Return to default mode
212
- - **`get_element_details name="name" type="personas"`** - View complete persona details
213
- - **`reload_elements type="personas"`** - Refresh personas from filesystem
214
-
215
- > **📖 Migration**: Legacy PersonaTools were removed in v1.6.0. See [PersonaTools Migration Guide](docs/PERSONATOOLS_MIGRATION_GUIDE.md) for complete migration instructions.
216
-
217
- ## 🔒 Enterprise-Grade Security
218
-
219
- DollhouseMCP implements comprehensive security measures to protect your personas and system:
220
-
221
- ### Security Features
222
- - **🛡️ Content Sanitization**: DOMPurify integration prevents XSS attacks in persona content
223
- - **📝 YAML Injection Prevention**: Secure parsing with schema validation and size limits
224
- - **🔐 Token Security**: GitHub OAuth device flow authentication with AES-256-GCM encrypted storage
225
- - **🐳 Container Hardening**: Non-root execution, read-only filesystem, resource limits
226
- - **🚦 Rate Limiting**: Token bucket algorithm prevents API abuse (10 checks/hour default)
227
- - **✅ Signature Verification**: GPG verification ensures release authenticity
228
- - **🔍 Input Validation**: Comprehensive validation for all user inputs
229
- - **📊 Security Monitoring**: Audit logging for security-relevant operations
230
-
231
- ### Security Testing
232
- - **487 comprehensive tests** including security-specific test suites
233
- - **Continuous security scanning** with GitHub Advanced Security
234
- - **Vulnerability-free**: All security alerts resolved (0 active)
235
-
236
- ## 📋 Prerequisites
237
-
238
- - **Node.js**: v20.0.0 or higher (LTS recommended)
239
- - **npm**: v10.0.0 or higher
240
- - **git**: For cloning the repository
241
- - **Operating System**: Windows, macOS, or Linux
242
-
243
- > **Note**: DollhouseMCP is developed on Node.js 24 but supports Node.js 20+ for broad compatibility.
244
-
245
- ## 🚀 Quick Start
246
-
247
- ### Installation
248
-
249
- #### NPM Installation (NEW! - Recommended)
250
-
251
- ```bash
252
- npm install -g @dollhousemcp/mcp-server
253
- ```
254
-
255
- After installation, add DollhouseMCP to your Claude Desktop configuration:
256
-
257
- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
258
- **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
259
- **Linux**: `~/.config/Claude/claude_desktop_config.json`
63
+ Add to your config file:
64
+ - **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
65
+ - **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
66
+ - **Linux**: `~/.config/Claude/claude_desktop_config.json`
260
67
 
261
68
  ```json
262
69
  {
263
70
  "mcpServers": {
264
71
  "dollhousemcp": {
265
- "command": "npx",
266
- "args": ["@dollhousemcp/mcp-server"]
72
+ "command": "node",
73
+ "args": ["/Users/YOUR_USERNAME/mcp-servers/node_modules/@dollhousemcp/mcp-server/dist/index.js"]
267
74
  }
268
75
  }
269
76
  }
270
77
  ```
271
78
 
272
- > **Note**: If you have other MCP servers configured, add dollhousemcp to your existing mcpServers object.
273
-
274
- #### Automated Setup (Alternative) - Claude Desktop Only
275
-
276
- > [!WARNING]
277
- > **Claude Desktop Only**: The automated setup script is specifically designed for **Claude Desktop** integration. If you're using **Claude Code**, other AI platforms (ChatGPT, BoltAI, Gemini, etc.), or custom MCP implementations, please use the [Manual Installation](#manual-installation) process below.
278
-
279
- ```bash
280
- # Clone the repository
281
- git clone https://github.com/DollhouseMCP/mcp-server.git
282
- cd mcp-server
283
-
284
- # Run automated setup script (Claude Desktop only)
285
- ./setup.sh
286
- ```
287
-
288
- The setup script will:
289
- - 📦 Install all dependencies
290
- - 🔨 Build the TypeScript code
291
- - 📍 Detect your installation path
292
- - 🔧 Generate the exact Claude Desktop configuration
293
- - 📋 Provide step-by-step setup instructions
294
-
295
- #### Manual Installation
79
+ 💡 **Pro tip**: Replace `/Users/YOUR_USERNAME` with your actual home directory path.
296
80
 
297
- > **Note**: Manual installation works with all MCP-compatible platforms including Claude Desktop, Claude Code, ChatGPT, BoltAI, Gemini, and custom implementations.
298
-
299
- ```bash
300
- # Clone the repository
301
- git clone https://github.com/DollhouseMCP/mcp-server.git
302
- cd mcp-server
303
-
304
- # Install dependencies and build
305
- npm install
306
- npm run build
307
-
308
- # Optional: Set user identity for persona attribution
309
- export DOLLHOUSE_USER="your-username"
310
- export DOLLHOUSE_EMAIL="your-email@example.com"
311
- ```
312
-
313
- ### Claude Desktop Configuration
81
+ ---
314
82
 
315
- Add DollhouseMCP to your Claude Desktop configuration:
83
+ ### Method 2: Always Latest with npx
316
84
 
317
- **Location**: `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS)
85
+ No installation needed! Configure Claude Desktop to always use the latest version:
318
86
 
319
- #### For NPM Installation:
320
87
  ```json
321
88
  {
322
89
  "mcpServers": {
323
90
  "dollhousemcp": {
324
91
  "command": "npx",
325
- "args": ["@dollhousemcp/mcp-server"]
92
+ "args": ["@dollhousemcp/mcp-server@latest"]
326
93
  }
327
94
  }
328
95
  }
329
96
  ```
330
97
 
331
- #### For Source Installation:
332
- ```json
333
- {
334
- "mcpServers": {
335
- "dollhousemcp": {
336
- "command": "node",
337
- "args": ["/absolute/path/to/DollhouseMCP/dist/index.js"]
338
- }
339
- }
340
- }
341
- ```
342
-
343
- **🔄 After configuration:**
344
- 1. Save the file
345
- 2. Restart Claude Desktop completely
346
- 3. All 42 DollhouseMCP tools will be available
347
-
348
- ## 🛠️ Available Tools (42 Total)
349
-
350
- ### Portfolio Element Management (NEW!)
351
- - **`list_elements`** - List all elements of a specific type
352
- - **`activate_element`** - Activate an element by name and type
353
- - **`get_active_elements`** - Get currently active elements of a type
354
- - **`deactivate_element`** - Deactivate a specific element
355
- - **`get_element_details`** - View detailed information about an element
356
- - **`reload_elements`** - Refresh elements from filesystem
357
-
358
- ### Element-Specific Operations (NEW!)
359
- - **`render_template`** - Render a template element with provided variables
360
- - **`execute_agent`** - Execute an agent element with a specific goal
361
-
362
- ### Persona Export/Import (Specialized Tools)
363
- - **`export_persona`** - Export single persona to JSON format
364
- - **`export_all_personas`** - Export all personas to JSON bundle
365
- - **`import_persona`** - Import persona from file path or JSON string
366
- - **`share_persona`** - Generate shareable URL for persona
367
- - **`import_from_url`** - Import persona from shared URL
368
-
369
- ### GitHub Collection Integration
370
- - **`browse_collection`** - Browse content by section and type (flat structure, no categories)
371
- - **`search_collection`** - Search across all collection content
372
- - **`search_collection_enhanced`** - Enhanced search with pagination, filtering, and sorting
373
- - **`get_collection_content`** - View detailed content info
374
- - **`get_collection_cache_health`** - Monitor collection cache status and performance
375
- - **`install_element`** - One-click download and installation of any element type
376
- - **`submit_persona`** - Submit to collection via GitHub issue
377
-
378
- ### GitHub Portfolio Management (NEW!)
379
- - **`portfolio_status`** - Check your GitHub portfolio repository status
380
- - **`init_portfolio`** - Create a new GitHub portfolio repository
381
- - **`sync_portfolio`** - Synchronize local and GitHub repositories
382
- - **`search_portfolio`** - Search your local portfolio with advanced indexing
383
- - **`search_all`** - Unified search across local, GitHub, and collection sources
384
- - **`submit_content`** - Upload elements to your GitHub portfolio
385
-
386
- ### Collection Configuration (NEW!)
387
- - **`configure_collection_submission`** - Configure auto-submit and default settings
388
- - **`get_collection_submission_config`** - View current submission configuration
389
-
390
- ### User Identity Management
391
- - **`set_user_identity`** - Set username for persona attribution
392
- - **`get_user_identity`** - View current identity status
393
- - **`clear_user_identity`** - Return to anonymous mode
394
-
395
-
396
- ### System Tools
397
- - **`get_build_info`** - Comprehensive build and runtime information
398
-
399
- ### Persona Indicators
400
- - **`configure_indicator`** - Configure how persona indicators appear in AI responses
401
- - **`get_indicator_config`** - View current indicator configuration settings
402
-
403
- ### GitHub Authentication (NEW!)
404
- - **`setup_github_auth`** - Start GitHub OAuth device flow authentication
405
- - **`check_github_auth`** - Check current authentication status
406
- - **`clear_github_auth`** - Remove stored authentication credentials
407
-
408
- ## 📖 Usage Examples
409
-
410
- ### Collection Operations
411
- ```
412
- # Browse collection content by type
413
- browse_collection section="library" type="personas" # Browse all personas
414
- browse_collection section="library" type="skills" # Browse skills
415
- browse_collection section="library" type="templates" # Browse templates
416
-
417
- # Search collection content
418
- search_collection query="writing" # Search for writing personas
419
- search_collection query="code review" # Find code review skills
420
-
421
- # Enhanced collection search with pagination
422
- search_collection_enhanced query="data analysis" maxResults=10 elementType="skills"
423
- search_collection_enhanced query="creative" page=2 resultsPerPage=5
424
-
425
- # Install elements from collection
426
- install_element path="library/personas/storyteller.md" # Install persona
427
- install_element path="library/skills/code-reviewer.md" # Install skill
428
- install_element path="library/templates/email-template.md" # Install template
429
-
430
- # Check collection cache health
431
- get_collection_cache_health
432
- ```
433
-
434
- ### Portfolio Workflow (NEW!)
435
- ```
436
- # Check GitHub portfolio status
437
- portfolio_status # Check repository status
438
-
439
- # Initialize a new GitHub portfolio (first time setup)
440
- init_portfolio # Create GitHub repository
441
- init_portfolio repoName="my-ai-portfolio" # Custom repository name
442
-
443
- # Synchronize local and GitHub portfolios
444
- sync_portfolio # Sync both directions
445
- sync_portfolio direction="push" # Push local to GitHub
446
- sync_portfolio direction="pull" # Pull GitHub to local
447
-
448
- # Search your local portfolio with advanced indexing
449
- search_portfolio query="writing" # Search all element types
450
- search_portfolio query="code" elementType="skills" # Search specific type
451
- search_portfolio query="email" fuzzyMatch=true # Enable fuzzy matching
452
-
453
- # Unified search across all sources (local, GitHub, collection)
454
- search_all query="data analysis" # Search everywhere
455
- search_all query="creative writing" maxResults=20 # Limit results
456
- search_all query="templates" source="local" # Search specific source
457
-
458
- # Submit content with smart auto-detection
459
- submit_content name="code-review" # Auto-detects element type
460
- submit_content name="my-persona" elementType="personas" # Explicit type
461
- submit_content name="email-template" description="Professional email template"
462
-
463
- # Configure collection submission settings
464
- configure_collection_submission autoSubmit=true # Enable auto-submit
465
- configure_collection_submission defaultLicense="MIT" # Set default license
466
- get_collection_submission_config # View current config
467
- ```
468
-
469
- ### Portfolio Element Management
470
- ```
471
- # List elements by type (works with all element types)
472
- list_elements type="personas" # List personas
473
- list_elements type="skills" # List skills
474
- list_elements type="templates" # List templates
475
- list_elements type="agents" # List agents
476
-
477
- # Activate elements to customize AI behavior
478
- activate_element name="code-reviewer" type="skills" # Activate skill
479
- activate_element name="professional" type="personas" # Activate persona
480
- activate_element name="email-format" type="templates" # Activate template
481
-
482
- # View active elements
483
- get_active_elements # All active elements
484
- get_active_elements type="skills" # Active skills only
485
-
486
- # Get detailed element information
487
- get_element_details name="code-reviewer" type="skills" # View skill details
488
- get_element_details name="my-persona" type="personas" # View persona details
489
-
490
- # Deactivate elements
491
- deactivate_element name="code-reviewer" type="skills" # Deactivate specific
492
- deactivate_element type="personas" # Deactivate all personas
493
-
494
- # Refresh elements from filesystem
495
- reload_elements # Reload all elements
496
- reload_elements type="skills" # Reload specific type
497
- ```
498
-
499
- ### Specialized Element Operations
500
- ```
501
- # Render templates with variables
502
- render_template name="project-update" variables='{"project": "DollhouseMCP", "status": "Released"}'
503
- render_template name="email-professional" variables='{"recipient": "John", "subject": "Meeting"}'
504
-
505
- # Execute agents with specific goals
506
- execute_agent name="project-manager" goal="Create a sprint plan for next week"
507
- execute_agent name="data-analyst" goal="Analyze sales trends for Q3"
508
- ```
509
-
510
- ### System Information
511
- ```
512
- # Get comprehensive build and runtime information
513
- get_build_info # Full system info
514
- get_build_info section="version" # Version info only
515
- get_build_info section="environment" # Environment details
516
- get_build_info section="dependencies" # Dependency versions
517
- ```
518
-
519
- ### Persona Management with ElementTools
520
- ```
521
- # List all personas
522
- list_elements type="personas"
523
-
524
- # Activate a persona
525
- activate_element name="Study Buddy" type="personas"
526
-
527
- # Get persona details
528
- get_element_details name="Study Buddy" type="personas"
529
-
530
- # Submit to community collection
531
- submit_persona "Study Buddy" # Share with community
532
- ```
533
-
534
- ### User Identity
535
- ```
536
- set_user_identity "your-username" # Set attribution
537
- get_user_identity # Check current status
538
- clear_user_identity # Return to anonymous
539
- ```
540
-
541
-
542
-
543
-
544
- ### Persona Indicators
545
- DollhouseMCP adds visual indicators to AI responses when a persona is active:
546
- ```
547
- [🎭 Creative Writer v2.1 by @mickdarling] Your creative response here...
548
- ```
549
-
550
- Configure indicators:
551
- ```
552
- get_indicator_config # View current settings
553
- configure_indicator enabled:false # Disable indicators
554
- configure_indicator style:"minimal" # Use minimal format: 🎭 Creative Writer
555
- configure_indicator style:"compact" # Use compact: [Creative Writer v2.1]
556
- configure_indicator style:"full" # Full format (default)
557
- configure_indicator emoji:"🤖" # Change emoji
558
- configure_indicator showAuthor:false # Hide author attribution
559
- configure_indicator bracketStyle:"round" # Use (parentheses) instead of [brackets]
560
- ```
561
-
562
- Environment variables for persistent configuration:
563
- ```bash
564
- export DOLLHOUSE_INDICATOR_ENABLED=true
565
- export DOLLHOUSE_INDICATOR_STYLE=minimal
566
- export DOLLHOUSE_INDICATOR_EMOJI=🎨
567
- ```
568
-
569
- ## 🔄 Complete Workflows
570
-
571
- ### Setting Up Portfolio from Scratch
572
-
573
- **Step 1: Initial Setup**
574
- ```
575
- # Set your user identity for attribution
576
- set_user_identity "your-username"
577
-
578
- # Check current portfolio status
579
- portfolio_status
580
-
581
- # Initialize a new GitHub portfolio repository
582
- init_portfolio repoName="my-ai-portfolio"
583
- ```
584
-
585
- **Step 2: Browse and Install Elements**
586
- ```
587
- # Browse the community collection
588
- browse_collection section="library" type="personas"
589
- browse_collection section="library" type="skills"
590
-
591
- # Search for specific elements
592
- search_collection query="code review"
593
- search_collection_enhanced query="data analysis" elementType="skills" maxResults=5
594
-
595
- # Install elements you like
596
- install_element path="library/skills/code-reviewer.md"
597
- install_element path="library/personas/technical-writer.md"
598
- install_element path="library/templates/project-update.md"
599
- ```
600
-
601
- **Step 3: Customize and Activate**
602
- ```
603
- # Activate installed elements
604
- activate_element name="code-reviewer" type="skills"
605
- activate_element name="technical-writer" type="personas"
606
-
607
- # View your active elements
608
- get_active_elements
609
-
610
- # Get details about any element
611
- get_element_details name="technical-writer" type="personas"
612
- ```
613
-
614
- **Step 4: Sync and Share**
615
- ```
616
- # Submit your custom content to GitHub portfolio
617
- submit_content name="My Assistant"
618
-
619
- # Sync everything to GitHub
620
- sync_portfolio direction="push"
621
-
622
- # Optionally submit personas to community collection
623
- submit_persona name="My Assistant"
624
- ```
625
-
626
- ### Searching Across All Sources
627
-
628
- **Unified Search Example**
629
- ```
630
- # Search everything (local portfolio, GitHub portfolio, community collection)
631
- search_all query="writing assistant"
632
-
633
- # Search with filters
634
- search_all query="code" elementType="skills" maxResults=10
635
-
636
- # Search specific sources
637
- search_all query="templates" source="collection" # Collection only
638
- search_all query="my content" source="local" # Local portfolio only
639
- search_all query="my content" source="github" # GitHub portfolio only
640
- ```
641
-
642
- **Advanced Portfolio Search**
643
- ```
644
- # Search your local portfolio with fuzzy matching
645
- search_portfolio query="analysi" fuzzyMatch=true # Finds "analysis" elements
646
-
647
- # Search by element type
648
- search_portfolio query="email" elementType="templates"
649
- search_portfolio query="review" elementType="skills"
650
-
651
- # Get all elements of a type
652
- list_elements type="personas"
653
- list_elements type="agents"
654
- ```
655
-
656
- ### Content Submission with Auto-Detection
657
-
658
- **Smart Element Detection**
659
- ```
660
- # System automatically detects element type
661
- submit_content name="code-review" # Finds in skills/
662
- submit_content name="email-template" # Finds in templates/
663
- submit_content name="my-persona" # Finds in personas/
664
-
665
- # Add description for better documentation
666
- submit_content name="data-analyzer" description="Advanced data analysis skill"
667
-
668
- # Override auto-detection if needed
669
- submit_content name="ambiguous-name" elementType="skills"
670
- ```
671
-
672
- **Batch Content Management**
673
- ```
674
- # Configure submission settings
675
- configure_collection_submission autoSubmit=true
676
- configure_collection_submission defaultLicense="CC-BY-SA-4.0"
677
-
678
- # Check configuration
679
- get_collection_submission_config
680
-
681
- # Submit multiple elements
682
- submit_content name="skill-1"
683
- submit_content name="skill-2"
684
- submit_content name="template-1"
685
-
686
- # Sync all changes to GitHub
687
- sync_portfolio
688
- ```
689
-
690
- ### Daily Workflow Example
691
-
692
- **Morning Setup**
693
- ```
694
- # Check for updates
695
- get_build_info section="version"
696
- portfolio_status
697
-
698
- # Activate your daily toolkit
699
- activate_element name="code-reviewer" type="skills"
700
- activate_element name="professional" type="personas"
701
- activate_element name="email-template" type="templates"
702
-
703
- # Check what's active
704
- get_active_elements
705
- ```
706
-
707
- **During Work**
708
- ```
709
- # Use templates for communication
710
- render_template name="email-template" variables='{"recipient": "team", "subject": "Sprint Update"}'
711
-
712
- # Deploy agents for tasks
713
- execute_agent name="project-manager" goal="Review pending tasks and prioritize"
714
-
715
- # Search for tools as needed
716
- search_all query="debugging" elementType="skills"
717
- ```
718
-
719
- **End of Day**
720
- ```
721
- # Save any new content
722
- submit_content name="new-skill"
723
- submit_content name="daily-template"
724
-
725
- # Sync to GitHub
726
- sync_portfolio
727
-
728
- # Check system health
729
- get_collection_cache_health
730
- ```
731
-
732
- ### GitHub Authentication (v1.5.0+)
733
-
734
- DollhouseMCP supports GitHub OAuth device flow authentication for enhanced features. **FIXED in v1.6.2**: Default OAuth client ID now works correctly - no configuration needed!
735
-
736
- #### OAuth Setup (For Self-Hosting)
737
-
738
- If you're self-hosting or developing, you need to configure a GitHub OAuth app:
739
-
740
- 1. **Create GitHub OAuth App**:
741
- - Go to GitHub → Settings → Developer settings → OAuth Apps → New OAuth App
742
- - **Application name**: `DollhouseMCP Server`
743
- - **Homepage URL**: `https://github.com/DollhouseMCP/mcp-server`
744
- - **Authorization callback URL**: `http://localhost:12345/callback` (required but not used)
745
- - Click "Register application"
746
-
747
- 2. **Enable Device Flow**:
748
- - In your OAuth app settings, check ✅ **Enable Device Flow**
749
- - Copy your Client ID (format: `Ov23liXXXXXXXXXXXXXX`)
750
-
751
- 3. **Configure Environment**:
752
- ```bash
753
- # Add to your shell profile (.bashrc, .zshrc, etc)
754
- export DOLLHOUSE_GITHUB_CLIENT_ID="your_client_id_here"
755
-
756
- # Or in Claude Desktop config:
757
- "env": {
758
- "DOLLHOUSE_GITHUB_CLIENT_ID": "your_client_id_here"
759
- }
760
- ```
761
-
762
- See [OAuth Setup Guide](docs/setup/OAUTH_SETUP.md) for detailed instructions.
763
-
764
- #### Using Authentication
765
-
766
- ```
767
- setup_github_auth # Start OAuth device flow
768
- check_github_auth # Check authentication status
769
- clear_github_auth # Remove stored credentials
770
- ```
771
-
772
- **Features:**
773
- - 🔐 **Secure Token Storage**: Tokens encrypted with AES-256-GCM
774
- - 📱 **Device Flow**: No need to manually create or paste tokens
775
- - 🔄 **Automatic Token Management**: Secure storage and retrieval
776
- - 🛡️ **Rate Limiting**: Built-in protection against API abuse
777
- - ✅ **Unicode Security**: Prevents homograph attacks
778
-
779
- **How It Works:**
780
- 1. Run `setup_github_auth` to start the OAuth flow
781
- 2. Visit the provided URL and enter the user code
782
- 3. Authorize DollhouseMCP in your browser
783
- 4. Authentication completes automatically
784
- 5. Token is securely stored for future use
785
-
786
- **Example Usage:**
787
- ```
788
- # First-time setup
789
- setup_github_auth
790
- # Copy the user code: XXXX-XXXX
791
- # Visit: https://github.com/login/device
792
- # Enter the code and authorize
793
-
794
- # Check status
795
- check_github_auth
796
- # ✅ Authenticated as: your-username
797
-
798
- # Later sessions automatically use stored token
799
- browse_collection # Works with authenticated access
800
- ```
801
-
802
- ## 🖥️ Cross-Platform Installation
98
+ 📝 **Note**: The `@latest` tag ensures you always get the newest version. Remove it to use npm's cached version.
803
99
 
804
- ### 🐧 Linux Installation
805
-
806
- #### Prerequisites
807
- - **Node.js**: v20.0.0 or higher
808
- - **npm**: v10.0.0 or higher
809
- - **git**: For version control
810
-
811
- ```bash
812
- # Ubuntu/Debian
813
- sudo apt update
814
- sudo apt install -y nodejs npm git
815
- # Verify Node.js version
816
- node --version # Should be v20.0.0 or higher
817
-
818
- # CentOS/RHEL/Fedora
819
- sudo dnf install -y nodejs npm git
820
- # Verify Node.js version
821
- node --version # Should be v20.0.0 or higher
822
-
823
- # Arch Linux
824
- sudo pacman -S nodejs npm git
825
- # Verify Node.js version
826
- node --version # Should be v20.0.0 or higher
827
- ```
100
+ ---
828
101
 
829
- > **Note**: If your system's Node.js is older than v20, install from [NodeSource](https://github.com/nodesource/distributions) or use [nvm](https://github.com/nvm-sh/nvm).
102
+ ### Method 3: Global Installation
830
103
 
831
- #### Installation Steps
832
104
  ```bash
833
- # Clone and build
834
- git clone https://github.com/DollhouseMCP/mcp-server.git
835
- cd mcp-server
836
- npm install
837
- npm run build
838
-
839
- # Optional: Set user identity
840
- export DOLLHOUSE_USER="your-username"
841
- export DOLLHOUSE_EMAIL="your-email@example.com"
105
+ # Install globally (may require sudo/admin)
106
+ npm install -g @dollhousemcp/mcp-server
842
107
  ```
843
108
 
844
- #### Claude Desktop Configuration (Linux)
845
- ```bash
846
- # Configuration location
847
- ~/.config/Claude/claude_desktop_config.json
109
+ **Configure Claude Desktop:**
848
110
 
849
- # Or use XDG_CONFIG_HOME if set
850
- $XDG_CONFIG_HOME/Claude/claude_desktop_config.json
851
- ```
852
-
853
- Configuration content:
854
111
  ```json
855
112
  {
856
113
  "mcpServers": {
857
114
  "dollhousemcp": {
858
- "command": "node",
859
- "args": ["/absolute/path/to/DollhouseMCP/dist/index.js"]
115
+ "command": "dollhousemcp"
860
116
  }
861
117
  }
862
118
  }
863
119
  ```
864
120
 
865
- ### 🪟 Windows Installation
866
-
867
- #### Prerequisites
868
- - **Node.js**: v20.0.0 or higher
869
- - **npm**: v10.0.0 or higher (included with Node.js)
870
- - **git**: For version control
121
+ ⚠️ **Warning**: Only one version system-wide. Consider local installation for more flexibility.
871
122
 
872
- ```powershell
873
- # Install Node.js from https://nodejs.org/ (download LTS version)
874
- # Or using Chocolatey
875
- choco install nodejs --version=20.18.0
876
- choco install git
877
-
878
- # Or using winget
879
- winget install OpenJS.NodeJS Git.Git
880
-
881
- # Verify Node.js version
882
- node --version # Should be v20.0.0 or higher
883
- ```
884
-
885
- #### Installation Steps (PowerShell)
886
- ```powershell
887
- # Clone and build
888
- git clone https://github.com/DollhouseMCP/mcp-server.git
889
- cd mcp-server
890
- npm install
891
- npm run build
892
-
893
- # Optional: Set user identity
894
- $env:DOLLHOUSE_USER = "your-username"
895
- $env:DOLLHOUSE_EMAIL = "your-email@example.com"
896
- ```
897
-
898
- #### Claude Desktop Configuration (Windows)
899
- ```powershell
900
- # Configuration location
901
- $env:APPDATA\Claude\claude_desktop_config.json
902
- ```
903
-
904
- Configuration content (use forward slashes or double backslashes):
905
- ```json
906
- {
907
- "mcpServers": {
908
- "dollhousemcp": {
909
- "command": "node",
910
- "args": ["C:/path/to/DollhouseMCP/dist/index.js"]
911
- }
912
- }
913
- }
914
- ```
123
+ ---
915
124
 
916
- ### 🍎 macOS Installation
125
+ ### 🎯 Advanced: Multiple Configurations
917
126
 
918
- #### Prerequisites
919
- - **Node.js**: v20.0.0 or higher
920
- - **npm**: v10.0.0 or higher (included with Node.js)
921
- - **git**: For version control
127
+ Want separate portfolios for different contexts? Create multiple local installations:
922
128
 
923
129
  ```bash
924
- # Using Homebrew (recommended)
925
- brew install node git
130
+ # Personal assistant
131
+ mkdir ~/mcp-servers/personal
132
+ cd ~/mcp-servers/personal
133
+ npm install @dollhousemcp/mcp-server
926
134
 
927
- # Or download from https://nodejs.org/ (LTS version)
135
+ # Work assistant
136
+ mkdir ~/mcp-servers/work
137
+ cd ~/mcp-servers/work
138
+ npm install @dollhousemcp/mcp-server
928
139
 
929
- # Verify Node.js version
930
- node --version # Should be v20.0.0 or higher
140
+ # Creative writing
141
+ mkdir ~/mcp-servers/creative
142
+ cd ~/mcp-servers/creative
143
+ npm install @dollhousemcp/mcp-server
931
144
  ```
932
145
 
933
- #### Installation Steps
934
- ```bash
935
- # Clone and build
936
- git clone https://github.com/DollhouseMCP/mcp-server.git
937
- cd mcp-server
938
- npm install
939
- npm run build
940
-
941
- # Optional: Set user identity
942
- export DOLLHOUSE_USER="your-username"
943
- export DOLLHOUSE_EMAIL="your-email@example.com"
944
- ```
945
-
946
- #### Claude Desktop Configuration (macOS)
947
- ```bash
948
- # Configuration location
949
- ~/Library/Application Support/Claude/claude_desktop_config.json
950
- ```
146
+ **Configure each with its own portfolio:**
951
147
 
952
- Configuration content:
953
148
  ```json
954
149
  {
955
150
  "mcpServers": {
956
- "dollhousemcp": {
151
+ "dollhouse-personal": {
152
+ "command": "node",
153
+ "args": ["/Users/YOU/mcp-servers/personal/node_modules/@dollhousemcp/mcp-server/dist/index.js"],
154
+ "env": {
155
+ "DOLLHOUSE_PORTFOLIO_DIR": "/Users/YOU/portfolios/personal"
156
+ }
157
+ },
158
+ "dollhouse-work": {
957
159
  "command": "node",
958
- "args": ["/absolute/path/to/DollhouseMCP/dist/index.js"]
160
+ "args": ["/Users/YOU/mcp-servers/work/node_modules/@dollhousemcp/mcp-server/dist/index.js"],
161
+ "env": {
162
+ "DOLLHOUSE_PORTFOLIO_DIR": "/Users/YOU/portfolios/work"
163
+ }
959
164
  }
960
165
  }
961
166
  }
962
167
  ```
963
168
 
964
- ## 🐳 Docker Installation
965
-
966
- ### Quick Start with Docker
967
- ```bash
968
- # Clone repository
969
- git clone https://github.com/DollhouseMCP/mcp-server.git
970
- cd mcp-server
971
-
972
- # Build and run with Docker Compose
973
- docker-compose up -d
974
-
975
- # Or build manually
976
- docker build -t dollhousemcp .
977
- docker run -d --name dollhousemcp dollhousemcp
978
- ```
169
+ Now you can enable/disable different configurations in Claude Desktop as needed!
979
170
 
980
- ### Docker Compose (Recommended)
981
-
982
- #### Production deployment:
983
- ```bash
984
- docker-compose up -d
985
- ```
986
-
987
- #### Development with hot reload:
988
- ```bash
989
- docker-compose --profile dev up dollhousemcp-dev
990
- ```
171
+ ---
991
172
 
992
- ### Custom Personas with Docker
993
- ```bash
994
- # Mount your custom personas directory
995
- docker run -d \
996
- --name dollhousemcp \
997
- -v /path/to/your/personas:/app/personas \
998
- -e DOLLHOUSE_USER="your-username" \
999
- dollhousemcp
1000
- ```
173
+ ### Verify Installation
1001
174
 
1002
- ### Docker Environment Variables
1003
- ```bash
1004
- # Set user identity
1005
- DOLLHOUSE_USER=your-username
1006
- DOLLHOUSE_EMAIL=your-email@example.com
175
+ After configuring and restarting Claude Desktop, test with:
1007
176
 
1008
- # Custom personas directory (inside container)
1009
- PERSONAS_DIR=/app/personas
1010
-
1011
- # Node.js environment
1012
- NODE_ENV=production
1013
177
  ```
1014
-
1015
- ## 🧪 Testing
1016
-
1017
- ### Running Tests
1018
-
1019
- The project includes comprehensive tests for cross-platform compatibility:
1020
-
1021
- ```bash
1022
- # Run all tests
1023
- npm test
1024
-
1025
- # Run tests with coverage
1026
- npm run test:coverage
1027
-
1028
- # Run tests in watch mode (for development)
1029
- npm run test:watch
1030
-
1031
- # Run specific test suites
1032
- npm run test:personas
1033
- npm run test:collection
178
+ list_elements type="personas"
1034
179
  ```
1035
180
 
1036
- ### Test Coverage
1037
-
1038
- Current test coverage includes:
1039
- - ✅ **102 comprehensive tests** covering all functionality
1040
- - ✅ **Auto-update system** - GitHub API, backup/rollback, dependency validation
1041
- - ✅ **Security testing** - Command injection prevention, input validation
1042
- - ✅ **Cross-platform compatibility** - Windows, macOS, Linux path handling
1043
- - ✅ **Version validation** - Parsing tests for git/npm output formats
1044
- - ✅ **Edge case coverage** - Network failures, missing dependencies, malformed input
1045
-
1046
- ### Manual Verification
1047
-
1048
- Verify your setup works correctly:
1049
-
1050
- ```bash
1051
- # Build the project
1052
- npm run build
1053
-
1054
- # Test the server (should output server info)
1055
- node dist/index.js --help 2>/dev/null || echo "Server compiled successfully"
181
+ You should see your available personas. If not, check the [Troubleshooting](#troubleshooting) section.
1056
182
 
1057
- # Verify personas directory
1058
- ls -la personas/
1059
- ```
1060
-
1061
- ## ☁️ Cloud Deployment
183
+ ---
1062
184
 
1063
- ### Container Registries
185
+ ### 📁 Default Portfolio Location
1064
186
 
1065
- The project supports deployment to:
1066
- - **GitHub Container Registry** (ghcr.io)
1067
- - **Docker Hub**
1068
- - **AWS ECR**
1069
- - **Google Container Registry**
187
+ By default, your elements are stored in:
188
+ - **macOS/Linux**: `~/.dollhouse/portfolio/`
189
+ - **Windows**: `%USERPROFILE%\.dollhouse\portfolio\`
1070
190
 
1071
- ### Example Cloud Deployments
191
+ Use the `DOLLHOUSE_PORTFOLIO_DIR` environment variable to customize this location.
1072
192
 
1073
- #### AWS ECS
1074
- ```json
1075
- {
1076
- "family": "dollhousemcp",
1077
- "containerDefinitions": [{
1078
- "name": "dollhousemcp",
1079
- "image": "ghcr.io/mickdarling/dollhousemcp:latest",
1080
- "memory": 512,
1081
- "cpu": 256,
1082
- "environment": [
1083
- {"name": "NODE_ENV", "value": "production"},
1084
- {"name": "PERSONAS_DIR", "value": "/app/personas"},
1085
- {"name": "DOLLHOUSE_USER", "value": "production"}
1086
- ]
1087
- }]
1088
- }
1089
- ```
193
+ ## 🎯 Getting Started
1090
194
 
1091
- #### Google Cloud Run
1092
- ```bash
1093
- gcloud run deploy dollhousemcp \
1094
- --image ghcr.io/mickdarling/dollhousemcp:latest \
1095
- --platform managed \
1096
- --region us-central1 \
1097
- --set-env-vars NODE_ENV=production,DOLLHOUSE_USER=production
1098
- ```
195
+ Once installed, try these commands in Claude:
1099
196
 
1100
- #### Azure Container Instances
1101
197
  ```bash
1102
- az container create \
1103
- --name dollhousemcp \
1104
- --resource-group myResourceGroup \
1105
- --image ghcr.io/mickdarling/dollhousemcp:latest \
1106
- --environment-variables NODE_ENV=production DOLLHOUSE_USER=production
1107
- ```
1108
-
1109
- ## 🏗️ Project Structure
1110
-
1111
- ```
1112
- DollhouseMCP/
1113
- ├── .github/
1114
- │ ├── actions/
1115
- │ │ └── validate-yaml/ # Reusable YAML validation action
1116
- │ ├── workflows/ # CI/CD workflows
1117
- │ └── ISSUE_TEMPLATE/ # Issue templates for bug/feature/task
1118
- ├── __tests__/
1119
- │ ├── unit/ # Unit tests for components
1120
- │ ├── integration/ # Integration tests
1121
- │ └── *.test.ts # Test files (600+ tests total)
1122
- ├── src/
1123
- │ ├── index.ts # Main MCP server (DollhouseMCPServer)
1124
- │ ├── cache/ # API caching layer
1125
- │ ├── config/ # Configuration management
1126
- │ ├── collection/ # GitHub collection integration
1127
- │ ├── persona/ # Persona management core
1128
- │ ├── security/ # Input validation and security
1129
- │ ├── server/ # MCP server setup and tools
1130
- │ ├── types/ # TypeScript type definitions
1131
- │ ├── update/ # Auto-update system components
1132
- │ └── utils/ # Utility functions
1133
- ├── dist/ # Compiled JavaScript (auto-generated)
1134
- ├── personas/ # Default persona collection
1135
- │ ├── creative-writer.md
1136
- │ ├── technical-analyst.md
1137
- │ ├── eli5-explainer.md
1138
- │ ├── business-consultant.md
1139
- │ └── debug-detective.md
1140
- ├── custom-personas/ # User-created personas (git-ignored)
1141
- ├── docs/ # Documentation
1142
- │ └── development/ # Development notes and guides
1143
- ├── scripts/ # Management and utility scripts
1144
- ├── Dockerfile # Multi-stage Docker build
1145
- ├── docker-compose.yml # Production and development configs
1146
- ├── package.json # Project config (dollhousemcp v1.6.10)
1147
- ├── tsconfig.json # TypeScript configuration
1148
- ├── jest.config.cjs # Jest test configuration
1149
- ├── setup.sh # Automated installation script
1150
- ├── LICENSE # AGPL-3.0 with platform stability
1151
- ├── CHANGELOG.md # Version history
1152
- ├── claude.md # Project context for Claude
1153
- └── README.md # This file
1154
- ```
1155
-
1156
- ## 📝 Creating Custom Personas
1157
-
1158
- ### Enhanced Persona Format
1159
-
1160
- Create `.md` files in the `personas/` directory with this structure:
1161
-
1162
- ```markdown
1163
- ---
1164
- name: "Your Persona Name"
1165
- description: "Brief description of what this persona does"
1166
- unique_id: "auto-generated-if-missing"
1167
- author: "your-username"
1168
- triggers: ["keyword1", "keyword2"]
1169
- version: "1.0"
1170
- category: "creative"
1171
- age_rating: "all"
1172
- ai_generated: false
1173
- generation_method: "human"
1174
- price: "free"
1175
- license: "CC-BY-SA-4.0"
1176
- ---
1177
-
1178
- # Your Persona Name
198
+ # Browse available personas
199
+ list_elements type="personas"
1179
200
 
1180
- Your persona instructions go here. This content defines how the AI should behave when this persona is activated.
201
+ # Activate a persona
202
+ activate_element name="creative-writer" type="personas"
1181
203
 
1182
- ## Response Style
1183
- - Communication guidelines
1184
- - Tone and approach
1185
- - Specific behaviors
204
+ # Browse the community collection
205
+ browse_collection type="personas"
1186
206
 
1187
- ## Key Techniques
1188
- - Problem-solving methods
1189
- - Interaction patterns
207
+ # Search for specific content
208
+ search_collection query="python" type="skills"
1190
209
  ```
1191
210
 
1192
- ### Metadata Fields
1193
-
1194
- #### Required Fields
1195
- | Field | Description |
1196
- |-------|-------------|
1197
- | `name` | Display name for the persona |
1198
- | `description` | Brief description of purpose and capabilities |
1199
-
1200
- #### Optional Fields
1201
- | Field | Description |
1202
- |-------|-------------|
1203
- | `unique_id` | Auto-generated in format: `what-it-is_YYYYMMDD-HHMMSS_who-made-it` |
1204
- | `author` | Creator username (uses DOLLHOUSE_USER environment variable or generates anonymous ID) |
1205
- | `category` | One of: creative, professional, educational, gaming, personal |
1206
- | `triggers` | Array of keywords that suggest when to use this persona |
1207
- | `version` | Semantic version number (auto-incremented on edits) |
1208
- | `age_rating` | Content rating: all, 13+, or 18+ |
1209
- | `ai_generated` | Boolean flag indicating if content was AI-created |
1210
- | `price` | Monetization field - **TODO: Future Release** (will support "free" or pricing tiers) |
1211
-
1212
- ## 📚 Built-in Personas
1213
-
1214
- | Persona | Purpose | Best For |
1215
- |---------|---------|----------|
1216
- | **Creative Writer** | Imaginative storytelling and creative content | Brainstorming, creative writing, engaging narratives |
1217
- | **Technical Analyst** | Deep technical analysis and systematic problem-solving | Architecture decisions, debugging, technical docs |
1218
- | **ELI5 Explainer** | Simplifying complex topics for beginners | Teaching, onboarding, concept explanation |
1219
- | **Business Consultant** | Strategic business analysis and recommendations | Strategy planning, business decisions, market analysis |
1220
- | **Debug Detective** | Systematic debugging and troubleshooting | Bug hunting, system troubleshooting, root cause analysis |
1221
-
1222
- ## 🏪 Collection Integration (Beta)
1223
-
1224
- > **🧪 Beta Feature**: The GitHub-powered collection is currently in beta. Features may change based on community feedback.
1225
-
1226
- DollhouseMCP includes an experimental GitHub-powered collection:
1227
-
1228
- - **Browse by Category**: creative, professional, educational, gaming, personal
1229
- - **Search Content**: Find personas by keywords and descriptions
1230
- - **One-Click Install**: Download and integrate collection personas
1231
- - **Community Submissions**: Submit your personas via `submit_persona` tool
1232
- - **Version Control**: Full Git history for all collection content
1233
-
1234
- > **Note**: Collection features require internet connection and GitHub API access. Rate limits may apply.
211
+ > **📘 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.
1235
212
 
1236
- ### ⚠️ Migration Guide - Breaking Changes
1237
-
1238
- **Important**: Tool names have changed in recent versions:
1239
- - `browse_marketplace` → `browse_collection`
1240
- - `search_marketplace` → `search_collection`
1241
- - `get_marketplace_persona` → `get_collection_content`
1242
-
1243
- If you have scripts or workflows using the old tool names, please update them to use the new names.
1244
-
1245
- ## 💼 Business Model & Legal
1246
-
1247
- ### Licensing
1248
- - **Core Server**: AGPL-3.0 (prevents proprietary competing platforms)
1249
- - **Persona Content**: CC-BY-SA-4.0 for free personas, custom licenses for premium
1250
- - **Platform Terms**: Creator-friendly 80/20 revenue split (applies only to paid personas when monetization is implemented)
1251
-
1252
- ### Platform Stability Commitments
1253
- - 90-day advance notice for monetization changes
1254
- - 12-month revenue sharing locks for existing paid personas
1255
- - Transparent governance for platform policy updates
1256
- - Full data portability rights
1257
- - Community advisory input on policy changes
1258
-
1259
- ## 🛠️ Development
1260
-
1261
- ### Available Scripts
1262
-
1263
- | Script | Description |
1264
- |--------|-------------|
1265
- | `npm run build` | Compile TypeScript to JavaScript |
1266
- | `npm run start` | Run the compiled server |
1267
- | `npm run dev` | Run in development mode with auto-reload |
1268
- | `npm run clean` | Remove compiled files |
1269
- | `npm run rebuild` | Clean and rebuild the project |
1270
- | `npm run setup` | Install dependencies and build |
1271
- | `npm test` | Run the comprehensive test suite |
1272
- | `npm run test:coverage` | Run tests with coverage reporting |
1273
-
1274
- ### Environment Variables
1275
-
1276
- Customize server behavior with these environment variables:
213
+ ## Key Features
1277
214
 
1278
- ```bash
1279
- # User Attribution
1280
- export DOLLHOUSE_USER="your-username" # User attribution for persona creation
1281
- export DOLLHOUSE_EMAIL="your-email" # Contact email (optional)
215
+ | Feature | Description |
216
+ |---------|-------------|
217
+ | 🎭 **41 MCP Tools** | Complete portfolio element management through chat interface |
218
+ | 🏪 **GitHub Collection** | Browse, search, install, and submit personas to community collection |
219
+ | 🔄 **Roundtrip Workflow** | Complete cycle: discover → customize → share → collaborate |
220
+ | 📁 **GitHub Portfolio** | Personal repository for storing and versioning your AI elements |
221
+ | 👤 **User Identity System** | Environment-based attribution for persona creators |
222
+ | 🆔 **Unique ID System** | Advanced ID generation: `{type}_{name}_{author}_{YYYYMMDD}-{HHMMSS}` |
223
+ | 💬 **Chat-Based Management** | Create, edit, and validate personas through conversational interface |
224
+ | 🔄 **Real-time Operations** | Live editing with automatic version bumping and validation |
225
+ | 📦 **NPM Installation** | Install MCP servers from npm with cross-platform support and atomic operations |
226
+ | 🛡️ **Data Protection** | Copy-on-write for default personas, comprehensive backup system |
227
+ | 🏠 **Local-First Architecture** | Full functionality without cloud dependency |
1282
228
 
1283
- # GitHub OAuth Configuration
1284
- export DOLLHOUSE_GITHUB_CLIENT_ID="Ov23li..." # OAuth app client ID (for self-hosting)
229
+ ## 🎨 Portfolio Elements
1285
230
 
1286
- # Directory Configuration
1287
- export PERSONAS_DIR="/custom/path/to/personas" # Custom personas directory
231
+ DollhouseMCP supports multiple element types for customizing AI behavior:
1288
232
 
1289
- # Auto-Update Configuration
1290
- export GITHUB_TOKEN="your-token" # For private repository access (optional)
233
+ | Element | Purpose | Status |
234
+ |---------|---------|--------|
235
+ | 🎭 **Personas** | Define AI personality, tone, and behavioral characteristics | ✅ Available |
236
+ | 🛠️ **Skills** | Add specific capabilities like code review, data analysis, or creative writing | ✅ Available |
237
+ | 📝 **Templates** | Create reusable response formats for emails, reports, documentation | ✅ Available |
238
+ | 🤖 **Agents** | Build autonomous assistants that can pursue goals and make decisions | ✅ Available |
239
+ | 💬 **Prompts** | Pre-configured conversation starters and structured interactions | 🔄 Coming Soon |
240
+ | 🧠 **Memory** | Persistent context storage with retention policies and search capabilities | 🔄 Coming Soon |
241
+ | 🎯 **Ensemble** | Orchestrate multiple elements together as one unified entity | 🔄 Coming Soon |
1291
242
 
1292
- # Development Configuration
1293
- export NODE_ENV="development" # Development mode
1294
- export DEBUG="dollhousemcp:*" # Debug logging (optional)
1295
- ```
243
+ Your portfolio lives in `~/.dollhouse/portfolio/` with elements organized by type.
1296
244
 
1297
245
  ## 🔧 Troubleshooting
1298
246
 
1299
- ### ⚠️ NPM Installation Issues (v1.4.2)
1300
-
1301
- If the MCP server crashes on startup after NPM installation:
1302
- 1. Check your version: `npm list -g @dollhousemcp/mcp-server`
1303
- 2. If you have v1.4.2, upgrade immediately: `npm install -g @dollhousemcp/mcp-server@latest`
1304
- 3. Clear your portfolio and let it regenerate: `rm -rf ~/.dollhouse/portfolio`
1305
-
1306
- **Note**: v1.4.2 had a critical bug that prevented proper initialization. v1.4.3 attempted to fix this but introduced new crashes. Both issues are fixed in v1.4.4.
1307
-
1308
- ### Directory Structure (v1.4.3+)
1309
-
1310
- As of v1.4.3, all element directories use plural names:
1311
- - `~/.dollhouse/portfolio/personas/` (was `persona/` in v1.4.2)
1312
- - `~/.dollhouse/portfolio/skills/` (was `skill/` in v1.4.2)
1313
- - `~/.dollhouse/portfolio/templates/` (was `template/` in v1.4.2)
1314
- - `~/.dollhouse/portfolio/agents/` (was `agent/` in v1.4.2)
1315
- - `~/.dollhouse/portfolio/memories/` (was `memory/` in v1.4.2)
1316
- - `~/.dollhouse/portfolio/ensembles/` (was `ensemble/` in v1.4.2)
1317
-
1318
- If you upgraded from v1.4.2, the server will automatically migrate your directories.
1319
-
1320
247
  ### Common Issues
1321
248
 
1322
249
  | Issue | Solution |
1323
250
  |-------|----------|
1324
- | **v1.4.2 or v1.4.3 installation broken** | Upgrade to v1.4.4+ immediately |
1325
251
  | **Personas not loading** | Check `~/.dollhouse/portfolio/personas/` directory exists |
1326
- | **Server won't start** | Run `npm run rebuild` to clean and rebuild |
252
+ | **Server won't start** | Ensure Node.js v20+ is installed: `node --version` |
1327
253
  | **Collection not working** | Check internet connection and GitHub API access |
1328
- | **User identity not saving** | Set `DOLLHOUSE_USER` environment variable before starting Claude |
1329
- | **"Cannot find module" errors** | Ensure `npm install` completed successfully |
1330
- | **TypeScript compilation errors** | Verify Node.js version is 20+ with `node --version` |
1331
254
  | **Tools not appearing in Claude** | Restart Claude Desktop completely after config changes |
1332
- | **Default personas modified** | v1.2.1+ uses copy-on-write; git restore if needed |
1333
- | **Update/rollback issues** | Check write permissions; disable with `DOLLHOUSE_DISABLE_UPDATES=true` |
255
+ | **"Cannot find module" errors** | Reinstall: `npm install -g @dollhousemcp/mcp-server@latest` |
1334
256
  | **Rate limit errors** | Wait 60 seconds; GitHub API has hourly limits |
1335
257
 
1336
- ### Debug Steps
1337
-
1338
- 1. **Check build status:**
1339
- ```bash
1340
- npm run build
1341
- ```
1342
-
1343
- 2. **Verify persona files:**
1344
- ```bash
1345
- ls -la personas/*.md
1346
- ```
1347
-
1348
- 3. **Test server startup:**
1349
- ```bash
1350
- node dist/index.js
1351
- ```
1352
-
1353
- 4. **Validate configuration:**
1354
- ```bash
1355
- # Check Claude Desktop config
1356
- cat ~/Library/Application\ Support/Claude/claude_desktop_config.json
1357
-
1358
- # Verify Node.js version (requires 20+)
1359
- node --version
1360
-
1361
- # Check npm version
1362
- npm --version
1363
- ```
1364
-
1365
- 5. **Check system status:**
1366
- ```bash
1367
- # Use within Claude Desktop
1368
- get_build_info # Get build and runtime information
1369
- ```
1370
-
1371
- 6. **Validate personas:**
1372
- Use the `reload_personas` tool to check for loading errors
1373
-
1374
- ## 📚 Documentation
1375
-
1376
- ### User Guides (START HERE!)
1377
- - **[🎯 Roundtrip Workflow Guide](docs/guides/ROUNDTRIP_WORKFLOW_USER_GUIDE.md)** - Complete workflow: discover → customize → share
1378
- - **[📁 Portfolio Setup Guide](docs/guides/PORTFOLIO_SETUP_GUIDE.md)** - Set up your GitHub portfolio step-by-step
1379
- - **[🔧 Troubleshooting Guide](docs/guides/TROUBLESHOOTING_ROUNDTRIP.md)** - Solutions for common workflow issues
1380
-
1381
- ### Element System Documentation
1382
- - **[Element Architecture](docs/ELEMENT_ARCHITECTURE.md)** - System design and core concepts
1383
- - **[Element Types Reference](docs/ELEMENT_TYPES.md)** - Detailed guide for all element types
1384
- - **[Developer Guide](docs/ELEMENT_DEVELOPER_GUIDE.md)** - How to create new element types
1385
- - **[API Reference](docs/API_REFERENCE.md)** - Complete MCP tool documentation
1386
- - **[Migration Guide](docs/MIGRATION_TO_PORTFOLIO.md)** - Upgrading from personas-only
1387
-
1388
- ### Setup & Configuration
1389
- - **[OAuth Setup Guide](docs/setup/OAUTH_SETUP.md)** - GitHub authentication configuration
1390
- - **[Anonymous Submission Guide](docs/ANONYMOUS_SUBMISSION_GUIDE.md)** - Use without GitHub authentication
1391
-
1392
- ### Additional Resources
1393
- - **[Security Guidelines](docs/SECURITY.md)** - Security best practices
1394
- - **[Contributing Guide](CONTRIBUTING.md)** - How to contribute
1395
-
1396
- ## 🤝 Contributing
1397
-
1398
- We welcome contributions! DollhouseMCP includes integrated tools for submitting personas directly from Claude.
1399
-
1400
- ### Integrated Contribution Process (Recommended)
1401
-
1402
- 1. **Create or modify a persona** using the chat-based tools:
1403
- ```
1404
- create_persona "My Awesome Persona" "A helpful assistant for..." "professional"
1405
- ```
1406
-
1407
- 2. **Validate your persona** to ensure quality:
1408
- ```
1409
- validate_persona "My Awesome Persona"
1410
- ```
1411
-
1412
- 3. **Submit to the collection** directly from Claude:
1413
- ```
1414
- submit_persona "My Awesome Persona"
1415
- ```
1416
- This automatically creates a GitHub issue for community review.
1417
-
1418
- ### Manual Contribution Process
1419
-
1420
- 1. Fork the repository
1421
- 2. Create persona files in `personas/` or `custom-personas/`
1422
- 3. Follow the metadata format and naming conventions
1423
- 4. Test thoroughly with `validate_persona` tool
1424
- 5. Submit a pull request with clear description
1425
-
1426
- ### Reporting Issues
1427
-
1428
- Please include:
1429
- - Node.js version (`node --version`)
1430
- - Operating system and version
1431
- - Complete error messages
1432
- - Steps to reproduce the issue
1433
- - Relevant persona files (if applicable)
1434
- - Claude Desktop configuration (without sensitive paths)
1435
-
1436
- ### Development Guidelines
1437
-
1438
- 1. **Follow TypeScript best practices**
1439
- 2. **Maintain existing code style and patterns**
1440
- 3. **Add comprehensive error handling**
1441
- 4. **Update documentation for new features**
1442
- 5. **Test thoroughly across platforms before submitting PRs**
1443
- 6. **Include tests for new functionality**
1444
- 7. **Follow semantic versioning for releases**
1445
-
1446
- ### Development Workflow
258
+ ### Need Help?
1447
259
 
1448
- ```bash
1449
- # Fork and clone
1450
- git clone https://github.com/your-username/DollhouseMCP.git
1451
- cd mcp-server
260
+ - 📖 [Full Troubleshooting Guide](docs/TROUBLESHOOTING.md)
261
+ - 💬 [GitHub Issues](https://github.com/DollhouseMCP/mcp-server/issues)
262
+ - 💭 [GitHub Discussions](https://github.com/DollhouseMCP/mcp-server/discussions)
1452
263
 
1453
- # Install dependencies
1454
- npm install
264
+ ## 📚 Resources
1455
265
 
1456
- # Create feature branch
1457
- git checkout -b feature/your-feature-name
266
+ ### Documentation
267
+ - [Roundtrip Workflow Guide](docs/guides/ROUNDTRIP_WORKFLOW_USER_GUIDE.md)
268
+ - [Portfolio Setup Guide](docs/guides/PORTFOLIO_SETUP_GUIDE.md)
269
+ - [Element Detection Guide](docs/guides/ELEMENT_DETECTION_GUIDE.md)
270
+ - [PersonaTools Migration Guide](docs/PERSONATOOLS_MIGRATION_GUIDE.md)
271
+ - [API Documentation](docs/API.md)
1458
272
 
1459
- # Make changes and test
1460
- npm run build
1461
- npm test
273
+ ### Community
274
+ - [GitHub Repository](https://github.com/DollhouseMCP/mcp-server)
275
+ - [NPM Package](https://www.npmjs.com/package/@dollhousemcp/mcp-server)
276
+ - [Community Collection](https://github.com/DollhouseMCP/collection)
277
+ - [Discord Community](https://discord.gg/dollhousemcp) (coming soon)
1462
278
 
1463
- # Commit and push
1464
- git commit -m "feat: your feature description"
1465
- git push origin feature/your-feature-name
1466
-
1467
- # Submit pull request
1468
- ```
1469
-
1470
- ## 📄 API Reference
1471
-
1472
- ### MCP Tool Specifications
1473
-
1474
- Each tool follows the MCP specification:
1475
-
1476
- ```typescript
1477
- interface DollhouseTool {
1478
- name: string;
1479
- description: string;
1480
- inputSchema: {
1481
- type: "object";
1482
- properties: Record<string, any>;
1483
- required?: string[];
1484
- };
1485
- }
1486
- ```
1487
-
1488
- ### Tool Categories
1489
-
1490
- #### Persona Export/Import
1491
- ```typescript
1492
- // export_persona - { persona: string }
1493
- // export_all_personas - { includeDefaults?: boolean }
1494
- // import_persona - { source: string, overwrite?: boolean }
1495
- // share_persona - { persona: string, expiryDays?: number }
1496
- // import_from_url - { url: string, overwrite?: boolean }
1497
- ```
1498
-
1499
- #### Collection Integration
1500
- ```typescript
1501
- // browse_collection - { section?: string, type?: string }
1502
- // search_collection - { query: string }
1503
- // get_collection_content - { path: string }
1504
- // install_element - { path: string, type?: string }
1505
- // submit_persona - { persona: string }
1506
- ```
1507
-
1508
- #### User Identity Management
1509
- ```typescript
1510
- // set_user_identity - { username: string }
1511
- // get_user_identity - No parameters
1512
- // clear_user_identity - No parameters
1513
- ```
1514
-
1515
-
1516
-
1517
- ### Error Handling
1518
-
1519
- The server provides detailed error messages for:
1520
- - **Invalid persona identifiers** - Clear suggestions for valid names
1521
- - **File system issues** - Permission and path resolution errors
1522
- - **Malformed persona files** - YAML parsing and validation errors
1523
- - **Network errors** - GitHub API and collection connectivity issues
1524
- - **Runtime errors** - Server startup and operation failures
1525
-
1526
- ### Response Formats
1527
-
1528
- All responses follow consistent patterns:
1529
- - **Success responses**: Include requested data and operation status
1530
- - **Error responses**: Include error type, message, and suggested resolution
1531
- - **Progress indicators**: Step-by-step feedback for long operations
1532
- - **Validation results**: Detailed reports with recommendations
279
+ ### Development
280
+ - [Contributing Guide](CONTRIBUTING.md)
281
+ - [Security Policy](SECURITY.md)
282
+ - [Full Changelog](CHANGELOG.md)
1533
283
 
1534
284
  ## 📄 License
1535
285
 
1536
- This project is licensed under the **AGPL-3.0** License with Platform Stability Commitments - see the [LICENSE](LICENSE) file for details.
1537
-
1538
- **Platform Stability Guarantees:**
1539
- - 90-day advance notice for policy changes
1540
- - 12-month revenue sharing locks
1541
- - Full data portability rights
1542
- - Community advisory input
1543
-
1544
- ## 🏷️ Version History
1545
-
1546
- ### v1.6.9 - August 26, 2025
1547
-
1548
- **Critical Fixes**: Fixed OAuth helper NPM packaging and performance testing workflow
1549
-
1550
- #### 🔧 Bug Fixes
1551
- - **OAuth NPM Packaging**: Fixed missing `oauth-helper.mjs` file in NPM distribution
1552
- - File was present in repository but not included in published package
1553
- - OAuth authentication now works correctly for NPM users
1554
- - **Performance Tests**: Fixed CI workflow running all tests instead of performance tests
1555
- - Performance monitoring now works correctly in GitHub Actions
286
+ DollhouseMCP is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0).
1556
287
 
1557
- ---
1558
-
1559
- ### v1.6.3 - August 25, 2025
288
+ ### What this means:
289
+ - ✅ **Free to use** for personal and commercial purposes
290
+ - **Modify and distribute** with the same license
291
+ - ✅ **Network use** requires source code disclosure
292
+ - ✅ **Platform stability** commitments protect users
1560
293
 
1561
- **OAuth Authentication Fix**: Fixed invalid OAuth client ID and improved error handling
1562
-
1563
- #### 🔧 Bug Fixes
1564
- - **OAuth Client ID**: Updated from incorrect ID to correct `Ov23li9gyNZP6m9aJ2EP`
1565
- - **Error Handling**: Added comprehensive error codes throughout OAuth flow
1566
- - **Debug Logging**: Added detailed logging at each authentication step
294
+ See [LICENSE](LICENSE) for full terms.
1567
295
 
1568
296
  ---
1569
297
 
1570
- ### v1.6.2 - August 25, 2025
1571
-
1572
- **Critical Hotfix**: Fixed OAuth default client ID not being used in `setup_github_auth` tool
1573
-
1574
- #### 🔧 Bug Fixes
1575
- - **OAuth Authentication**: Fixed critical bug where default OAuth client ID wasn't used in `setupGitHubAuth()` method
1576
- - **Configuration Fallback**: Now correctly uses `GitHubAuthManager.getClientId()` with proper fallback hierarchy
1577
-
1578
- #### 📚 Technical Details
1579
- - Made `GitHubAuthManager.getClientId()` public (was private)
1580
- - Updated `setupGitHubAuth()` to use proper fallback chain
1581
- - Restored "just works" authentication experience promised in v1.6.1
1582
-
1583
- ---
1584
-
1585
- ### v1.6.1 - August 25, 2025
1586
-
1587
- **⚠️ Breaking Changes**:
1588
- - 🔄 **Serialization Format Change** - `BaseElement.serialize()` now returns markdown with YAML frontmatter instead of JSON
1589
- - Migration: Use new `serializeToJSON()` method for backward compatibility
1590
- - 🏗️ **Server Initialization** - Portfolio initialization moved from constructor to `run()` method
1591
- - New `ensureInitialized()` method provides lazy initialization for tests
1592
-
1593
- **Major New Features**:
1594
- - 🔍 **Enhanced Portfolio System** (6 new tools):
1595
- - `portfolio_status` - Check GitHub portfolio status
1596
- - `init_portfolio` - Create GitHub portfolio repository
1597
- - `sync_portfolio` - Synchronize local/GitHub repositories
1598
- - `search_portfolio` - Search with advanced indexing
1599
- - `search_all` - Unified search across all sources
1600
- - Complete GitHub integration with indexing
1601
- - 📊 **Enhanced Collection Search**:
1602
- - `search_collection_enhanced` - Pagination, filtering, sorting
1603
- - `get_collection_cache_health` - Cache monitoring
1604
- - Smart caching with ETags and conditional requests
1605
- - 🛠️ **System Tools**:
1606
- - `get_build_info` - Comprehensive build and runtime information
1607
- - ⚙️ **Collection Configuration**:
1608
- - `configure_collection_submission` - Auto-submit settings
1609
- - `get_collection_submission_config` - Check submission config
1610
-
1611
- **Infrastructure Improvements**:
1612
- - 🚀 **High-Performance Caching** - Memory-aware LRU cache system
1613
- - 🔒 **Enhanced Security** - YAML bomb protection, content validation
1614
- - 📦 **Build Information Service** - Runtime and build info API
1615
- - 🎯 **Error Handler** - Centralized error management system
1616
- - 🔄 **Roundtrip Workflow** - Complete content submission cycle
1617
-
1618
- **Statistics**:
1619
- - 42 total MCP tools (down from 51 - 9 PersonaTools removed, 5 preserved)
1620
- - 89 commits ahead of main
1621
- - 257 files changed
1622
- - 50,857 lines added
1623
- - 76 test files modified/added
1624
-
1625
- ### v1.5.1 - August 5, 2025
1626
- **Critical Bug Fixes**:
1627
- - 🔧 **Fixed OAuth Token Retrieval** - `setup_github_auth` tokens now properly used for API calls
1628
- - 🔧 **Fixed Collection Browsing** - Removed legacy category validation blocking browsing
1629
- - 🔧 **Persona Creation Simplified** - Categories no longer required or validated
1630
- - ✅ **Element System Alignment** - Full consistency with new architecture
1631
-
1632
- ### v1.5.0 - August 5, 2025
1633
- **GitHub OAuth Authentication**:
1634
- - 🔐 **OAuth Device Flow** - Secure authentication without manual token management
1635
- - 🔒 **AES-256-GCM Encryption** - Tokens encrypted at rest with machine-specific keys
1636
- - 🛡️ **Rate Limiting** - Built-in protection against brute force attacks
1637
- - ✅ **Natural Language Flow** - User-friendly authentication instructions
1638
- - 🧪 **Comprehensive Tests** - 420+ lines of OAuth implementation tests
1639
-
1640
- ### v1.4.5 - August 5, 2025
1641
- **Claude Desktop Integration Fix**:
1642
- - ✅ **Fixed "Server disconnected" errors** when using `npx` or `dollhousemcp` CLI
1643
- - 🔄 **Progressive retry mechanism** for better compatibility across different machine speeds
1644
- - 🔒 **Security improvements** - removed detailed error logging to prevent information disclosure
1645
- - 🧪 **Added comprehensive tests** for execution detection logic
1646
-
1647
- ### v1.4.4 - August 4, 2025
1648
- **Emergency Hotfix**:
1649
- - 🚨 **Fixed v1.4.3 total failure** - initialization crashes fixed
1650
- - 🔧 **Fixed jsdom crash** - heavy dependencies now load lazily
1651
- - 🐳 **Fixed Docker compatibility** - handles read-only environments
1652
-
1653
- ### v1.4.3 - August 4, 2025
1654
- **Directory Structure Fix**:
1655
- - 🚨 **Fixed NPM installation failure** but introduced new crashes
1656
-
1657
- ### v1.4.2 - August 4, 2025
1658
- **Critical NPM Installation Fix**:
1659
- - 🚨 **Fixed NPM installation failure** where empty portfolios caused server crashes
1660
- - 📦 **DefaultElementProvider** automatically populates default content on first run
1661
- - 🔍 **Smart path detection** searches multiple NPM/Git installation locations
1662
- - 💬 **Helpful error messages** guide new users when portfolios are empty
1663
- - 🔒 **Security hardened** with audit logging and file integrity verification
1664
-
1665
- ### v1.4.1 - August 2, 2025
1666
- **NPM Installation Support**:
1667
- - 📦 **Install MCP servers from npm packages** with full cross-platform support
1668
- - 🔄 **Atomic operations** with transaction-based rollback on failure
1669
- - 📊 **Progress indicators** for better user experience during long operations
1670
- - 🏗️ **Centralized configuration** respecting platform conventions (XDG on Linux)
1671
- - 🛠️ **FileOperations utility** for consistent cross-platform behavior
1672
-
1673
- ### v1.4.0 - August 2, 2025
1674
- **Complete Element System**:
1675
- - 🎭 **Ensemble elements** for orchestrating multiple elements together
1676
- - 🧠 **Memory elements** with retention policies and search capabilities
1677
- - 🤖 **Agent elements** with goal-oriented decision making
1678
- - 📝 **Template elements** with secure variable substitution
1679
- - 🛠️ **Skill elements** with parameter system and proficiency tracking
1680
- - 🔒 **Comprehensive security** throughout all element types
1681
-
1682
- ### v1.3.3 - August 2, 2025
1683
- **Portfolio System & Element Types**:
1684
- - 🎨 **Portfolio-based architecture** for managing all AI customization elements
1685
- - 🛠️ **Generic element tools** that work with any element type
1686
- - 📁 **Structured directory layout** under `~/.dollhouse/portfolio/`
1687
- - 🔄 **Backward compatibility** maintained for existing personas
1688
-
1689
- ### v1.3.2 - August 1, 2025
1690
- **GitFlow Implementation**:
1691
- - 🔀 **GitFlow branching model** for better release management
1692
- - 🏷️ **Automated version tagging** on releases
1693
- - 📦 **NPM release automation** (pending token configuration)
1694
-
1695
- ### v1.3.1 - July 31, 2025
1696
- **Collection System Updates**:
1697
- - 🏪 **Improved collection browsing** with better error handling
1698
- - 🔍 **Enhanced search functionality** for finding content
1699
- - 📥 **Better installation process** with validation
1700
-
1701
- ### v1.3.0 - July 30, 2025
1702
- **Major Architecture Refactor**:
1703
- - 🏗️ **Element interface system** providing foundation for all element types
1704
- - 🔐 **Security-first implementation** with comprehensive protections
1705
- - 📊 **Improved test coverage** reaching 96%+
1706
-
1707
- ### v1.2.5 - July 2025
1708
-
1709
- **Collection Rename & Breaking Changes**:
1710
- - 🔄 **Renamed all "marketplace" tools to "collection"**:
1711
- - `browse_marketplace` → `browse_collection`
1712
- - `search_marketplace` → `search_collection`
1713
- - `get_marketplace_persona` → `get_collection_content`
1714
- - `install_persona` → `install_persona` (unchanged)
1715
- - `submit_persona` → `submit_persona` (unchanged)
1716
- - ✅ **Added backward compatibility aliases** (deprecated, will be removed in v2.0.0)
1717
- - ✅ **Updated repository** from `/personas` to `/collection`
1718
- - ✅ **Created migration guide** for users to update their scripts
1719
- - ✅ **Fixed all date references** from January to July 2025
1720
-
1721
- ### v1.2.4 - July 10, 2025
1722
-
1723
- **Critical Fix**:
1724
- - ✅ **Fixed MCP protocol compatibility** - console output no longer breaks JSON-RPC communication
1725
- - ✅ **Added MCP-safe logger utility** for proper logging during protocol sessions
1726
- - ✅ **Resolves connection failures** in Claude Desktop
1727
- - ✅ **Updated Docker tests** to work with new logging approach
1728
- - ✅ **Added comprehensive logger unit tests**
1729
-
1730
- ### v1.2.3 - July 10, 2025
1731
-
1732
- **Bug Fix**:
1733
- - ✅ **Fixed personas directory path resolution** for production environments
1734
- - ✅ **Changed from process.cwd() to __dirname-based paths**
1735
- - ✅ **Fixed setup script** with correct tool count and repository URLs
1736
-
1737
- ### v1.2.2 - July 10, 2025
1738
- - ✅ **Comprehensive security enhancements**:
1739
- - Content sanitization with DOMPurify (SEC-001)
1740
- - YAML injection prevention (SEC-003)
1741
- - GitHub token security (SEC-004)
1742
- - Docker container hardening (SEC-005)
1743
- - ✅ **487 comprehensive tests** including extensive security coverage
1744
- - ✅ **CI timing test fixes** for reliable cross-platform testing
1745
- - ✅ **TypeScript compilation fixes** for all test files
1746
- - ✅ **All security vulnerabilities resolved** (0 active alerts)
1747
-
1748
- ### v1.2.1 - July 8, 2025
1749
- - ✅ **Critical bug fixes** for data protection:
1750
- - Copy-on-write for default personas (Issue #145)
1751
- - User personas included in backups (Issue #144)
1752
- - ✅ **Node.js 20+ requirement** for npm publishing compatibility
1753
- - ✅ **372 comprehensive tests** covering all functionality
1754
- - ✅ **Enhanced security** with all vulnerabilities resolved
1755
- - ✅ **Improved documentation** with clear prerequisites
1756
-
1757
- ### v1.2.0 - July 7, 2025
1758
- - ✅ **Rate limiting implementation** to prevent API abuse
1759
- - ✅ **GPG signature verification** for release authenticity
1760
- - ✅ **GitHub Advanced Security** integration
1761
- - ✅ **309 tests** with improved CI environment coverage
1762
- - ✅ **Package optimization** at 279.3 kB
1763
-
1764
- ### v1.1.0 - July 4, 2025
1765
- - ✅ **Platform-specific badges** for Windows, macOS, Linux visibility
1766
- - ✅ **GitHub Project management** with issue templates and milestones
1767
- - ✅ **ARM64 Docker fix** switching from Alpine to Debian base images
1768
- - ✅ **100% workflow reliability** (except Docker ARM64)
1769
- - ✅ **First GitHub release** with CHANGELOG.md
1770
- - ✅ **21 total MCP tools** at time of release
1771
-
1772
- ### Phase 2B+ - July 3, 2025
1773
- - ✅ **Enterprise-grade auto-update system** with 4 new MCP tools
1774
- - ✅ **50 comprehensive tests** covering all functionality
1775
- - ✅ **Security hardening** - eliminated all command injection vulnerabilities
1776
- - ✅ **Cross-platform support** - Windows, macOS, Linux with CI/CD testing
1777
- - ✅ **Docker containerization** with production and development configurations
1778
- - ✅ **21 total MCP tools** with backup/rollback and dependency validation
1779
-
1780
- ### Phase 2B - July 1-2, 2025
1781
- - ✅ Complete chat-based persona management
1782
- - ✅ GitHub marketplace integration
1783
- - ✅ User identity and attribution system
1784
- - ✅ Real-time validation and editing
1785
- - ✅ Enterprise-grade GitHub Actions security
1786
-
1787
- ### Phase 1 - July 1, 2025
1788
- - ✅ Fresh AGPL-3.0 licensed repository
1789
- - ✅ Enhanced unique ID system
1790
- - ✅ Anonymous user support
1791
- - ✅ Marketplace-ready metadata schema
1792
-
1793
- ---
1794
-
1795
- **🎭 Transform your AI interactions with the power of personas**
1796
-
1797
- For support, please [open an issue](https://github.com/DollhouseMCP/mcp-server/issues) or visit our [collection](https://github.com/DollhouseMCP/collection).
298
+ *Built with ❤️ by the DollhouseMCP team*