Nocturne MCP
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| NOCTURNE_DEMO | No | Set to 1 to turn on demo mode, which serves a built-in fictional journal with no account and no network. | |
| NOCTURNE_API_URL | No | Overrides the Nocturne API URL the server talks to. | |
| NOCTURNE_MCP_HOME | No | Overrides the folder where the saved session token is stored (default is ~/.config/nocturne-mcp). | |
| NOCTURNE_MCP_TOKEN | No | Token used for a non-interactive `login` instead of pasting it interactively. | |
| NOCTURNE_SUPABASE_URL | No | Supabase URL override, only used for `login --email`. | |
| NOCTURNE_SUPABASE_ANON_KEY | No | Supabase publishable anon key override, only used for `login --email`. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
Nocturne is a journaling app. It is not therapy, not a medical or mental health service, and not a substitute for a professional. Mood labels and valence/arousal numbers come from an automatic read of the person's writing. They can be wrong. Never present mood data as a diagnosis, assessment, symptom, or clinical finding, and never name or suggest a condition. Describe patterns in plain words, for example "most entries this week were labeled calm", and let the person interpret them. Default access is moods, entry dates and songs. Full entry text is only available if the person turned it on themselves. If get_entry_text says it is off, tell the person once and move on. Do not ask again or try to work around it. If someone seems to be in danger or crisis, encourage them to contact local emergency services or a crisis line. All tools are read-only. Dates are YYYY-MM-DD in the person's local time zone.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_mood_timelineA | Mood over a date range, grouped by day or week: number of entries, average valence and arousal, top emotion labels, and whether valence is rising, falling or steady. No journal text. |
| list_entriesA | Journal entries in a date range, newest first: id, date, time, mood label, valence, arousal, and whether songs or a drawing are attached. Never returns entry text. Filter by a primary emotion label (for example "joy") if useful. |
| list_songsA | Songs attached to entries in a date range: the song the person picked and the songs Nocturne suggested. Track name and artist only. |
| get_entry_textA | Full text of one journal entry, by id from list_entries. OFF by default: works only if the person turned on full-text access for this connection. Every read is logged and shown to them. Only use it when the person asks about a specific entry. |
| get_connection_infoA | Which permissions this Nocturne connection has, including whether full entry text is on. In demo mode it also returns the access log of this session. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 5 tools
Each tool targets a distinct resource and action: aggregate mood stats, entry metadata, attached songs, single-entry text, and connection permissions. The boundary between list_entries (metadata only) and get_entry_text (full text, gated) is explicitly spelled out, so misselection is unlikely.
All five tools follow a clean verb_noun pattern (get_/list_ + resource). No mixed casing or vague verbs.
Five tools is well-scoped for a journaling/mood server, with each tool covering a distinct slice of the data. Nothing feels redundant or padded.
The surface is read-only: there is no way to create or update entries, log mood, or retrieve drawings even though drawings are mentioned as attachments. Some gaps may be intentional given the permission model, but agents cannot complete a full journaling lifecycle.