Journal Mandala MCP
This MCP server allows Claude to read and write journal entries and todos on Journal Mandala directly from conversations.
add_journal_entry: Create a new journal entry with optionaltitle(auto-generated if omitted),event(what happened),thought(how you felt),entry_date(YYYY-MM-DD, defaults to today in JST),entry_time(HH:MM),tags(array of strings), andstar_rating(1–5). At least one oftitle,event, orthoughtis required.find_entries: Retrieve recent journal entries (default 20, max 100), sorted by updated order — useful for obtaining entry IDs for further actions.update_entry: Partially update an existing entry by its ID, supporting the same fields asadd_journal_entryandadd_todo.add_todo: Create a new todo item with a requiredtitle, optionalthought(notes),entry_date,due_date,status(pending,in_progress,completed,cancelled),todo_points(estimated effort), andtags.
Additional features:
Multi-account support via multiple API keys, selectable through natural language.
Optional
JOURNAL_MANDALA_API_URLenvironment variable to override the default API endpoint.Compatible with Claude Desktop and Claude Code via the MCP protocol.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Journal Mandala MCPRecord today's team meeting and my thoughts about the project progress"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Journal Mandala MCP
This is an MCP server for writing journal entries directly to Journal Mandala from Claude.
Use this when you want to carve your "stream of thought" into your Mandala during a conversation.
Requirements
Node.js 20+
Claude Desktop (or Claude Code)
Journal Mandala API Key (See "Obtaining an API Key" for how to issue one)
Related MCP server: Obsidian Nexus
Installation
Install globally via npm.
npm install -g --install-links github:takezone/journal-mandala-mcp--install-links is mandatory (without it, it creates a symlink to a temporary directory, preventing it from launching).
Run the same command again to update. If you previously installed it without --install-links and it is broken:
npm uninstall -g journal-mandala-mcp
# 残骸掃除 (npm prefix は `npm prefix -g` で確認)
rm -rf $(npm prefix -g)/lib/node_modules/journal-mandala-mcp
rm -rf $(npm prefix -g)/lib/node_modules/.journal-mandala-mcp-*
npm install -g --install-links github:takezone/journal-mandala-mcpClaude Desktop Configuration
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):
Single Account Setup
{
"mcpServers": {
"journal-mandala": {
"command": "journal-mandala-mcp",
"env": {
"JOURNAL_MANDALA_API_KEY": "jm_XXXXXXXXXXXXXXXXXXXXXXXX"
}
}
}
}Switching Between Two Accounts (personal / work)
{
"mcpServers": {
"journal-mandala-personal": {
"command": "journal-mandala-mcp",
"env": {
"JOURNAL_MANDALA_API_KEY": "jm_PERSONAL_KEY"
}
},
"journal-mandala-work": {
"command": "journal-mandala-mcp",
"env": {
"JOURNAL_MANDALA_API_KEY": "jm_WORK_KEY"
}
}
}
}Each will appear as a separate tool in Claude. You can switch between them using natural language, such as "Record this to work."
Restart Claude Desktop after configuring.
Obtaining an API Key
Currently, please contact the Journal Mandala administrator (@takezone) with the following information to have one issued:
Your Google account email address
A label name (e.g.,
alice-personal)
Once the administrator sends you the API key, copy and paste it into JOURNAL_MANDALA_API_KEY in the configuration above.
Note: We plan to enable automatic issuance via the browser in the future.
Usage
When you ask Claude something like "Record today's events in my journal" during a conversation, the add_journal_entry tool will be called to add an entry to Journal Mandala.
Provided tools:
add_journal_entry — Add a journal entry
titleTitle (optional)eventEvent (what happened)thoughtThought (how you felt)entry_dateDateYYYY-MM-DD(defaults to today in JST)entry_timeTimeHH:MMtagsArray of tags — Must be passed as an array of strings✅ Correct:
["Work", "Exercise"]❌ Incorrect:
["[\"Work\",\"Exercise\"]"](Do not make a JSON-stringified array a single element)
star_rating1-5 rating
find_entries — List recent entries
Used to retrieve IDs. Returns entries in order of most recent update.
limitNumber of items to retrieve (default 20, max 100)
update_entry — Update an existing entry
Partial update by specifying an ID. Only specified fields are overwritten; omitted fields are maintained.
idRequiredAll other fields are the same as
add_journal_entry/add_todoand are optional
Usage: Find the ID with find_entries → Update with update_entry
add_todo — Add a Todo
titleTask name (Required)thoughtNote about the task (optional)entry_dateCreation date (defaults to today in JST)due_dateDue dateYYYY-MM-DD(optional)todo_statuspending|in_progress|completed|cancelled(defaults to pending)todo_pointsEstimated points (optional)is_todayFlag for "today's list" (optional)tagsArray of tags1: Subtle/negative event2: Normal day (default)3: Day with some good things4: Day with quite good things5: Major life event levelDo not assign 5 lightly. Default to 2; use 3 or 4 if something good happens.
At least one of title / event / thought is required.
Optional Environment Variables
JOURNAL_MANDALA_API_URL— API endpoint (default:https://journal-mandala.vercel.app)
Troubleshooting
Tool not appearing in Claude → Possible JSON syntax error in the config file. Check the MCP logs in the Claude Desktop Developer menu.
API Error 401 →
JOURNAL_MANDALA_API_KEYis invalid. Request a reissue from the administrator.Network Error → Check the Vercel status.
For Administrators: API Key Management and Recovery
Reference for when a user loses their key. This MCP references the master record stored on the Vercel side, so it can be recovered even if the copy of ~/.claude.json is lost.
3-Layer Structure
Layer | Location | Role |
Server env var | Vercel | Static array of initial seed accounts (Master) |
Server KV | Vercel KV (Upstash Redis) | Accounts added via |
Client |
| Key copy for authentication (recoverable if lost) |
During API authentication, it checks KV first, then the env var.
Recovery Procedure (Project Owner)
In the project directory (the journal-mandala root):
# Vercel プロジェクトと連携(初回のみ)
vercel link --yes --project journal-mandala
# サーバー環境変数をローカルに取得
vercel env pull .env.vercel
# env var 内のキー確認
grep JM_API_ACCOUNTS .env.vercel
# KV 内のキー一覧スキャン
source .env.vercel
curl -s "${KV_REST_API_URL}/scan/0/match/jm:account:*/count/100" \
-H "Authorization: Bearer ${KV_REST_API_TOKEN}"
# 特定アカウントの中身を見る
curl -s "${KV_REST_API_URL}/get/jm:account:jm_XXXXX" \
-H "Authorization: Bearer ${KV_REST_API_TOKEN}"
# 終わったら機密情報を必ず削除
rm -f .env.vercel .vercel/project.json && rmdir .vercel 2>/dev/nullIssuing a New Key
Log in with the target Google account in Chrome.
Open
https://journal-mandala.vercel.app/api/enroll?label=<arbitrary label>.OAuth approval → The API key will be displayed only once on the screen; copy it.
Update
mcpServers.*.env.JOURNAL_MANDALA_API_KEYin~/.claude.json.
Re-enrolling with the same Google account will automatically revoke the old key and replace it with a new one.
Setting up on another Mac (2nd machine onwards)
Since the API key is tied to the Google account, the same key can be used even if the machine changes (no re-enrollment required).
# 1. (未インストールなら) Node.js をインストール
brew install node
# 2. MCPサーバーをグローバルインストール
npm install -g --install-links github:takezone/journal-mandala-mcp
# 3. ~/.claude.json に mcpServers を追記(既存設定を壊さないよう python でマージ推奨)
python3 - <<'PY'
import json, os
p = os.path.expanduser('~/.claude.json')
with open(p) as f: c = json.load(f)
c.setdefault('mcpServers', {})
c['mcpServers'].update({
'journal-mandala-personal': {
'command': 'journal-mandala-mcp',
'env': {'JOURNAL_MANDALA_API_KEY': 'jm_XXXXX'} # ←実キー
},
'journal-mandala-work': {
'command': 'journal-mandala-mcp',
'env': {'JOURNAL_MANDALA_API_KEY': 'jm_YYYYY'} # ←実キー
},
})
with open(p, 'w') as f: json.dump(c, f, indent=2, ensure_ascii=False)
print('updated')
PY
# 4. Claude Code を再起動(/exit → claude 再実行)If you don't have the existing key on hand: Copy it from ~/.claude.json on your primary Mac, or retrieve it from Vercel using the "Recovery Procedure" above.
Recommendation for distributed use: If you use different keys for your home Mac and work Mac (e.g., ?label=personal-home / ?label=personal-work), a leak in one won't affect the other, and rotation can be done separately. While using the same key is more convenient, choose based on your preference.
License
MIT
Available Tools
1 tooladd_journal_entryAdd Journal Mandala entryB
Journal Mandala に新しい日記エントリを作成する。event (出来事: 何があったか) と thought (思考: それについてどう感じたか) は両方とも任意だが、少なくとも title/event/thought のいずれかは必須。日付を省略すると日本時間での今日の日付になる。
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | エントリのタイトル(任意。省略時は先頭20文字から自動生成) | |
| event | No | 出来事: 何があったかを事実ベースで記述 | |
| thought | No | 思考: それについてどう感じたか・何を考えたか | |
| entry_date | No | YYYY-MM-DD 形式。省略時は日本時間での今日 | |
| entry_time | No | HH:MM 形式(任意) | |
| tags | No | タグの配列(任意) | |
| star_rating | No | 1-5 の評価(任意) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It describes key behaviors: the tool creates a new entry (implying a write/mutation operation), specifies default values for title (auto-generated from first 20 characters) and date (today's Japan time), and mentions the requirement for at least one of title/event/thought. However, it lacks details on permissions, error handling, or response format, leaving gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately concise with two sentences that efficiently convey the tool's purpose and key constraints. It is front-loaded with the main action and avoids unnecessary details, though it could be slightly more structured by separating usage rules into bullet points for clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (7 parameters, mutation operation) and lack of annotations and output schema, the description is moderately complete. It covers the creation action, parameter requirements, and defaults, but misses details on permissions, error cases, and what the tool returns, which are important for a write tool with no structured output information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, providing detailed descriptions for all 7 parameters. The description adds minimal value beyond the schema by mentioning that event and thought are optional but at least one of title/event/thought is required, and that the date defaults to today's Japan time if omitted. This aligns with the baseline of 3 when the schema does most of the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Journal Mandala に新しい日記エントリを作成する' (creates a new journal entry in Journal Mandala). It specifies the verb (create/作成する) and resource (journal entry/日記エントリ). However, since there are no sibling tools mentioned, it cannot demonstrate differentiation from alternatives, preventing a score of 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides implied usage guidance by stating that at least one of title/event/thought is required, and that the date defaults to today's date in Japan time if omitted. However, it lacks explicit guidance on when to use this tool versus alternatives (none mentioned) or any prerequisites or exclusions, keeping it at a basic level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v0.1.0- First observed
add_journal_entry
TDQS
Scored across 1 tool
With only one tool, there is no possibility of ambiguity or overlap between tools. The tool's purpose is clearly defined as adding journal entries, and no other tools exist to cause confusion.
A single tool inherently has perfect naming consistency, as there are no other tools to compare it against. The name 'add_journal_entry' follows a clear verb_noun pattern (add + journal_entry).
A single tool for a journaling server is too few for the apparent scope. Journaling typically involves operations like viewing, updating, deleting, or searching entries, but this server only supports adding entries, which severely limits functionality.
The tool surface is severely incomplete for a journaling domain. It only allows adding entries, with no tools for retrieving, updating, deleting, or searching entries. This creates dead ends for agents, as they cannot perform basic CRUD operations beyond creation.
Maintenance
Related MCP Connectors
Plan trips directly into TravelOwl from a conversation with Claude.
First strength app Claude can write to: plan training in chat, it lands in the app ready to log.
- PenlogOAuthapp.penlog
Handwritten iPad journal your AI can read and write tasks back to, over MCP.
- TaprootOAuthcom.taproothq
Persistent memory layer for AI tools. Save and recall notes across Claude and other MCP clients.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables structured note-taking with markdown support, dynamic tagging system, advanced search capabilities, and markdown export functionality through natural language conversations in Claude Desktop.3GPL 3.0
- FlicenseNot gradedqualityDmaintenanceConnects Claude Desktop to Obsidian vaults to enable reading, writing, searching, and intelligent organization of markdown notes. It features pre-configured structures for personal and family data management through natural conversation.2-
- AlicenseNot gradedqualityDmaintenanceEnables Claude to access and manage a persistent, human-readable knowledge graph of neurons, with semantic search, memory consolidation, and local ownership.MIT
- AlicenseAqualityCmaintenanceEnables personal knowledge management through Claude Desktop, allowing users to capture thoughts, connect ideas, and reflect on thinking changes via natural conversation.723MIT