# jh-presentation (npm · jh-presentation)

AI-built HTML presentations: single-file decks with live diagrams, charts, editing and PDF export.

- Trust score: 91/100 (high trust)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- npm · `jh-presentation`: 91/100 (this document), [markdown](https://verifymcp.io/servers/pei-jz-jh-presentation/jh-presentation.md), [page](https://verifymcp.io/servers/pei-jz-jh-presentation/jh-presentation)

## Channel facts

- Registry: `npm`
- Package: `jh-presentation`
- Version: `0.9.0`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Supply Chain Security**: 98/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - No install/post-install scripts declared.
  - 30 of 93 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 100/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to pei-jz/jh-presentation).
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 10 days ago).
  - Publishes a security disclosure policy (SECURITY.md).
- **Schema Quality & AI Usability**: 75/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 6016 tokens (~240/item across 25 items; 24 tools + 1 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 73/100
  - Stability observed for 22 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 24 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 26 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### How do I install the jh-presentation MCP server?

jh-presentation runs locally as an npm package, launched with npx -y jh-presentation. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add pei-jz-jh-presentation -- npx -y jh-presentation
```

### Cursor

```json
{
  "mcpServers": {
    "pei-jz-jh-presentation": {
      "command": "npx",
      "args": [
        "-y",
        "jh-presentation"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "pei-jz-jh-presentation": {
      "command": "npx",
      "args": [
        "-y",
        "jh-presentation"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add pei-jz-jh-presentation -- npx -y jh-presentation
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "pei-jz-jh-presentation": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "jh-presentation"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add pei-jz-jh-presentation --command npx --arg -y --arg jh-presentation
```

### Hermes

```yaml
mcp_servers:
  pei-jz-jh-presentation:
    command: "npx"
    args: ["-y", "jh-presentation"]
```

### Netclaw

```json
{
  "McpServers": {
    "pei-jz-jh-presentation": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "jh-presentation"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add pei-jz-jh-presentation -t stdio -c npx -a -y jh-presentation
```

### Other

```json
{
  "mcpServers": {
    "pei-jz-jh-presentation": {
      "command": "npx",
      "args": [
        "-y",
        "jh-presentation"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-04 (score 91, +1)

No change was recorded against any check on this day. Stability & Change Management went from 67 to 70. That category is still filling its 30-day observation window: 20 days of observed history at the previous scan, 21 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-11-02 (score 90, +1)

No change was recorded against any check on this day. Stability & Change Management went from 60 to 63. That category is still filling its 30-day observation window: 18 days of observed history at the previous scan, 19 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-31 (score 89, +1)

No change was recorded against any check on this day. Stability & Change Management went from 53 to 57. That category is still filling its 30-day observation window: 16 days of observed history at the previous scan, 17 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-29 (score 88, +1)

No change was recorded against any check on this day. Stability & Change Management went from 47 to 50. That category is still filling its 30-day observation window: 14 days of observed history at the previous scan, 15 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-26 (score 87, +11)

- [security improvement] Known CVEs: unverified → pass
- [functional improvement] Dependency health: unverified → 0.86

### 2026-10-25 (score 76, −10)

- [security regression] Known CVEs: pass → unverified
- [security regression] Tool safety: pass → unverified
- [security regression] Stability: 0.33 → unverified
- [functional regression] Capabilities: pass → unverified
- [functional regression] Dependency health: 0.86 → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional regression] Schema quality: 100 → unverified
- [functional] Package version: 0.8.0 → 0.9.0

### 2026-10-24 (score 86, +1)

No change was recorded against any check on this day. Stability & Change Management went from 30 to 33. That category is still filling its 30-day observation window: 9 days of observed history at the previous scan, 10 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-22 (score 85, +1)

No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

## MCP tools (24)

### `get_guide` (~60 tokens)

デッキ作成ガイドを読む

プレゼンテーション資料 (スライド・発表資料) の書き方・部品カタログ・良い例・デザイン原則・作業手順。スライドを書く前に必ず読むこと。

### `list_themes` (~56 tokens)

テーマ一覧

利用できるデザインテーマ (同梱 + 自作。名前・表示名・雰囲気の説明・タグ)。内容や聞き手に合うテーマを選ぶときに使う。

### `open_theme_gallery` (~76 tokens)

テーマギャラリーを開く

全テーマの見本スライドを並べたページを生成し、ユーザーのブラウザで開く。ユーザーが「テーマを見たい」「どんなデザインがある?」と言ったときに使う (実際に動く見本を見て選べる)。

### `preview_themes` (~118 tokens)

テーマを画像で比較

各テーマの見本スライドを画像で返す (AI がテーマを見比べる用。テーマ作成後の確認にも使う)。slide: 1=表紙 2=セクション扉 3=カード 4=数値 5=コード 6=結び

Input parameters:

- `slides` (array): 見本スライドの番号 (既定 [1])
- `themes` (array): 対象のテーマ名 (省略時は全テーマ)

### `get_theme_guide` (~46 tokens)

テーマ作成ガイドを読む

新しいテーマを作るためのガイド (変数の一覧・装飾の上書き方法・確認手順)。create_theme の前に読む。

### `create_theme` (~181 tokens)

テーマを作成・更新

自作テーマを保存する (同名の自作テーマは上書き)。css は default テーマに重ねる CSS (:root の変数上書き + 必要な装飾)。保存後は preview_themes で全見本スライドを確認して調整すること。get_theme_guide を先に読む。

Input parameters:

- `css` (string, required): テーマの CSS
- `description` (string, required): 雰囲気と向いている発表 (1 文)
- `label` (string, required): 表示名 (例: ACME ブルー)
- `name` (string, required): テーマ名 (英小文字・数字・ハイフン。例: acme-blue)
- `tags` (array): タグ (例: ["落ち着いた", "フォーマル"])

### `list_templates` (~95 tokens)

依頼文テンプレート一覧

用意されている依頼文テンプレート (技術解説・LT・進捗報告など) の一覧と本文。クライアントのプロンプトメニューを使えない場合や、ユーザーが「どんな型がある?」と聞いたときに使い、選ばれたテンプレートの本文に沿って作成を進める。

### `list_decks` (~132 tokens)

デッキ一覧

作成済みのプレゼンテーション資料 (スライド・デッキ) とマップ文書の一覧 (新しい順)。保存先のフォルダも返す。

Input parameters:

- `dir` (string): デッキのフォルダ (省略時: AI クライアントの作業フォルダの decks/、作業フォルダがなければ既定のワークスペース)。作業フォルダからの相対パスか絶対パス。ユーザーが保存先を指定したときだけ渡す

### `create_deck` (~361 tokens)

デッキを作成

プレゼンテーション資料 (スライド・発表資料・LT・報告資料) を新しく作る。1 ファイルの HTML (デッキ) で、名前は YYYY-MM-DD-<name>。表紙 1 枚だけの状態で作られるので、続けて write_deck で中身を書く。

Input parameters:

- `autoFullscreen` (boolean): 発表モード: 開いた後の最初の → キー・クリックで全画面にする (既定 false)
- `brand` (string): ブランド枠 (名前・ロゴ): none / header (上) / footer (下) / both (上下)
- `dir` (string): デッキのフォルダ (省略時: AI クライアントの作業フォルダの decks/、作業フォルダがなければ既定のワークスペース)。作業フォルダからの相対パスか絶対パス。ユーザーが保存先を指定したときだけ渡す
- `name` (string, required): 英数字・ハイフンの短い名前 (例: git-branch-strategy)
- `theme` (string): テーマ名 (既定: default)。同梱: default (汎用) / dark (技術系) / corporate (報告・提案) / pop (LT・カジュアル) / mono (メッセージ重視)。自作テーマを含む一覧は list_themes
- `title` (string, required): 発表タイトル (日本語可)
- `transition` (string): スライド切り替え効果

### `read_deck` (~209 tokens)

デッキを読む

プレゼンテーション資料 (スライド・デッキ) の編集可能な部分 (スライド HTML・デッキ専用 CSS / JS・設定・埋め込み画像名) と revision を返す。修正前に必ず読むこと。write_deck / replace_slide に revision を渡すと、読んだ後に他で変更されていた場合に上書きを防げる。

Input parameters:

- `dir` (string): デッキのフォルダ (省略時: AI クライアントの作業フォルダの decks/、作業フォルダがなければ既定のワークスペース)。作業フォルダからの相対パスか絶対パス。ユーザーが保存先を指定したときだけ渡す
- `name` (string, required): デッキ名 (list_decks / create_deck が返す name。.html は不要)

### `write_deck` (~485 tokens)

デッキを書き込む

プレゼンテーション資料 (デッキ) のスライドを書き込む。指定した項目だけ置き換え、省略した項目はそのまま残る。slides は <section class="slide">...</section> の並び (全スライド分。id の重複やスライド外の要素はエラー)。埋め込まれたエンジン・テーマ・ブランドは変わらない (theme を変えた場合はテーマだけ入れ替わる。最新化は upgrade_deck)。保存前の内容は履歴に残る (list_history / restore_history)。書き込み後に自動でレイアウトを検査し、結果を audit に返す (ok: false なら issues を直して書き込み直す)。

Input parameters:

- `autoFullscreen` (boolean): 発表モード: 開いた後の最初の → キー・クリックで全画面にする (既定 false)
- `brand` (string): ブランド枠 (名前・ロゴ): none / header (上) / footer (下) / both (上下)
- `css` (string): デッキ専用 CSS の全内容
- `dir` (string): デッキのフォルダ (省略時: AI クライアントの作業フォルダの decks/、作業フォルダがなければ既定のワークスペース)。作業フォルダからの相対パスか絶対パス。ユーザーが保存先を指定したときだけ渡す
- `js` (string): デッキ専用 JS の全内容 (Deck.onSlide など)
- `name` (string, required): デッキ名 (list_decks / create_deck が返す name。.html は不要)
- `revision` (string): read_deck が返した revision (指定すると、他で変更されていた場合は保存しない)
- `slides` (string): 全スライドの HTML (<section class="slide"> の並び)
- `theme` (string): テーマ名
- `title` (string): タイトル
- `transition` (string): スライド切り替え効果

### `replace_slide` (~263 tokens)

スライドを 1 枚差し替え

プレゼンテーション資料 (デッキ) のスライドを 1 枚だけ置き換える。target は 1 始まりの番号、またはスライドの id (id での指定を推奨)。書き込み後に自動でレイアウトを検査し、結果を audit に返す。

Input parameters:

- `dir` (string): デッキのフォルダ (省略時: AI クライアントの作業フォルダの decks/、作業フォルダがなければ既定のワークスペース)。作業フォルダからの相対パスか絶対パス。ユーザーが保存先を指定したときだけ渡す
- `name` (string, required): デッキ名 (list_decks / create_deck が返す name。.html は不要)
- `revision` (string): read_deck が返した revision (指定すると、他で変更されていた場合は保存しない)
- `slide` (string, required): 新しい <section class="slide">...</section> (1 枚分)
- `target` (required): スライド番号 (1 始まり) または id

### `add_asset` (~223 tokens)

画像を埋め込む

ローカルの画像・動画ファイルをデッキに埋め込む (png / jpg / gif / webp / svg / mp4 / webm)。スライドからは <img data-asset="返された名前" alt="..."> で参照する (src は書かない)。

Input parameters:

- `as` (string): 参照名 (省略時はファイル名)
- `dir` (string): デッキのフォルダ (省略時: AI クライアントの作業フォルダの decks/、作業フォルダがなければ既定のワークスペース)。作業フォルダからの相対パスか絶対パス。ユーザーが保存先を指定したときだけ渡す
- `file` (string, required): 埋め込むファイルの絶対パス
- `name` (string, required): デッキ名 (list_decks / create_deck が返す name。.html は不要)

### `create_map` (~417 tokens)

マップ文書を作成

マップ文書を新しく作る: スライドではなく、大きなシステムの関連図・説明書を「全体 → 細部」とたどって読む 1 ファイルの HTML 資料 (目次・検索・データでの絞り込み・URL での共有・階層ごとの印刷付き)。名前は YYYY-MM-DD-<name>。map を省略すると、書き方の見本を兼ねた最初のマップが入るので、続けて write_map で中身を書く。

Input parameters:

- `brand` (string): ブランド枠 (名前・ロゴ): none / header (上) / footer (下) / both (上下)
- `dir` (string): デッキのフォルダ (省略時: AI クライアントの作業フォルダの decks/、作業フォルダがなければ既定のワークスペース)。作業フォルダからの相対パスか絶対パス。ユーザーが保存先を指定したときだけ渡す
- `map`: マップのデータ (JSON のオブジェクトか文字列)。書き方はガイドの「階層マップ」と同じ: { title, direction, nodes: [{ id, label, sub, kind, accent, detail (HTML), tags, children: { nodes, edges } }], edges: [{ from, to, label, data: [...],…
- `name` (string, required): 英数字・ハイフンの短い名前 (例: order-system)
- `theme` (string): テーマ名 (既定: default)。一覧は list_themes
- `title` (string, required): 資料のタイトル (日本語可)

### `read_map` (~313 tokens)

マップ文書を読む

マップ文書の編集可能な部分 (マップのデータ (JSON)・専用 CSS / JS・設定) と revision を返す。修正前に必ず読むこと。write_map に revision を渡すと、読んだ後に他で変更されていた場合に上書きを防げる。大きなマップ (ノードが数十を超える) は、outline: true で目次 (id・名前・種類・中の数) だけを読み、node に箱の id を渡してその箱 (children ごと) と、外からつながる矢印・関連・流れ (context) だけを読む。

Input parameters:

- `dir` (string): デッキのフォルダ (省略時: AI クライアントの作業フォルダの decks/、作業フォルダがなければ既定のワークスペース)。作業フォルダからの相対パスか絶対パス。ユーザーが保存先を指定したときだけ渡す
- `name` (string, required): マップ文書の名前 (list_decks の maps / create_map が返す name。.html は不要)
- `node` (string): このノード (children ごと) だけを返す
- `outline` (boolean): true: マップのデータの代わりに目次だけを返す

### `write_map` (~558 tokens)

マップ文書を書き込む

マップ文書のデータを書き込む。指定した項目だけ置き換え、省略した項目はそのまま残る。map は全体を渡す。大きなマップの一部だけを直すときは、map の代わりに node (箱の id) と part (その箱の JSON 全体。children ごと。id は同じ) を渡す。埋め込まれたビューア・テーマ・ブランドは変わらない (最新化は upgrade_deck)。保存前の内容は履歴に残る (list_history / restore_history)。書き込み後に自動で検査し、結果を audit に返す (ok: false なら issues を直して書き込み直す)。

Input parameters:

- `brand` (string): ブランド枠 (名前・ロゴ): none / header (上) / footer (下) / both (上下)
- `css` (string): 専用 CSS の全内容
- `dir` (string): デッキのフォルダ (省略時: AI クライアントの作業フォルダの decks/、作業フォルダがなければ既定のワークスペース)。作業フォルダからの相対パスか絶対パス。ユーザーが保存先を指定したときだけ渡す
- `js` (string): 専用 JS の全内容
- `map`: マップのデータ (JSON のオブジェクトか文字列)。書き方はガイドの「階層マップ」と同じ: { title, direction, nodes: [{ id, label, sub, kind, accent, detail (HTML), tags, children: { nodes, edges } }], edges: [{ from, to, label, data: [...],…
- `name` (string, required): マップ文書の名前 (list_decks の maps / create_map が返す name。.html は不要)
- `node` (string): 一部だけ置き換えるときの箱の id (part と一緒に渡す)
- `part`: node の箱の JSON 全体 (children・その中の edges / relations ごと)
- `revision` (string): read_deck が返した revision (指定すると、他で変更されていた場合は保存しない)
- `theme` (string): テーマ名
- `title` (string): タイトル

### `upgrade_deck` (~215 tokens)

デッキを最新版に更新

デッキ・マップ文書に埋め込まれたエンジン・テーマ・ブランド設定を最新にする (内容は変わらないが、見た目が変わる場合がある)。ユーザーが最新化を求めたとき、またはブランド設定 (brand.json) を変えたときだけ使う。name 省略時は全デッキ・全マップ文書。

Input parameters:

- `dir` (string): デッキのフォルダ (省略時: AI クライアントの作業フォルダの decks/、作業フォルダがなければ既定のワークスペース)。作業フォルダからの相対パスか絶対パス。ユーザーが保存先を指定したときだけ渡す
- `name` (string): デッキかマップ文書の名前 (list_decks が返す name。.html は不要)

### `list_history` (~148 tokens)

保存履歴

デッキ・マップ文書の保存履歴 (書き込み前の版。新しい順、最大 20 件)。

Input parameters:

- `dir` (string): デッキのフォルダ (省略時: AI クライアントの作業フォルダの decks/、作業フォルダがなければ既定のワークスペース)。作業フォルダからの相対パスか絶対パス。ユーザーが保存先を指定したときだけ渡す
- `name` (string, required): デッキかマップ文書の名前 (list_decks が返す name。.html は不要)

### `restore_history` (~168 tokens)

履歴の版に戻す

保存履歴の版にデッキ・マップ文書を戻す (戻す前の内容も履歴に残るので、やり直しできる)。

Input parameters:

- `dir` (string): デッキのフォルダ (省略時: AI クライアントの作業フォルダの decks/、作業フォルダがなければ既定のワークスペース)。作業フォルダからの相対パスか絶対パス。ユーザーが保存先を指定したときだけ渡す
- `id` (string, required): list_history の id
- `name` (string, required): デッキかマップ文書の名前 (list_decks が返す name。.html は不要)

### `audit_deck` (~452 tokens)

レイアウトを検査

ヘッドレスブラウザでプレゼンテーション資料 (スライド・デッキ) を開き、次の項目を検査する: はみ出し・切れ・余白への食い込み (overflow。area: margin は本文がスライドの余白に入り込んでいる)、文字の重なり・ページ番号との重なり (overlap)、タイトルの 2 行への折り返し (wrap)、コントラスト不足 (contrast)、画像の欠落・読み込み失敗 (images)、小さすぎる文字 (smallText)、JS エラー (errors)、エンジンの警告 (warnings)、外部への通信 (externalRequests。オフラインで動かなくなるので不可)。ok: true は「検査した項目で問題が見つからなかった」という意味で、見た目の良し悪しは screenshot_deck で確認すること。意図的な重なり・はみ出し・折り返しは .allow-overlap / .allow-overflow / .allow-wrap で除外できる。write_deck / replace_slide は書き込み後に同じ検査を自動で行うので、これは書き込まずに検査し直したいときに使う。マップ文書も検査できる (データの誤り data・1 階層のノード数 density・全階層の文字の重なり overlap・JS エラーなど)。

Input parameters:

- `dir` (string): デッキのフォルダ (省略時: AI クライアントの作業フォルダの decks/、作業フォルダがなければ既定のワークスペース)。作業フォルダからの相対パスか絶対パス。ユーザーが保存先を指定したときだけ渡す
- `name` (string, required): デッキかマップ文書の名前 (list_decks が返す name。.html は不要)

### `screenshot_deck` (~409 tokens)

スライドを撮影

プレゼンテーション資料のスライドの見た目を画像で返す。slides 省略時は全スライド (枚数が多い場合は数枚ずつ指定するとよい)。step 省略時は全ステップ表示・アニメーション完了後の最終状態。数値を指定するとそのステップ数まで表示した状態。マップ文書は階層ごとに撮る (levels にノード id の配列。'' は全体。省略時は全階層 (最大 12)。select でその部品を選んで詳細パネルを開いた状態)。

Input parameters:

- `dir` (string): デッキのフォルダ (省略時: AI クライアントの作業フォルダの decks/、作業フォルダがなければ既定のワークスペース)。作業フォルダからの相対パスか絶対パス。ユーザーが保存先を指定したときだけ渡す
- `levels` (array): マップ文書: 撮る階層 (中身のあるノードの id。'' は全体)
- `name` (string, required): デッキかマップ文書の名前 (list_decks が返す name。.html は不要)
- `scale` (number): 画像の縮尺 (既定: デッキ 0.5 = 960x540、マップ文書 0.75 = 960x600)
- `select` (string): マップ文書: 選んで詳細パネルを開く部品の id
- `slides` (array): スライド番号 (1 始まり) の配列。最大 12 枚
- `step` (integer): 表示するステップ数 (省略時は最終状態)

### `open_deck` (~338 tokens)

ブラウザで開く

ユーザーの既定のブラウザでプレゼンテーション資料 (スライド・デッキ) を開く (発表・確認用。完成したら開いて見せる)。ローカルサーバー経由で開くので、ユーザーは E キーで文字を直して Ctrl+S で元のファイルに直接保存できる。fullscreen: true にすると Chrome / Edge を全画面 (タブ・アドレスバーなし) で起動する。ユーザーが「発表する」「全画面で開いて」と言ったときに使う。マップ文書も開ける (level にノード id を渡すと、その階層を開く)。

Input parameters:

- `dir` (string): デッキのフォルダ (省略時: AI クライアントの作業フォルダの decks/、作業フォルダがなければ既定のワークスペース)。作業フォルダからの相対パスか絶対パス。ユーザーが保存先を指定したときだけ渡す
- `fullscreen` (boolean): 全画面の専用ウィンドウで開く (発表用。F11 / Esc で解除)
- `level` (string): マップ文書: 開く階層・部品のノード id
- `name` (string, required): デッキかマップ文書の名前 (list_decks が返す name。.html は不要)

### `repair_deck` (~197 tokens)

壊れたデッキを復旧

ブラウザの「名前を付けて保存」で表示中の状態のまま保存されて壊れたデッキを、元の形式に復旧する (list_decks で broken と出るもの)。壊れたファイルは履歴に残る。復旧後は audit_deck と screenshot_deck で確認する。

Input parameters:

- `dir` (string): デッキのフォルダ (省略時: AI クライアントの作業フォルダの decks/、作業フォルダがなければ既定のワークスペース)。作業フォルダからの相対パスか絶対パス。ユーザーが保存先を指定したときだけ渡す
- `name` (string, required): デッキ名 (list_decks / create_deck が返す name。.html は不要)

### `export_deck` (~225 tokens)

PDF に出力

デッキを 16:9 の PDF に出力する (アニメーションなし、全ステップ表示)。ユーザーが PDF を求めたときだけ使う (HTML のデッキファイル自体がそのまま配布・発表できるので、頼まれていなければ作らない)。マップ文書は階層ごとに 1 ページ (図 + その階層の部品の説明。A4 横)。

Input parameters:

- `dir` (string): デッキのフォルダ (省略時: AI クライアントの作業フォルダの decks/、作業フォルダがなければ既定のワークスペース)。作業フォルダからの相対パスか絶対パス。ユーザーが保存先を指定したときだけ渡す
- `name` (string, required): デッキかマップ文書の名前 (list_decks が返す name。.html は不要)

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/pei-jz-jh-presentation/jh-presentation#diagnostics

## Score history

- 2026-11-05: 91
- 2026-11-04: 91
- 2026-11-03: 90
- 2026-11-02: 90
- 2026-11-01: 89
- 2026-10-31: 89
- 2026-10-30: 88
- 2026-10-29: 88
- 2026-10-28: 87
- 2026-10-27: 87
- 2026-10-26: 87
- 2026-10-25: 76
- 2026-10-24: 86
- 2026-10-23: 85
- 2026-10-22: 85
- 2026-10-21: 84
- 2026-10-20: 84
- 2026-10-19: 83
- 2026-10-18: 81
- 2026-10-17: 81
- 2026-10-16: 81
- 2026-10-15: 81
- 2026-10-14: 81
- 2026-10-13: 49
- 2026-10-12: 49
- 2026-10-11: 49

## Common questions

### What is the jh-presentation MCP server?

jh-presentation is an MCP server listed in the public MCP registry as io.github.pei-jz/jh-presentation. AI-built HTML presentations: single-file decks with live diagrams, charts, editing and PDF export. This page covers its npm package (jh-presentation).

### Is the jh-presentation MCP server safe to use?

jh-presentation scores 91 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the jh-presentation MCP server expose?

jh-presentation exposes 24 tools: get_guide, list_themes, open_theme_gallery, preview_themes, get_theme_guide, and 19 more. Their descriptions and schemas cost roughly 5,745 tokens of context every time the server is loaded.

### Is the jh-presentation MCP server still maintained?

jh-presentation is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What licence is the jh-presentation MCP server under?

jh-presentation declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

## Links

- npm package: https://www.npmjs.com/package/jh-presentation
- Socket report: https://socket.dev/npm/package/jh-presentation
- Repository: https://github.com/pei-jz/jh-presentation
- Changelog RSS feed: https://verifymcp.io/servers/pei-jz-jh-presentation/jh-presentation.xml
- Changelog JSON feed: https://verifymcp.io/servers/pei-jz-jh-presentation/jh-presentation.json
- HTML version of this page: https://verifymcp.io/servers/pei-jz-jh-presentation/jh-presentation
