@tgomareli/macos-tools-mcp
v1.0.0
Published
MCP server for advanced macOS system monitoring and file search capabilities
Maintainers
Readme
macOS Tools MCP Server
A comprehensive MCP (Model Context Protocol) server for macOS that provides advanced system monitoring and file search capabilities.
Table of Contents
- Features
- Installation
- Usage
- Available Tools
- Architecture
- Troubleshooting
- Testing the Server
- Security Considerations
- Contributing
- License
- Future Enhancements
Features
🖥️ System Performance Monitor
- Real-time Monitoring: Track CPU, memory, disk I/O, and network statistics
- Process Analysis: View top resource-consuming processes with detailed metrics
- Historical Tracking: Store and analyze performance data over time using SQLite
- Optimization Suggestions: Get intelligent recommendations to improve system performance
🔍 Enhanced File Search
- Deep Content Search: Search within file contents using regex or plain text
- Spotlight Integration: Leverage macOS Spotlight for fast metadata searches
- Tag Management: Create, search, and manage custom file tags using extended attributes
- Advanced Features: Fuzzy matching, boolean operators, and file type filtering
Installation
Prerequisites
- macOS 10.15 or later
- Node.js 18.0.0 or later
- npm or yarn package manager
Setup
Option 1: NPM Install (Recommended)
The easiest way to use this MCP server is through npm/npx:
# No installation needed, just add to Claude Desktop config
# See Claude Desktop Configuration section belowOption 2: From Source
- Clone the repository:
git clone https://github.com/tornikegomareli/macos-tools-mcp-server.git
cd macos-tools-mcp-server- Install dependencies:
npm install- Build the project:
npm run build- Make the script executable:
chmod +x dist/index.jsPermissions
For full functionality, the server requires certain permissions:
Full Disk Access (recommended for file search):
- System Preferences → Security & Privacy → Privacy → Full Disk Access
- Add Terminal or your IDE
Developer Tools (for process monitoring):
- Install Xcode Command Line Tools if not already installed:
xcode-select --install
Usage
Starting the Server
Run the MCP server:
npm startOr use it directly:
node dist/index.jsClaude Desktop Configuration
To use this MCP server with Claude Desktop:
Open your Claude Desktop configuration file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
- macOS:
Add the macOS Tools server to your configuration:
Using NPM (Recommended)
{
"mcpServers": {
"macos-tools": {
"command": "npx",
"args": [
"@tgomareli/macos-tools-mcp"
],
"env": {}
}
}
}Using Local Installation
If you cloned and built from source:
{
"mcpServers": {
"macos-tools": {
"command": "node",
"args": [
"/path/to/macos-tools-mcp-server/dist/index.js"
],
"env": {}
}
}
}- If you already have other MCP servers configured, add the macos-tools configuration to the existing mcpServers object:
{
"mcpServers": {
"existing-server": {
// ... existing configuration
},
"macos-tools": {
"command": "node",
"args": [
"/Users/tornikegomareli/Development/macos-tools-mcp/dist/index.js"
],
"env": {}
}
}
}Save the configuration file and restart Claude Desktop.
You should now see the macOS Tools server available in Claude Desktop with two tools:
system_performance- Monitor system resourcesenhanced_search- Advanced file search and tagging
Available Tools
system_performance
Monitor and analyze system performance metrics.
Parameters:
action(required): "current" | "history" | "processes" | "optimize"timeRange(optional): Time range for historical data ("1h", "24h", "7d")metric(optional): Specific metric to analyze ("cpu", "memory", "disk", "network", "all")
Examples:
// Get current system metrics
await callTool("system_performance", {
action: "current",
metric: "all"
});
// View performance history
await callTool("system_performance", {
action: "history",
timeRange: "24h",
metric: "memory"
});
// List top processes by CPU usage
await callTool("system_performance", {
action: "processes",
metric: "cpu"
});
// Get optimization suggestions
await callTool("system_performance", {
action: "optimize"
});enhanced_search
Advanced file search with content analysis and tagging capabilities.
Parameters:
action(required): "search" | "tag" | "untag"query(optional): Search query (supports regex)searchType(optional): "content" | "filename" | "tags" | "regex"fileTypes(optional): Array of file extensions to includepath(optional): Root directory for searchmaxResults(optional): Maximum number of resultstags(optional): Array of tags to search for or apply
Examples:
// Search for TODO comments in code files
await callTool("enhanced_search", {
action: "search",
query: "TODO|FIXME",
searchType: "regex",
fileTypes: ["js", "ts", "py"],
path: "~/Projects"
});
// Tag important files
await callTool("enhanced_search", {
action: "tag",
path: "~/Documents/important.pdf",
tags: ["urgent", "project-x"]
});
// Search by tags
await callTool("enhanced_search", {
action: "search",
searchType: "tags",
tags: ["urgent"],
path: "~/Documents"
});
// Search file contents
await callTool("enhanced_search", {
action: "search",
query: "apiKey",
searchType: "content",
fileTypes: ["json", "env"],
path: "~/Projects",
maxResults: 50
});Architecture
Project Structure
macos-tools-mcp/
├── src/
│ ├── index.ts # MCP server entry point
│ ├── tools/
│ │ ├── performance-monitor.ts
│ │ ├── spotlight-enhanced.ts
│ │ └── types.ts
│ └── utils/
│ ├── system-info.ts # macOS system calls
│ ├── file-search.ts # File search utilities
│ └── cache.ts # Performance caching
├── dist/ # Compiled JavaScript
├── package.json
├── tsconfig.json
└── README.mdKey Features
Native macOS Integration
- Uses native commands (ps, mdfind, xattr) for optimal performance
- Leverages Spotlight index for fast searches
- Supports macOS extended attributes for tagging
Performance Optimization
- Multi-level caching system
- Debounced operations
- Rate limiting for system calls
- Streaming for large files
Data Persistence
- SQLite database for performance history
- Configurable data retention
- Efficient time-series queries
Troubleshooting
Common Issues
Permission Denied Errors
- Ensure the terminal has Full Disk Access
- Some operations may require sudo (temperature monitoring)
Spotlight Not Finding Files
- Check if Spotlight indexing is enabled
- Verify the search path is not excluded from Spotlight
High CPU Usage
- Adjust cache TTL values in cache.ts
- Limit search depth and file types
- Use more specific search queries
Debug Mode
Enable debug logging by setting the environment variable:
DEBUG=macos-tools-mcp node dist/index.jsSecurity Considerations
- All shell commands are properly escaped to prevent injection
- File paths are validated and normalized
- Sensitive directories can be excluded via configuration
- Rate limiting prevents resource exhaustion
Contributing
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request
License
MIT License - see LICENSE file for details
Testing the Server
Once you've configured the server in Claude Desktop, you can use these prompts to test all functionality:
Quick Test Prompts
Basic Performance Check:
Show me my current system performance metricsProcess Analysis:
What are the top 5 CPU-consuming processes on my system?File Search:
Search for TODO comments in JavaScript files in my current directorySystem Optimization:
Analyze my system and suggest performance optimizations
Comprehensive Test Suite
Use this comprehensive prompt to test all features:
I want to test the macOS Tools MCP server. Please help me:
1. **System Performance Testing**:
- Show me the current system performance metrics (CPU, memory, disk, network)
- Display the top 5 processes consuming the most CPU
- Show me memory usage history for the last hour
- Analyze my system and provide optimization suggestions
- Get the top memory-consuming processes
2. **File Search Testing**:
- Search for all JavaScript and TypeScript files containing "TODO" or "FIXME" comments in my home directory
- Find all files with "test" in their filename in the current project directory
- Search for files containing the word "password" in configuration files (.json, .env, .yml)
- Use regex to find all email addresses in text files
- Search for files modified in the last 24 hours
3. **Tag Management Testing**:
- Tag this file with "important" and "reviewed": /Users/tornikegomareli/Development/macos-tools-mcp/README.md
- Search for all files tagged with "important"
- Remove the "reviewed" tag from the README file
- Tag all TypeScript files in the src directory with "source-code"
4. **Combined Operations**:
- Monitor system performance while performing a large file search
- Find resource-intensive processes and then search for their log files
- Show current disk usage and search for large files (> 100MB)
5. **Edge Cases**:
- Search in a non-existent directory
- Try to tag a file I don't have permission to modify
- Request performance data for an invalid time range
- Search with an invalid regex patternExpected Behaviors
- Performance Monitor: Should return real-time metrics, process lists, historical data, and optimization suggestions
- File Search: Should find files by content, name, or tags, with support for regex patterns
- Tag Operations: Should successfully add/remove tags and search by them
- Error Handling: Should gracefully handle permission errors, invalid paths, and malformed queries
Future Enhancements
- [ ] GPU monitoring support
- [ ] Network connection analysis
- [ ] Application-specific performance tracking
- [ ] Cloud backup for performance data
- [ ] Machine learning-based optimization suggestions
- [ ] Integration with Time Machine for file version search
