Skip to main content
Glama

habitca-mcp

A small Model Context Protocol server that exposes the Habitica v3 API as MCP tools, so MCP-aware AI assistants (Claude Code, Hermes Agent, Cursor, etc.) can read and update your Habitica tasks, habits, dailies, rewards, pets, inventory and notifications.

This is a clean rewrite of the original by iBreaker — same surface, no axios/zod/i18n, single-file Node, English-only output.

Install

git clone https://github.com/hxlair/habitca_mcp.git
cd habitca_mcp
npm install

Node 18 or newer is required (uses the built-in fetch).

Related MCP server: Habitica MCP

Auth

You need your Habitica API credentials:

  1. Open https://habitica.com/user/settings/api

  2. Copy your User ID and API Token

Export them in the shell that will launch the server:

export HABITICA_USER_ID=...
export HABITICA_API_TOKEN=...

Optional:

export HABITICA_APP_ID=my-mcp-client      # sent as x-client header for Habitica analytics

Run

npm start
# or
./index.js

The server speaks MCP over stdio. It logs habitca-mcp ready to stderr once connected.

Wire into an MCP client

Claude Code / Hermes Agent / Cursor

Add to the client's MCP config:

{
  "mcpServers": {
    "habitca": {
      "command": "node",
      "args": ["/absolute/path/to/habitca_mcp/index.js"],
      "env": {
        "HABITICA_USER_ID": "...",
        "HABITICA_API_TOKEN": "..."
      }
    }
  }
}

For Hermes specifically:

hermes mcp add habitca \
  --env HABITICA_USER_ID=... \
  --env HABITICA_API_TOKEN=... \
  -- node /absolute/path/to/habitca_mcp/index.js

Tools

Tool

Purpose

get_user_profile

Full user document

get_stats

HP / MP / XP / level / gold / class

get_tasks

List tasks (optionally filter by habits / dailys / todos / rewards / completedTodos)

get_task

Fetch one task by id

create_task

Create habit/daily/todo/reward

update_task

Update a task's fields

score_task

Score a task up (default) or down

delete_task

Delete a task

get_task_checklist

List checklist items on a task

add_checklist_item

Add a checklist item

update_checklist_item

Edit text/completed on a checklist item

score_checklist_item

Toggle checklist item complete

delete_checklist_item

Remove a checklist item

get_tags / create_tag

Tag CRUD (subset)

get_inventory / get_pets / get_mounts

Inventory views

feed_pet / hatch_pet / equip_item

Pet & gear actions

buy_reward / get_shop / buy_item

Reward purchases

cast_spell

Cast a class spell on self / a task / a party member

get_notifications / read_notification

Notification handling

run_cron

Trigger the daily cron manually

Differences from upstream

  • Single dependency — only @modelcontextprotocol/sdk. axios, zod and the i18n layer are gone.

  • English-only output messages.

  • x-client header sent so Habitica can attribute traffic back to the MCP.

  • Better errors — surfaces the Habitica API's message field instead of swallowing it.

  • Structured success messages — score_task returns the gold/exp/level deltas, create_task returns the new id, etc.

  • Adds get_task and run_cron; minor schema cleanups (priority enum, completedTodos filter).

License

MIT — same as upstream.

Available Tools

28 tools
add_checklist_itemC

Add a checklist item to a task.

Inputs: taskId (required), text (required).

buy_itemC

Buy an item from a shop.

Inputs: itemKey (required), quantity.

buy_rewardC

Buy a custom reward by key.

Inputs: key (required).

cast_spellB

Cast a class spell, optionally on a target task or party member.

Inputs: spellId (required), targetId.

create_tagD

Create a tag.

Inputs: name (required).

create_taskB

Create a habit, daily, todo, or reward.

Inputs: type (required), text (required), notes, difficulty, +4 more.

delete_checklist_itemC

Delete a checklist item.

Inputs: taskId (required), itemId (required).

delete_taskC

Delete a task by id.

Inputs: taskId (required).

equip_itemC

Equip a pet, mount, costume piece, or battle gear.

Inputs: type (required), key (required).

feed_petB

Feed a pet a piece of food.

Inputs: pet (required), food (required).

get_inventoryA

Get full inventory (items, eggs, food, hatching potions, special).

Inputs: no named parameters.

get_mountsA

Get owned mounts map.

Inputs: no named parameters.

get_notificationsC

Get unread notifications.

Inputs: no named parameters.

get_petsA

Get owned pets map.

Inputs: no named parameters.

get_shopB

Get items in a shop (default: market).

Inputs: shopType.

get_statsA

Get user stats only (HP, MP, XP, level, gold, class).

Inputs: no named parameters.

get_tagsA

Get all tags.

Inputs: no named parameters.

get_taskC

Get a single task by id.

Inputs: taskId (required).

get_task_checklistC

Get checklist items for a task.

Inputs: taskId (required).

get_tasksC

List tasks. Optionally filter by type.

Inputs: type.

get_user_profileA

Get the authenticated user's full profile (stats, prefs, items, party, etc).

Inputs: no named parameters.

hatch_petC

Hatch a pet from an egg + hatching potion.

Inputs: egg (required), hatchingPotion (required).

read_notificationC

Mark a notification as read.

Inputs: notificationId (required).

run_cronA

Run the daily cron (advance day, apply damage from missed dailies). Normally auto-runs on first action of the day.

Inputs: no named parameters.

score_checklist_itemC

Toggle a checklist item complete/incomplete.

Inputs: taskId (required), itemId (required).

score_taskA

Score a task. direction='up' completes a todo/daily or marks a + habit; 'down' is for negative habits.

Inputs: taskId (required), direction.

update_checklist_itemB

Update text/completed on a checklist item.

Inputs: taskId (required), itemId (required), text, completed.

update_taskC

Update fields on a task (text, notes, difficulty, priority, etc).

Inputs: taskId (required), text, notes, difficulty, +2 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3/5.0

    Scored across 28 tools

    Disambiguation4/5

    Most tools have clearly distinct purposes (e.g., get_task vs get_tasks, buy_item vs buy_reward). A few overlaps exist (get_inventory and get_user_profile both return items) but descriptions reduce ambiguity.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun snake_case pattern (e.g., create_task, buy_item, equip_item). No mixing of conventions or chaotic naming.

    Tool Count4/5

    28 tools cover a broad gamification system (tasks, inventory, pets, spells, shop). Slightly high but justified by the feature set; not excessive.

    Completeness3/5

    Core task and checklist operations are complete, but missing CRUD for tags (no delete/update), rewards management beyond buying, and some inventory actions. Notable gaps exist.

    Maintenance

    ActivityInactive
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      C
      quality
      D
      maintenance
      Enables AI assistants to interact with the Habitica API to manage tasks, track habits, and engage in gamified productivity features like pet raising and inventory management. It allows users to control their Habitica account through natural language for a personalized and automated productivity experience.
      26
      18 npm
      26
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      MCP server for managing Habitica as a daily execution layer, enabling agents to read and (with explicit confirmation) create, complete, and score tasks via the Habitica API.
      17 npm
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables MCP-compatible clients to read and write a gamified self-improvement RPG character sheet, including quest management, profile viewing, skills, social challenges, and leaderboards.
      1
      MIT