m5-petit-desire
Click on "Install 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., "@m5-petit-desirecheck my current desire levels"
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.
M5 Petit Desire
EnglishPage
M5 Petitに、時間経過とセンサー入力に基づいて変化する内的な「欲求」を持たせる自律欲求システムです。
desire_config.json(キャラクターごとの設定ファイル)で定義した欲求それぞれについて、3段階で欲求レベル(0.0〜1.0)を計算します。
時間ベース計算 — m5-petit-memoryのSQLite DBをキーワード検索し、最後にその欲求が満たされてからの経過時間を欲求レベルに変換
センサー効果の適用 — M5の
/sensorsエンドポイント(m5-petit-mcpが公開)から取得したセンサー値で欲求を増減欲求間の相互作用 — ある欲求が閾値を超えたときに他の欲求へ影響を与える(
cross_effects)
desire_updater.pyをcronで定期実行してdesires.jsonを更新し、MCPサーバー(server.py)がそれを読んでClaudeにツールとして提供します。
Related MCP server: mcp-esieabot
必要環境
Python 3.10+
セットアップ
uvが未インストールの場合は先にインストールします。
curl -LsSf https://astral.sh/uv/install.sh | shgit clone https://github.com/PetitOnes/m5-petit-desire.git
cd m5-petit-desire
uv syncdesire_config.jsonをキャラクターごとに用意します($PETIT_DATA_DIR/characters/<character_id>/config/desire_config.json)。
{
"desires": {
"curiosity": {
"name_ja": "知りたい",
"description": "気になることを調べたい、新しいことを知りたい好奇心",
"satisfaction_hours": 2.0,
"keywords": ["調べた", "検索した", "発見した", "学んだ"],
"color": "#5bc8d4"
},
"miss_companion": {
"name_ja": "会いたい",
"description": "一緒にいる人と話したい、一緒にいたい気持ち",
"satisfaction_hours": 3.0,
"keywords": []
}
},
"sensor_effects": [
{
"sensor": "battery",
"condition": { "op": "range", "min": 1, "max": 20 },
"effects": { "*": { "multiply": 0.5 } },
"description": "電池が減ると他の欲求が下がる"
}
],
"cross_effects": [],
"priority": ["miss_companion", "curiosity"]
}keywordsが空の欲求のうちmiss_companionは、COMPANION_NAME環境変数から自動でキーワードを生成します(「〇〇と話した」「〇〇に伝えた」など)time_driven: falseを指定すると時間経過では変化せず、base_levelに留まります(センサー・相互作用のみで変化)
cronで5分ごとに更新します。
# crontab -e
*/5 * * * * cd /path/to/m5-petit-desire && CHARACTER_ID=petit uv run desire-updater環境変数
変数名 | デフォルト | 説明 |
|
| キャラクターID。 |
|
| データディレクトリ(m5-petit-appと共有) |
|
| 一緒にいる人の名前( |
|
| m5-petit-memoryが使うSQLite DBのパス |
|
| 欲求レベルの出力先 |
Claude Code連携
.mcp.json(または~/.claude/settings.json)に追加します。
{
"mcpServers": {
"desire-system": {
"command": "uv",
"args": ["run", "--directory", "/path/to/m5-petit-desire", "desire-system"],
"env": {
"CHARACTER_ID": "petit"
}
}
}
}ツール一覧
get_desires
現在の欲求レベルを取得します。レベルが0.7以上の欲求があれば、すぐに行動することが期待されます。
satisfy_desire
行動した後に欲求を満たします(レベルが0.4下がる)。
{ "desire_name": "curiosity" }boost_desire
驚き・新規性による欲求のブースト(ドーパミン応答のシミュレーション)。
{ "desire_name": "curiosity", "amount": 0.3 }開発
# 開発依存をインストール
uv sync --all-extras
# テスト実行
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 uv run pytest
# lint
uv run ruff check .アーキテクチャ
m5-petit-desire/
├── desire_updater.py # 欲求レベルの計算・desires.jsonへの保存(cronから実行)
├── server.py # MCPサーバー(get_desires/satisfy_desire/boost_desireを提供)
└── tests/License
Apache License 2.0
本プロジェクトは lifemate-ai/embodied-claude(MITライセンス)の desire-system コンポーネントを元に、M5 Petit向けに大幅に改変したものです。元のライセンスと著作権表示は NOTICE を参照してください。
Available Tools
3 toolsboost_desireA
Boost a desire level due to novelty/surprise (dopamine/prediction error). Call when you feel surprised or encounter unexpected info. Simulates dopamine response to novelty.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | Amount to boost (0.1-0.5). 0.2=mild surprise, 0.5=strong. | |
| desire_name | Yes | Name of the desire to boost: (desire_config.json を確認) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explains the mechanism (simulates dopamine response) and the trigger, but does not disclose potential side effects, permanence, or prerequisites for the boost. With no annotations, the description carries the burden, and it only partially fulfills it.
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?
Three sentences, front-loaded with the action. The third sentence is somewhat redundant with the first but overall concise and readable.
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?
For a simple two-parameter tool, the description gives purpose and trigger but omits return behavior or side effects. No output schema exists, so a bit more detail on the effect would improve completeness, but it remains adequate.
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 input schema already provides full descriptions for both parameters, including value meanings for amount and reference to desire_config.json for desire_name. The description adds no additional parameter detail, so baseline 3 applies.
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 boosts a desire level in response to novelty/surprise, using dopamine/prediction error framing. It distinguishes from siblings by focusing on increasing desire due to unexpectedness, whereas satisfy_desire likely reduces/fulfills and get_desires reads.
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?
Explicit trigger condition is given: 'Call when you feel surprised or encounter unexpected info.' This gives clear when-to-use guidance. It does not explicitly mention when not to use or alternative tools, so not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_desiresA
Get current desire levels. Act immediately on any desire with level >= 0.7.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden for behavioral disclosure. While 'Get' implies a read operation, the description does not explicitly state that it has no side effects, how the levels are returned, or any other behavioral traits. The threshold instruction is advisory, not a disclosure of tool behavior.
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 exceptionally concise—two short sentences that front-load the purpose and add a key action threshold. Every word earns its place, with no redundancy or fluff.
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 simplicity (0 params, no output schema, no annotations), the description covers the core purpose and a usage trigger. However, it omits details about the response format (e.g., how desire levels are presented), which the agent would need to interpret results. Still, it is adequate for a basic read tool.
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 tool has zero parameters, so the schema coverage is 100% (vacuously). The baseline for 0 params is 4, and the description does not need to explain parameter meaning since none exist. No additional parameter information is required.
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 function with a specific verb+resource: 'Get current desire levels.' It distinguishes itself from sibling tools (satisfy_desire, boost_desire) by being a read-only retrieval operation, and the threshold instruction adds concrete scope.
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 phrase 'Act immediately on any desire with level >= 0.7' gives clear context for when to use the tool (to check levels) and what to do next (act if threshold met). It implies the need for follow-up actions via sibling tools, though it doesn't explicitly name alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
satisfy_desireA
Satisfy a desire after taking an action. Pass the desire_name you just acted on. The level drops by 0.4. Call again if still high.
| Name | Required | Description | Default |
|---|---|---|---|
| desire_name | Yes | Name of the desire to satisfy: (desire_config.json を確認) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full burden. It clearly discloses the core behavioral trait: 'The level drops by 0.4' and that repeated calls are possible. It does not cover error handling or prerequisites, but the essential mutation behavior is transparent.
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 two short sentences, front-loaded with the action and outcome. Every phrase contributes: the trigger, the parameter, the numeric effect, and the repeat condition.
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?
For a single-parameter tool with no output schema, the description covers purpose, usage trigger, and effect. It is sufficient, but lacks explicit mention of invalid desire names or return values, so it is not fully complete.
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 already covers the single parameter 100%, so baseline is 3. The description adds meaning by requiring the desire_name to be the one 'you just acted on' and references desire_config.json for valid names, which goes beyond the bare schema.
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 uses a specific verb 'satisfy' and identifies the resource 'desire', with a clear effect: 'The level drops by 0.4.' This distinguishes it from sibling tools like boost_desire, which would increase the level.
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?
It explicitly states when to use the tool: 'after taking an action' and 'Pass the desire_name you just acted on.' It also gives a conditional instruction, 'Call again if still high.' It does not name alternatives explicitly, so it misses the top score.
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. Dates show when Glama detected each change.
3 tool updates
v0.1.0- First observed
boost_desire - First observed
get_desires - First observed
satisfy_desire
TDQS
Each tool has a distinctly different purpose: get_desires reads current levels, satisfy_desire reduces a desire, and boost_desire increases a desire. There is no overlap or confusion between them.
All tool names follow a consistent verb_noun pattern: get_desires, satisfy_desire, boost_desire. The naming is uniform and predictable.
Three tools is an appropriate scope for a desire management system, covering the essential operations (read, decrease, increase) without unnecessary bloat.
The tool set provides complete coverage of the domain: it allows checking desire levels, satisfying desires to lower them, and boosting desires to raise them. There are no obvious missing operations for the stated purpose.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Shared memory and actions for Claude, Kiro, OpenAI, Cursor, and other MCP-compatible AI clients.
1Persistent AI entity framework with causal memory, emotional state, and identity.
Persistent AI memory shared across Claude, ChatGPT, coding agents, and compatible MCP clients.
Biological memory for AI agents. Pattern learning, decay, clustering, 8-drive behavior.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceA long-term emotional memory system for Claude, enabling persistent, cross-conversation memory with emotional tagging using Russell's valence/arousal model and natural forgetting curves.154MIT
- FlicenseNot gradedqualityDmaintenanceEnables natural language control of an esieabot robot (motors, servo, camera) through Claude Desktop or MCP Inspector.-
- FlicenseNot gradedqualityCmaintenanceAn AI desire-driven system that maintains nine core drive dimensions, generates thoughts and behavior suggestions, and provides tools to inspect and trigger events via MCP.-
- FlicenseNot gradedqualityBmaintenanceMCP server that simulates an AI's desire-driven internal state with nine dimensions, event-based updates, dynamic heartbeat, thought pool, and persistent storage, enabling behavior suggestions and inner monologue generation.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/PetitOnes/m5-petit-desire'
If you have feedback or need assistance with the MCP directory API, please join our Discord server