Journal Mandala MCP
Journal Mandala MCP
Este es un servidor MCP para escribir entradas de diario directamente en Journal Mandala desde Claude.
Se utiliza cuando deseas grabar el "flujo de pensamiento" en el mandala durante una conversación.
Requisitos
Node.js 20+
Claude Desktop (o Claude Code)
Clave API de Journal Mandala (consulta "Obtención de la clave API" para saber cómo generarla)
Related MCP server: Obsidian Nexus
Instalación
Instálalo globalmente con npm.
npm install -g --install-links github:takezone/journal-mandala-mcp--install-links es obligatorio (si no se incluye, se creará un enlace simbólico a un directorio temporal y no se podrá iniciar).
Ejecuta el mismo comando para actualizar. Si anteriormente lo instalaste sin --install-links y está dañado:
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-mcpConfiguración de Claude Desktop
Edita ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):
Uso con 1 cuenta
{
"mcpServers": {
"journal-mandala": {
"command": "journal-mandala-mcp",
"env": {
"JOURNAL_MANDALA_API_KEY": "jm_XXXXXXXXXXXXXXXXXXXXXXXX"
}
}
}
}Si deseas alternar entre 2 cuentas (personal / trabajo)
{
"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"
}
}
}
}Cada una aparecerá como una herramienta distinta en Claude. Puedes alternar usando lenguaje natural, como "registra esto en el trabajo".
Reinicia Claude Desktop después de configurar.
Obtención de la clave API
Actualmente, debes solicitarla al administrador de Journal Mandala (@takezone) proporcionando lo siguiente:
Tu dirección de correo electrónico de la cuenta de Google
Un nombre de etiqueta (ej:
alice-personal)
Una vez que el administrador te envíe la clave API, pégala en JOURNAL_MANDALA_API_KEY en la configuración anterior.
Nota: Está previsto que en el futuro se pueda generar automáticamente desde el navegador.
Uso
Si le pides a Claude durante una conversación "registra los eventos de hoy en el diario", se llamará a la herramienta add_journal_entry y se añadirá la entrada a Journal Mandala.
Herramientas disponibles:
add_journal_entry — Añadir entrada de diario
titleTítulo (opcional)eventEvento (qué sucedió)thoughtPensamiento (cómo te sentiste)entry_dateFechaYYYY-MM-DD(por defecto, hoy en JST)entry_timeHoraHH:MMtagsArray de etiquetas — Debe pasarse como un array de cadenas✅ Correcto:
["trabajo", "ejercicio"]❌ Incorrecto:
["[\"trabajo\",\"ejercicio\"]"](no conviertas el array en una cadena JSON como un solo elemento)
star_ratingValoración de 1 a 5
find_entries — Lista de entradas recientes
Se usa para obtener el ID. Devuelve las entradas ordenadas por fecha de actualización reciente.
limitNúmero de resultados (por defecto 20, máximo 100)
update_entry — Actualizar entrada existente
Actualización parcial especificando el ID. Solo se sobrescriben los campos especificados; los campos omitidos se mantienen.
idObligatorioLos demás campos son opcionales y coinciden con
add_journal_entry/add_todo
Uso: busca el ID con find_entries → actualiza con update_entry
add_todo — Añadir tarea (Todo)
titleNombre de la tarea (obligatorio)thoughtNota sobre la tarea (opcional)entry_dateFecha de creación (por defecto, hoy en JST)due_dateFecha de vencimientoYYYY-MM-DD(opcional)todo_statuspending|in_progress|completed|cancelled(por defecto, pending)todo_pointsPuntos estimados (opcional)is_todayFlag para la lista de hoy (opcional)tagsArray de etiquetas1: Evento sutil o negativo2: Un día normal (por defecto)3: Un día con algo bastante bueno4: Un día con algo muy bueno5: Evento importante en la vidaNo asignes 5 a la ligera. Por defecto es 2; usa 3 o 4 si ocurre algo bueno
Es obligatorio incluir al menos uno de los siguientes: title / event / thought.
Variables de entorno opcionales
JOURNAL_MANDALA_API_URL— Endpoint de la API (por defecto:https://journal-mandala.vercel.app)
Solución de problemas
La herramienta no aparece en Claude → Posible error de sintaxis JSON en el archivo de configuración. Revisa los registros de MCP en el menú de desarrollador de Claude Desktop.
Error de API 401 →
JOURNAL_MANDALA_API_KEYno es válida. Solicita una nueva al administrador.Error de red → Verifica el estado de funcionamiento de Vercel.
Para administradores: Gestión y recuperación de claves API
Referencia para cuando un usuario pierde su clave. Este MCP hace referencia al registro maestro guardado en Vercel, por lo que se puede recuperar incluso si se pierde la copia de ~/.claude.json.
Estructura de 3 capas
Capa | Ubicación | Rol |
Servidor env var | Variable de entorno Vercel | Array estático de cuentas semilla iniciales (maestro) |
Servidor KV | Vercel KV (Upstash Redis) | Cuentas añadidas mediante |
Cliente |
| Copia de la clave para autenticación (se puede recuperar si se pierde) |
Durante la autenticación de la API, se verifica primero en KV y luego en env var.
Procedimiento de recuperación (propietario del proyecto)
En el directorio del proyecto (el núcleo de journal-mandala):
# 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/nullEmisión de nueva clave
Inicia sesión con la cuenta de Google correspondiente en Chrome.
Abre
https://journal-mandala.vercel.app/api/enroll?label=<etiqueta_arbitraria>.Autorización OAuth → La clave API se mostrará una sola vez en pantalla, cópiala.
Actualiza
mcpServers.*.env.JOURNAL_MANDALA_API_KEYen~/.claude.json.
Si vuelves a realizar el proceso de inscripción con la misma cuenta de Google, la clave anterior se revocará automáticamente y se reemplazará por la nueva.
Configuración en otro Mac (segundo equipo o más)
Como la clave API está vinculada a la cuenta de Google, puedes usar la misma clave aunque cambies de máquina (no es necesario volver a inscribirse).
# 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 再実行)Si no tienes la clave existente a mano: Cópiala desde ~/.claude.json de tu otro Mac o recupérala desde Vercel siguiendo el "Procedimiento de recuperación" anterior.
Recomendación de uso distribuido: Si usas claves distintas en el Mac de casa y el del trabajo (ej: ?label=personal-home / ?label=personal-work), si una se filtra, la otra no se verá afectada y la rotación se puede hacer por separado. Aunque es más cómodo usar la misma clave, puedes elegir según tu preferencia.
Licencia
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.
Notes and actions in one app. Let Claude or ChatGPT read and update them.
- PenlogOAuthapp.penlog
Handwritten iPad journal your AI can read and write tasks back to, over MCP.
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