4nkitd/systems-mcp
If you are the rightful owner of systems-mcp and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
A Model Context Protocol (MCP) server that provides system interaction tools for AI assistants.
volumeUp
Increase system volume by 10
volumeDown
Decrease system volume by 10
volumeMute
Mute system volume
volumeUnmute
Unmute system volume
speak
Text-to-speech conversion
saveInfo
Save information to memory
getSavedInfo
Retrieve saved information
setAlarm
Set an alarm reminder
getCurrentWorkingDirectory
Get current directory
listDirectory
List directory contents
readFile
Read file contents
getWeather
Get weather information
getCurrentLocation
Get current location
Systems MCP Server
A Model Context Protocol (MCP) server that provides system interaction tools for AI assistants. This server enables AI models to interact with your local system through a comprehensive set of tools including volume control, text-to-speech, file system operations, weather information, and more.
Features
š Audio & Volume Control
- Volume Up/Down: Adjust system volume by 10 units
- Mute/Unmute: Control system audio muting
- Text-to-Speech: Convert text to speech using system TTS
š¾ Memory & Data Management
- Save Information: Persist information under a key/value pair.
- Get Saved Info: Retrieve information by key. The memory file path is configurable and defaults to
~/.mcp/memory.json
.
ā° Reminders & Alarms
- Set Alarm: Schedule alarms with custom messages
- Support for 24-hour time format (HH:MM)
š File System Operations
- Current Directory: Get current working directory
- List Directory: Browse directory contents
- Read Files: Read file contents from the system
š¤ļø Internet & Location Services
- Weather Information: Get weather data for any location
- Current Location: Retrieve current geographical location
- Fetch URL Content: Fetch the markdown content of a URL using a configurable API.
Installation
Releases
Download the latest prebuilt binaries for your platform from the GitHub Releases page:
- Linux / macOS (tar.gz): https://github.com/4nkitd/systems-mcp/releases/latest/download/systems_mcp.tar.gz
- Windows (zip): https://github.com/4nkitd/systems-mcp/releases/latest/download/systems_mcp.zip
After downloading, extract and run:
tar -xzf systems_mcp.tar.gz
./systems_mcp serve
For Windows:
Expand-Archive systems_mcp.zip
.\systems_mcp.exe serve
Prerequisites
- Go 1.23.4 or later
- macOS (primary support)
Build from Source
git clone https://github.com/4nkitd/systems-mcp.git
cd systems-mcp/mcp-server
go mod download
go build -o 4nkitd-mcp ./main.go
Usage
Command Line Options
./4nkitd-mcp serve [flags]
Available Flags:
--transport
: Transport type (stdio
orsse
) - Default:stdio
--log_dir
: Log directory path - Default: current directory--host
: Host to bind server (SSE only) - Default:localhost
--port
: Port to bind server (SSE only) - Default:8080
--memory_path
: Path to memory file - Default:~/.mcp/memory.json
--fetch_url_api
: API URL for fetching URL content - Default:https://md.dhr.wtf/
Transport Modes
STDIO Mode (Default)
Best for direct integration with AI assistants like Claude Desktop:
./4nkitd-mcp serve --transport stdio
SSE Mode
For web-based integrations:
./4nkitd-mcp serve --transport sse --host localhost --port 8080
Local Release (Dry Run)
To build and package the project locally without creating or publishing a GitHub release, run:
goreleaser release --snapshot --rm-dist --skip-publish
This will generate the versioned archives under the dist/
directory.
Configuration
Claude Desktop Integration
Add to your Claude Desktop configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"4nkitd-mcp": {
"command": "/path/to/4nkitd-mcp",
"args": ["serve", "--transport", "stdio"],
"env": {}
}
}
}
Environment Variables
The server can be configured using the following environment variables:
LOG_DIR
: Override default log directoryTRANSPORT
: Set transport modeHOST
: Set server host (SSE mode)PORT
: Set server port (SSE mode)
Available Tools
Tool Name | Description | Parameters |
---|---|---|
volumeUp | Increase system volume by 10 | None |
volumeDown | Decrease system volume by 10 | None |
volumeMute | Mute system volume | None |
volumeUnmute | Unmute system volume | None |
speak | Text-to-speech conversion | message (string) |
saveInfo | Save information to memory | key (string), value (string) |
getSavedInfo | Get saved information. If no key is provided, all information is returned. | key (string, optional) |
setAlarm | Set an alarm reminder | time (HH:MM), message (optional) |
getCurrentWorkingDirectory | Get current directory | None |
listDirectory | List directory contents | path (optional) |
readFile | Read file contents | path (required) |
getWeather | Get weather information | location (optional) |
getCurrentLocation | Get current location | None |
fetchURL | Fetch the markdown content of a URL | url (required) |
Development
Project Structure
mcp-server/
āāā main.go # Application entry point
āāā cmd/ # CLI commands and configuration
ā āāā cli.go # Root command setup
ā āāā serve.go # Server command implementation
ā āāā config.go # Configuration management
ā āāā constants.go # Application constants
āāā internal/
ā āāā mcp/ # MCP server implementation
ā ā āāā mcp.go # Server initialization
ā ā āāā server.go # Hook registration
ā ā āāā tools.go # Tool registration
ā āāā toolsets/ # Tool implementations
ā ā āāā volume_tools.go # Audio/volume tools
ā ā āāā memory_tools.go # Memory management
ā ā āāā reminder_tools.go # Alarm/reminder tools
ā ā āāā filesystem_tools.go # File system operations
ā ā āāā internet_tools.go # Weather/location tools
ā āāā log/ # Logging utilities
Adding New Tools
- Implement the tool function in the appropriate toolset file
- Register the tool in
internal/mcp/tools.go
- Follow the MCP tool specification for parameter definitions
Example:
// In toolsets/example_tools.go
func ExampleTool(ctx context.Context, arguments mcp.CallToolRequestArguments) (*mcp.CallToolResult, error) {
// Tool implementation
}
// In internal/mcp/tools.go
p.Mcp.AddTool(mcp.NewTool("exampleTool",
mcp.WithDescription("Description of the tool"),
mcp.WithString("param", mcp.Description("Parameter description")),
),
toolsets.ExampleTool,
)
Logging
The server provides comprehensive logging with different levels:
- DEBUG: Detailed execution information
- INFO: General operational messages
- ERROR: Error conditions
Logs are written to the specified log directory or current directory if not specified.
Security Considerations
- File system tools operate within the permissions of the running user
- Network tools may require internet connectivity
- Consider running with restricted permissions in production environments
Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Support
For issues and questions:
- Open an issue on GitHub
- Check the MCP specification for protocol details
Changelog
v0.1.0
- Initial release
- Basic tool set implementation
- STDIO and SSE transport support
- Comprehensive logging system