Local Utilities MCP Server
by arjshiv
Verified
# Local Utilities MCP Server
A Model Context Protocol (MCP) server that provides access to various local system utilities. This server can be used with Cursor and other MCP-compatible clients to provide quick access to system information.
## Features
The server provides the following utilities:
- **Time and Date**: Get the current local time and date, including day of the week, in various formats
- **Hostname**: Get the system's hostname
- **Public IP**: Get the machine's public IP address
- **Directory Listing**: List the contents of a specified directory
- **Node.js Version**: Get the currently running Node.js version
- **Port Checker**: Check what process is running on a specific port
- **Think Tool**: Record, retrieve, and analyze thoughts during development sessions
## Installation
### Global Installation
```bash
pnpm add -g localutils-mcp-server
```
### Using with npx
You can also run the server directly using npx without installing it globally:
```bash
npx localutils-mcp-server
```
## Usage
### Starting the Server
If installed globally:
```bash
localutils-mcp
```
With npx:
```bash
npx localutils-mcp-server
```
### Using with Cursor
The server can be used with Cursor by configuring it as an MCP server in Cursor's settings.
1. Open Cursor settings
2. Navigate to the MCP section
3. Add a new MCP server with the following configuration:
```json
{
"name": "localutils",
"command": "npx",
"args": ["localutils-mcp-server"]
}
```
### Using the MCP Inspector
You can test the server using the MCP Inspector:
```bash
pnpm run inspector
```
This will start the MCP Inspector at http://localhost:5173.
## Available Tools
### `get_time_and_date`
Returns the current local time and date in various formats, including:
- Local time
- Local date
- Day of the week
- ISO 8601 format
- Unix timestamp
### `get_hostname`
Returns the hostname of the machine running the MCP server.
### `get_public_ip`
Returns the public IP address of the machine running the MCP server.
### `list_directory`
Lists the contents of a specified directory.
**Parameters:**
- `path` (string, required): Directory path to list
### `get_node_version`
Returns the Node.js version information of the environment running the MCP server.
### `check_port`
Checks what process is running on a specific port.
**Parameters:**
- `port` (number or string, required): Port number to check (1-65535). String values will be automatically converted to numbers.
**Example Response (macOS/Linux):**
```json
{
"processes": [
{
"command": "node",
"pid": "12345",
"user": "username",
"fd": "12u",
"type": "IPv4",
"device": "0x1234567890",
"size": "0t0",
"node": "TCP",
"name": "*:3000 (LISTEN)"
}
],
"message": "Found 1 process(es) using port 3000"
}
```
### `think`
Records a new thought with timestamp.
**Parameters:**
- `thought` (string, required): The thought content to record
**Example Response:**
```json
{
"success": true,
"data": {
"message": "Thought recorded successfully"
}
}
```
### `get_thoughts`
Retrieves all recorded thoughts.
**Example Response:**
```json
{
"success": true,
"data": {
"thoughts": [
{
"timestamp": "2025-03-24T15:00:00.000Z",
"content": "Need to update the documentation"
}
]
}
}
```
### `clear_thoughts`
Clears all recorded thoughts.
**Example Response:**
```json
{
"success": true,
"data": {
"message": "All thoughts cleared"
}
}
```
### `get_thought_stats`
Returns statistics about recorded thoughts.
**Example Response:**
```json
{
"success": true,
"data": {
"totalThoughts": 1,
"averageLength": 28,
"oldestThought": "2025-03-24T15:00:00.000Z",
"newestThought": "2025-03-24T15:00:00.000Z"
}
}
```
## Development
### Building
```bash
pnpm run build
```
### Running in Development Mode
```bash
pnpm run dev
```
### Testing
```bash
pnpm test
```
### Git Workflow
This repository includes a pre-commit hook that automatically builds the server before each commit. This ensures that the build files are always up-to-date in the repository.
The build folder is included in the git repository to make it easier to use the package with npx without having to build it first.
To set up the pre-commit hook after cloning the repository:
```bash
pnpm install
```
This will install dependencies and set up the pre-commit hook via Husky.
## License
MIT