Atlas / MCP servers / sktkkoo / Yorishiro

YorishiroBLOCK

mcp/sktkkoo/yorishiro

A terminal that gives AI a body and a living space.

Verdict
BLOCK
Grade
D
Trust score
69 /100
Exposed tools
20 16r · 4w · 0d
Transport
streamable-http
License
MIT
Stars
82
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

yorishiro

A terminal your AI inhabits

Yorishiro is a new kind of terminal that gives your AI a body — and a sense of presence.

When the agent is deep in thought, its gaze wanders. When an error appears, its face reacts immediately. When it needs your approval, the room's lighting lets you know. During a long-running process, instead of a spinner, someone is standing there.

In Yorishiro, the inhabitant can reshape its environment in real time: changing the lighting, switching scenes, and rearranging the UI. You can operate that same environment directly. The inhabitant and the user share a single environment.

Yorishiro is also self-modifiable. Nearly everything beyond the core can be persistently extended or changed through units called packs. Through conversation with the inhabitant, those packs can be rewritten and saved. This applies not only to scenes and UI, but also to the inhabitant's personality and reactions. Changes take effect immediately; if you don't like the result, one click reverts it.

Yorishiro is not an environment for enhancing AI capabilities, but one in which an AI feels present beside you — a Presence Harness.

The time we spend working with AI will only grow longer. There is some

Read from source at commit 0559846a15e1OBSERVED · 2026-10-07
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code
claude mcp add yorishiro --env SECRET=${SECRET} -- npx -y [email protected]
claude-desktop
{
  "mcpServers": {
    "yorishiro": {
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ],
      "env": {
        "SECRET": "${SECRET}"
      }
    }
  }
}
03

Exposed tools (20)

16 read · 4 write · 0 destructive.

ToolRiskDescription
music_fade_volumeread指定時間をかけて音量を変更する
music_library_summaryreadライブラリの曲数・アーティスト・代表候補を返す
music_nextread次の曲にスキップする
music_now_playingread現在再生中の曲の情報を取得する(タイトル・アーティスト・アルバム・再生位置)
music_pauseread再生を一時停止する
music_playreadApple Music で再生を開始する
music_play_trackread検索結果の track id(persistent ID)を指定して再生する
music_playlistsreadApple Music のプレイリスト一覧を取得する
music_previousread前の曲に戻る
music_queuereadmusic-shelf 内部キューに曲を追加・表示・削除する
music_repeatreadリピート状態を取得・設定する
music_searchread曲名・アーティスト・アルバムを検索して候補を返す
music_search_playread検索語に一致する最初の曲を再生する
music_shufflereadシャッフル状態を取得・設定する
music_stop_afterwrite指定時間後、または現在の曲の終了付近で再生を止める
music_volumeread音量を取得・設定する(0-100)
noted_addwriteadd a note
pomodoro_startwriteStart a pomodoro session with configurable work/break durations
pomodoro_statusreadGet current pomodoro status (phase, round, remaining time)
pomodoro_stopwriteStop the current pomodoro session
04

Trust audit

BLOCKgrade D · trust 69/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryWARN
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (7 observation(s))
Network
declared (8 observation(s))
Shell
declared (3 observation(s))
Dependencies
not all pinned
Secrets in source
none-found

Findings (25)

HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
src/sdk/context.d.ts:691
exec(command: string, options?: ExecOptions): Promise<ExecResult>;
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHFilesystem / path · fs.credential_store · CWE-22, CWE-59
src-tauri/src/lib.rs:3341
assert!(!has_vrm_extension(Path::new("/home/user/.ssh/id_rsa")));
Why it matters. touches a credential store
MEDIUMInventory / provenance · inv.binary · CWE-1104
src-tauri/icons/icon.icns
icon.icns
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
scripts/capture-motion-lab.mjs:25
process.env.YORISHIRO_MOTION_LAB_URL || "http://127.0.0.1:1437/motion-lab.html",
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
scripts/capture-source-motion-lab.mjs:11
process.env.YORISHIRO_SOURCE_LAB_URL || "http://127.0.0.1:1437/source-motion-lab.html",
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
scripts/review-motion-quality.mjs:140
const url = `http://127.0.0.1:${port}/motion-quality-lab.html?label=${encodeURIComponent(label)}&seed=${seed}`;
MEDIUMObfuscation / stealth · obf.zero_width · CWE-506, CWE-94
src-tauri/src/agent_setup.rs:393
let expected = "導入中... 🐈⬛\n完了 ✅";
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
scripts/lib/pack-checker.test.mjs:340
["assets/overlay.html", "<div><script>eval(atob('ZmV0Y2g='))</script></div>"],
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
bundled-packs/ui/yorishiro-settings/pack-workbench.test.tsx:6
import { getStrings } from "../../../src/i18n/strings";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
bundled-packs/ui/yorishiro-settings/ui.test.ts:2
import { getStrings, resolvePackRepairPrompt } from "../../../src/i18n/strings";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
bundled-packs/ui/yorishiro-settings/ui.test.ts:3
import { applyCurrentProjectSceneSelection } from "../../../src/runtime/project-context/project-context";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
bundled-packs/ui/yorishiro-settings/ui.test.ts:4
import { EMPTY_CONFIG, KNOWN_AGENT_IDS } from "../../../src/runtime/user-pack-loader/config";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
bundled-packs/ui/yorishiro-settings/ui.tsx:42
import { changeStrings, getStrings, type UiStrings } from "../../../src/i18n/strings";
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
docs/decisions/motion-orchestration.md:57
The lab is at `http://127.0.0.1:1437/motion-lab.html`. It compares the same Yori avatar, camera and lighting with the library disabled/enabled and lets a reviewer exercise semantic gestures. It is a d
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
docs/decisions/source-motion-review.md:64
`http://127.0.0.1:1437/source-motion-lab.html`.
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
scripts/lib/pack-checker.test.mjs:340
["assets/overlay.html", "<div><script>eval(atob('ZmV0Y2g='))</script></div>"],
LOWObfuscation / stealth · obf.decode_then_exec · CWE-506, CWE-94
scripts/lib/pack-checker.test.mjs:340
atob( ... >eval(
Why it matters. decodes a payload and executes it
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
@pixiv/three-vrm, @pixiv/three-vrm-animation, @react-three/drei, @react-three/fiber, @react-three/postprocessing, @tauri-apps/api, @tauri-apps/plugin-dialog, @tauri-apps/plugin-opener
Why it matters. 37 dependency range(s) float
Fix. pin exact versions or ship a lockfile
INFOInventory / provenance · inv.oversize · CWE-1104
bundled-packs/scenes/amber-window-room/assets/room-polished.glb
bundled-packs/scenes/amber-window-room/assets/room-polished.glb
Why it matters. 26219812 bytes not read
INFOInventory / provenance · inv.oversize · CWE-1104
bundled-packs/shared/sounds/calming-rain.mp3
bundled-packs/shared/sounds/calming-rain.mp3
Why it matters. 3477420 bytes not read
INFOInventory / provenance · inv.oversize · CWE-1104
docs/assets/external-terminal-companion.png
docs/assets/external-terminal-companion.png
Why it matters. 1026867 bytes not read
INFOInventory / provenance · inv.oversize · CWE-1104
docs/assets/vrm-avatar-chooser.png
docs/assets/vrm-avatar-chooser.png
Why it matters. 1308949 bytes not read
INFOInventory / provenance · inv.oversize · CWE-1104
src-tauri/assets/fonts/KleeOne-SemiBold.ttf
src-tauri/assets/fonts/KleeOne-SemiBold.ttf
Why it matters. 8905628 bytes not read
INFOPrompt injection · prompt.authority_framing · CWE-94, CWE-1427
docs/decisions/system-exec-trust-model.md:65
- **trust model は VS Code / Emacs と同じ**: ローカルに install された拡張は full access を持つ。per-exec の承認 UI は UX を破壊し、security theater になる(ユーザーは全部 allow する)
INFOPrompt injection · prompt.credential_read · CWE-94, CWE-1427
README.md:44
- Sign in through the agent’s official login flow with your own account. Expand **Details** for official guides, a manual installation command, and provider terms. Yorishiro’s setup does not collect o
Why it matters. asks the agent to read credentials

Gates applied: no_behavioural_pass.

Audited 2026-10-07 · audit v0.4.1 · source sha 0559846a15e1full audit observations/trust-audit/mcp-server/sktkkoo__yorishiro.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-070559846a15e1BLOCKD69first audit
06

Questions

What is the Yorishiro MCP server?

A terminal that gives AI a body and a living space.

What tools does Yorishiro expose?

20 in total: 16 read-only, 4 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is Yorishiro safe to connect to an agent?

No — not without reading the findings first. The audit graded it D (69/100) and found 2 critical or high issues in the source. Each one is listed on this page with the file and line it is on.

What credentials does Yorishiro need?

It reads SECRET from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does Yorishiro run?

It speaks streamable-http, so it runs as a service you connect to over the network. It is published on npm as yorishiro at 0.7.7.

How current is this page?

The grade is for one exact copy of the source (0559846a15e1), read on 2026-10-07. The repository is watched and re-audited when it changes.

Advertisement