Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

nta

nta is a small Go MCP server that exposes one tool, desktop_notify, for sending desktop notifications with notify-send.

Build

go build ./...

Local MCP mode

Local mode uses stdio, which is the common transport for a locally launched MCP server:

go run . -mode local

Example MCP client config:

{
  "mcpServers": {
    "nta": {
      "command": "go",
      "args": ["run", "/home/nzlov/workspaces/go/nta", "-mode", "local"]
    }
  }
}

Remote MCP mode

Remote mode starts a Streamable HTTP MCP endpoint. By default it listens on :8080 at /mcp.

NTA_AUTH_TOKEN=change-me go run . -mode remote -addr :8080 -path /mcp

Use -dry-run to validate tool calls without invoking notify-send:

NTA_AUTH_TOKEN=change-me go run . -mode remote -addr :8080 -path /mcp -dry-run

Remote mode requires bearer token authentication. Set NTA_AUTH_TOKEN or pass -auth-token; clients must send Authorization: Bearer <token>.

User systemd service

The repository includes a user-level systemd unit at systemd/nta.service. It runs remote MCP mode on 127.0.0.1:55853/mcp and reads the bearer token from ~/.config/nta/nta.env.

Install the binary:

mkdir -p ~/.local/bin
go build -o ~/.local/bin/nta .

Create the token environment file:

mkdir -p ~/.config/nta
umask 077
printf 'NTA_AUTH_TOKEN=%s\n' 'change-me' > ~/.config/nta/nta.env

Install and start the user service:

mkdir -p ~/.config/systemd/user
cp systemd/nta.service ~/.config/systemd/user/nta.service
systemctl --user daemon-reload
systemctl --user enable --now nta.service

Check status and logs:

systemctl --user status nta.service
journalctl --user -u nta.service -f

With the default user service setup, the service starts with the user's systemd session. To run it before login, enable lingering for the user:

loginctl enable-linger "$USER"

Tool

desktop_notify accepts:

  • title required notification title
  • body optional notification body
  • app_name optional application name, default nta
  • urgency one of low, normal, or critical
  • icon optional icon name or path
  • timeout optional timeout in milliseconds
  • dry_run optional per-call dry-run switch

The notification is shown on the machine running the MCP server, so remote mode notifies the server host, not the client host.

About

linux notify mcp

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages