systems-mcp

4nkitd/systems-mcp

3.3

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.

Tools
  1. volumeUp

    Increase system volume by 10

  2. volumeDown

    Decrease system volume by 10

  3. volumeMute

    Mute system volume

  4. volumeUnmute

    Unmute system volume

  5. speak

    Text-to-speech conversion

  6. saveInfo

    Save information to memory

  7. getSavedInfo

    Retrieve saved information

  8. setAlarm

    Set an alarm reminder

  9. getCurrentWorkingDirectory

    Get current directory

  10. listDirectory

    List directory contents

  11. readFile

    Read file contents

  12. getWeather

    Get weather information

  13. 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:

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 or sse) - 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 directory
  • TRANSPORT: Set transport mode
  • HOST: Set server host (SSE mode)
  • PORT: Set server port (SSE mode)

Available Tools

Tool NameDescriptionParameters
volumeUpIncrease system volume by 10None
volumeDownDecrease system volume by 10None
volumeMuteMute system volumeNone
volumeUnmuteUnmute system volumeNone
speakText-to-speech conversionmessage (string)
saveInfoSave information to memorykey (string), value (string)
getSavedInfoGet saved information. If no key is provided, all information is returned.key (string, optional)
setAlarmSet an alarm remindertime (HH:MM), message (optional)
getCurrentWorkingDirectoryGet current directoryNone
listDirectoryList directory contentspath (optional)
readFileRead file contentspath (required)
getWeatherGet weather informationlocation (optional)
getCurrentLocationGet current locationNone
fetchURLFetch the markdown content of a URLurl (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

  1. Implement the tool function in the appropriate toolset file
  2. Register the tool in internal/mcp/tools.go
  3. 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

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests if applicable
  5. Submit a pull request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Support

For issues and questions:

Changelog

v0.1.0

  • Initial release
  • Basic tool set implementation
  • STDIO and SSE transport support
  • Comprehensive logging system