-
Notifications
You must be signed in to change notification settings - Fork 0
Version 2.4 Tools
Complete reference for all DaemonsMCP V2.4.0 tools with parameters, examples, and usage patterns.
Gets living documentation from the DaemonsMCP project's internal node structure.
Parameters: None
Response: Returns hierarchical node structure containing project documentation, architecture notes, and implementation details.
Notes:
- Documentation stored as nodes in
Storage.pktbs - Structured hierarchically for easy navigation
- Updated continuously as project evolves
- Includes architecture details, data flow, and critical implementation notes
Example:
Read the DaemonsMCP documentation to understand how it works
Lists all configured projects with metadata.
Parameters: None
Response:
{
\"projects\": [
{
\"Id\": 1,
\"Name\": \"ProjectName\",
\"Description\": \"Project description\",
\"Path\": \"C:\\\\path\\\ o\\\\project\",
\"IndexPath\": \"C:\\\\ProgramData\\\\DaemonsMCP\"
}
]
}Notes:
- V2.4.0 uses centralized IndexPath in ProgramData/DaemonsMCP
- Projects configured via DaemonsConfigViewer or stored in Projects.pktbs
- All projects share same index location for efficiency
Example:
What projects do you have access to?
Lists files in a project directory with optional filtering.
Parameters:
-
projectName(required): The configured project name -
path(optional): Directory path relative to project root (default: root) -
filter(optional): File pattern filter (e.g., ".cs", ".json")
Example:
List all C# files in the DaemonsMCP/DaemonsMCP.Core directory
Lists directories in a project with optional filtering.
Parameters:
-
projectName(required): The configured project name -
path(optional): Directory path relative to project root (default: root) -
filter(optional): Directory pattern filter
Example:
Show me the directories in the DaemonsMCP project
Reads file content with complete metadata.
Parameters:
-
projectName(required): The configured project name -
path(required): File path relative to project root
Response:
{
\"FileName\": \"example.cs\",
\"Path\": \"path/to/example.cs\",
\"Size\": 1024,
\"ContentType\": \"text/plain\",
\"Encoding\": \"UTF-8\",
\"Content\": \"file content here...\",
\"IsBinary\": false
}Example:
Show me the content of Program.cs in the DaemonsMCP project
Creates a new file with specified content.
Parameters:
-
projectName(required): The configured project name -
path(required): File path relative to project root -
content(required): File content to write
Security Notes:
- File extension must be in
allowedExtensionslist (configured in Settings.pktbs) - Path cannot be in
writeProtectedPaths - Content size must be under
maxFileWriteSizelimit - Parent directories created automatically if needed
Example:
Create a new utility class called StringHelper.cs with basic string extension methods
Updates an existing file with new content.
Parameters:
-
projectName(required): The configured project name -
path(required): File path relative to project root -
content(required): New file content
Security Notes:
- Automatic backup created before update
- Same security restrictions as create operations
- Backups stored in project's
.daemons/backups/directory
Example:
Add a new method to the StringHelper.cs file for reversing strings
Deletes a file with safety confirmations.
Parameters:
-
projectName(required): The configured project name -
path(required): File path relative to project root
Security Notes:
- Automatic backup created before deletion
- Cannot delete files in
writeProtectedPaths
Example:
Delete the test file I created earlier, but make sure to back it up first
Creates a new directory.
Parameters:
-
projectName(required): The configured project name -
path(required): Directory path relative to project root -
createDirectories(optional): Create parent directories if needed (default: true)
Example:
Create a new directory called \"Utilities\" in the project
Deletes a directory with confirmation.
Parameters:
-
projectName(required): The configured project name -
path(required): Directory path relative to project root -
deleteDirectories(optional): Confirm deletion (default: true)
Security Notes:
- Cannot delete directories in
writeProtectedPaths - Will delete recursively if directory contains files
Example:
Delete the empty test directory I created
Indexes and analyzes C# code structure across projects.
Parameters:
-
forceRebuild(optional): Force complete rebuild vs incremental update (default: false)
Notes:
- Uses Microsoft.CodeAnalysis (Roslyn) for parsing
- Indexes classes, methods, namespaces, and relationships
- File watchers automatically trigger reindexing on changes (5-second debounce)
- Index stored in centralized location:
C:\\ProgramData\\DaemonsMCP\\{ProjectName}_index.pktbs - Background processing with queue management for efficiency
Example:
Index all the C# code in the projects and refresh the analysis
Gets the current status of the indexing service.
Parameters: None
Response:
{
\"Enabled\": true,
\"TotalClasses\": 45,
\"TotalMethods\": 234,
\"QueueCount\": 0,
\"LastUpdate\": \"2025-10-05T20:30:15Z\"
}Notes:
-
QueueCountshows files waiting to be indexed - Queue processed in batches every 5 seconds
- FileSystemWatcher monitors for changes automatically
Example:
What's the current status of the code indexing service?
Enables or disables the indexing service.
Parameters:
-
enableIndex(required): True to enable, false to disable
Notes:
- Disabling stops file watching and index updates
- Useful for bulk file operations to reduce overhead
- Re-enabling triggers incremental update
Example:
Disable the code indexing service temporarily
Lists indexed classes with pagination and filtering.
Parameters:
-
projectName(optional): Filter by specific project -
namespaceFilter(optional): Filter by namespace (contains match) -
classFilter(optional): Filter by class name (contains match) -
pageNo(required): Page number (1-based) -
itemsPerPage(required): Items per page (recommended: 20)
pageNo and itemsPerPage explicitly to avoid empty results.
Response:
{
\"classes\": [
{
\"ClassId\": 1,
\"ClassName\": \"ProjectService\",
\"Namespace\": \"DaemonsMCP.Core.Services\",
\"FileNamePath\": \"DaemonsMCP.Core/Services/ProjectService.cs\"
}
],
\"totalCount\": 45,
\"pageNo\": 1,
\"itemsPerPage\": 20
}Example:
List all classes in the DaemonsMCP project, show me the first 20 results
Gets detailed class information and content.
Parameters:
-
projectName(required): The configured project name -
classId(required): The class ID from list-classes results
Response:
{
\"ClassId\": 1,
\"ClassName\": \"ProjectService\",
\"Namespace\": \"DaemonsMCP.Core.Services\",
\"FileNamePath\": \"DaemonsMCP.Core/Services/ProjectService.cs\",
\"Content\": \"complete class source code...\",
\"UsesClauseAdd\": \"additional using statements if needed\"
}Notes:
- Content includes complete class with XML documentation
- UsesClauseAdd suggests additional using statements for dependencies
- Uses smart boundary detection to capture entire class including docs
Example:
Show me the complete source code for the ProjectService class
Lists methods within classes with pagination and filtering.
Parameters:
-
projectName(optional): Filter by specific project -
namespaceFilter(optional): Filter by namespace (contains match) -
classFilter(optional): Filter by class name (contains match) -
methodFilter(optional): Filter by method name (contains match) -
pageNo(required): Page number (1-based) -
itemsPerPage(required): Items per page (recommended: 20)
pageNo and itemsPerPage explicitly to avoid empty results.
Example:
List all methods in classes containing \"Service\" in their name, first 20 results
Gets detailed method implementation.
Parameters:
-
projectName(required): The configured project name -
methodId(required): The method ID from list-class-methods results
Response:
{
\"MethodId\": 15,
\"MethodName\": \"ValidateProjectPath\",
\"ClassId\": 1,
\"ClassName\": \"ProjectService\",
\"Namespace\": \"DaemonsMCP.Core.Services\",
\"FileNamePath\": \"DaemonsMCP.Core/Services/ProjectService.cs\",
\"Content\": \"complete method source code...\",
\"UsesClauseAdd\": \"additional using statements if needed\"
}Example:
Show me the implementation of the ValidateProjectPath method
Adds a new class or updates an existing one.
Parameters:
-
projectName(required): The configured project name -
classContent(required): ClassContent object with PascalCase properties:-
ClassId: 0 for new class, existing ID for update -
ClassName: Class name -
Namespace: Target namespace -
FileNamePath: File path relative to project root -
Content: Complete class source code -
UsesClauseAdd: Additional using statements
-
Notes:
- Automatically creates file if it doesn't exist
- Respects security settings for file operations
- Triggers automatic reindexing via FileSystemWatcher
Example:
Create a new utility class called FileHelper in the Utilities namespace
Adds a new method or updates an existing one within a class.
Parameters:
-
projectName(required): The configured project name -
methodContent(required): MethodContent object with PascalCase properties:-
MethodId: 0 for new method, existing ID for update -
ClassId: Target class ID -
MethodName: Method name -
ClassName: Class name (for reference) -
Namespace: Namespace (for reference) -
FileNamePath: File path (for reference) -
Content: Complete method source code -
UsesClauseAdd: Additional using statements
-
Security Notes:
- Automatic backup created before modification
- Syntax validation performed before insertion
- Method inserted within class boundaries
Example:
Add a new validation method to the SecurityService class
Lists hierarchical project nodes with filtering and depth control.
Parameters:
-
nodeId(optional): Parent node ID to list children from -
maxDepth(optional): Maximum recursion depth (default: 1) -
typeFilter(optional): Filter by node type name (contains match) -
statusFilter(optional): Filter by status name (contains match) -
nameContains(optional): Filter by node name (contains match) -
detailsContains(optional): Filter by details content (contains match)
Response:
[
{
\"Id\": 1,
\"ParentId\": 0,
\"Name\": \"Documentation Root\",
\"Details\": \"Root documentation node\",
\"TypeId\": 5,
\"TypeName\": \"Documentation\",
\"StatusId\": 10,
\"Status\": \"Active\",
\"Rank\": 1,
\"Created\": \"2025-10-05T20:00:00Z\",
\"Modified\": \"2025-10-05T20:00:00Z\",
\"Completed\": null,
\"Subnodes\": []
}
]Notes:
- Nodes stored in centralized
Storage.pktbs - Changes detected by RepositoryFileWatcher for hot reload
- DaemonsConfigViewer shows live updates when nodes change
Example:
Show me the project documentation structure with 2 levels of depth
Gets a specific node and its subtree by ID.
Parameters:
-
nodeIds(required): Node ID to retrieve
Example:
Get the details for node ID 5 and its children
Creates or updates a node and its subtree.
Parameters:
-
node(required): Node object with properties:-
Id: 0 for new node, existing ID for update -
ParentId: Parent node ID (0 for root) -
Name: Node name -
Details: Node description/content -
TypeId: Node type ID -
StatusId: Node status ID -
Rank: Sort order within parent -
Subnodes: Array of child nodes (optional)
-
Notes:
- Saves trigger RepositoryFileWatcher in DaemonsConfigViewer
- ConfigViewer shows reload prompt when changes detected
- Supports recursive node creation with subnodes
Example:
Create a new documentation section for the API reference
Creates or updates multiple nodes in batch.
Parameters:
-
nodes(required): Array of node objects
Notes:
- More efficient than individual updates for bulk operations
- Single save operation triggers one hot reload event
Example:
Create multiple todo items for the next sprint
Removes a node with configurable cascade behavior.
Parameters:
-
nodeId(required): Node ID to remove -
removeStrategy(optional): How to handle children:-
PreventIfHasChildren(default): Fail if node has children -
DeleteCascade: Delete node and all children -
OrphanChildren: Delete node, children become parentless -
ReparentToGrandparent: Delete node, move children up one level
-
Example:
Delete the test documentation section and move its children to the parent
Lists available node types for classification.
Parameters: None
Response:
[
{
\"Id\": 1,
\"Name\": \"Documentation\",
\"Description\": \"Documentation nodes\",
\"TypeEnum\": 1,
\"ParentId\": 0
}
]Notes:
- Types stored in
Storage.pktbs - Configurable via DaemonsConfigViewer or this tool
- Supports hierarchical type structures
Creates or updates node type definitions.
Parameters:
-
type(required): ItemType object with Id, Name, Description, TypeEnum, ParentId
Example:
Create a new node type called \"Feature Request\"
Lists available status types for nodes.
Parameters: None
Response:
[
{
\"Id\": 1,
\"Name\": \"Not Started\",
\"Description\": \"Work not yet begun\",
\"TypeEnum\": 1,
\"ParentId\": 0
}
]Creates or updates status type definitions.
Parameters:
-
status(required): StatusType object with Id, Name, Description, TypeEnum, ParentId
Example:
Create a new status type called \"In Review\"
Manually saves the project repository data to disk.
Parameters: None
Notes:
- Normally called automatically after updates
- Use for manual checkpoint/backup operations
- Saves to
Storage.pktbsin centralized location
Creates a todo list as a hierarchical node structure.
Parameters:
-
listName(required): Name of the todo list -
items(required): Array of todo item names/descriptions
Notes:
- Creates or finds a todo list node by name
- Adds items as child nodes under the list
- Items start with "Not Started" status
- Lists stored under "Todo Root" node
Example:
Create a todo list called \"Sprint Planning\" with tasks for database design, API implementation, and testing
Gets the next available todo item and marks it as "In Progress".
Parameters:
-
listName(required): Name of the todo list to search
Response:
{
\"Id\": 25,
\"Name\": \"Implement user authentication\",
\"Details\": \"Add OAuth2 integration with JWT tokens\",
\"Status\": \"In Progress\",
\"Started\": \"2025-10-05T22:30:00Z\"
}Notes:
- Automatically updates status to "In Progress"
- Returns null if no pending items found
- Searches recursively through todo list tree
Example:
Get the next task from the \"Sprint Planning\" todo list
Marks a todo item as completed.
Parameters:
-
itemId(required): Todo item node ID
Notes:
- Sets status to "Complete"
- Records completion timestamp
- Item remains in list for tracking
Example:
Mark todo item 25 as completed
Marks a todo item as cancelled.
Parameters:
-
itemId(required): Todo item node ID
Notes:
- Sets status to "Cancelled"
- Records cancellation timestamp
- Item remains in list for tracking
Example:
Cancel todo item 30 - it's no longer needed
Resets a todo item back to "Not Started" status.
Parameters:
-
itemId(required): Todo item node ID
Notes:
- Clears completion/cancellation timestamp
- Useful for recurring tasks or when work needs redoing
Example:
Reset todo item 25 back to not started - we need to redo this task
All operations that modify Storage.pktbs, Projects.pktbs, or Settings.pktbs trigger RepositoryFileWatcher events:
- DaemonsConfigViewer Detection: Shows reload prompt when Claude makes changes
- Bidirectional Updates: Changes in ConfigViewer immediately available to DaemonsMCP
- 500ms Debounce: Prevents excessive reloads during batch operations
- Visual Indicators: ConfigViewer shows when external changes detected
V2.4.0 moved from per-project .daemons folders to centralized storage:
Previous (V2.x):
ProjectRoot/.daemons/
├── index.pktbs
└── backups/
Current (V2.4.0):
C:\\ProgramData\\DaemonsMCP\\ (Windows)
~/.local/share/DaemonsMCP (Linux/macOS)
├── Projects.pktbs # All project configs
├── Settings.pktbs # Security settings
├── Storage.pktbs # All nodes/todos
└── ProjectName_index.pktbs # Code intelligence per project
Benefits:
- No repository pollution
- Single backup location
- Easy configuration migration
- Shared settings across projects
All configuration now uses PackedTables.NET binary format:
- Faster: 3x faster loading vs JSON
- Smaller: More efficient binary serialization
- Structured: Proper schema and relationships
- Tooling: Direct editing via PackedTables viewer
Always specify explicit pagination to avoid empty results:
List the first 20 classes in the project, page 1
- Use
list-classesto find target class - Use
get-classto examine current implementation - Use
add-update-classoradd-update-methodfor changes - Backups are created automatically
- Index updates automatically via FileSystemWatcher
- Use nodes for documentation and project structure
- Use todo lists for task management
- Use status and type systems for organization
- Filter and search using contains matching
- Leverage hot reload for cross-tool collaboration
- All write operations respect security configuration in
Settings.pktbs - Automatic backups protect against mistakes
- File type filtering prevents dangerous operations
- Path validation prevents directory traversal
- Size limits prevent context overflow and DoS
- Use appropriate page sizes (20 items recommended)
- Use filters to narrow results
- Index service runs automatically in background (5-second debounce)
- File watchers trigger incremental updates, not full rebuilds
- Disable indexing during bulk file operations for better performance
- Configure in DaemonsConfigViewer: Add projects, set security
- Work with Claude: Use DaemonsMCP tools to code and organize
- Review in ConfigViewer: See changes, navigate node trees
- Hot Reload: Both tools stay in sync automatically
Problem: Queries return empty arrays
Solution: Always specify pageNo and itemsPerPage explicitly:
List classes in DaemonsMCP project, page 1, 20 items per page
Problem: File creation/updates rejected
Checks:
- File extension in
Settings.pktbsallowedExtensions? - Path not in writeProtectedPaths?
- Write operations enabled in Settings?
- File size under maxFileWriteSize limit?
Problem: Code changes not reflected in searches
Solutions:
- Check
status-index- is indexer enabled? - Wait 5 seconds for debounce to complete
- Use
resync-indexwithforceRebuild: truefor full refresh
Problem: Claude made changes but ConfigViewer doesn't update
Solution: Click the "Reload" button in ConfigViewer status bar when prompted
Problem: "Serialization failed" errors
Solution: Use PascalCase property names in method/class content objects (ClassId not classId)
If upgrading from DaemonsMCP V2.x:
-
Backup your data: Copy
.daemonsfolders from all projects -
Run DaemonsConfigViewer: Use "Import" feature to load old
daemonsmcp.json - Verify Projects: Check all projects loaded correctly in ConfigViewer
- Update Claude Desktop config: Point to new V2.4.0 executable
-
Test: Run
list-projectsto confirm configuration -
Clean up: Old
.daemonsfolders in projects can be deleted after verification
Breaking Changes:
- Configuration format changed from JSON to PackedTables
- Index location moved from project/.daemons to centralized ProgramData
- Manual reconfiguration required (import feature available)
DaemonsMCP follows semantic versioning:
- Major (2): Breaking API changes
- Minor (4): New features, backward compatible
- Patch (0): Bug fixes, performance improvements
V2.4.0 is backward compatible with V2.x tool calls but requires configuration migration.