narikiri-mcp 0.2.0 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +149 -10
  2. package/dist/index.js +72 -1
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -17,17 +17,46 @@ MCPプロンプトとしてペルソナ(口調)を配信し、AIアシスタ
17
17
  | 関西のオカン | お節介な世話焼きオカン |
18
18
  | 会津の民 | 会津弁で喋る温かい田舎のおっちゃん |
19
19
 
20
- ## インストール
20
+ ## 必要なもの
21
+
22
+ - **Node.js** v18 以上([公式サイト](https://nodejs.org/)からインストール)
23
+ - **npm**(Node.js に同梱)
24
+ - **MCP Prompts 対応クライアント**([対応クライアント一覧](#対応クライアント)を参照)
25
+
26
+ 確認方法:
21
27
 
22
28
  ```bash
23
- npm install narikiri-mcp
29
+ node -v # v18.0.0 以上であること
30
+ npm -v # 表示されればOK
24
31
  ```
25
32
 
26
- ## 使い方
33
+ ## セットアップ
34
+
35
+ `npm install` は不要。設定ファイルに数行追加するだけで使える。
27
36
 
28
37
  ### Claude Code
29
38
 
30
- プロジェクトルートに `.mcp.json` を作成:
39
+ 2つの方法がある。用途に合わせて選んでください。
40
+
41
+ #### 方法A: 全プロジェクト共通で使う(おすすめ)
42
+
43
+ どのプロジェクトでもペルソナが使える。普段使いにおすすめ。
44
+
45
+ **1. 設定ファイルを開く**
46
+
47
+ ```bash
48
+ cat ~/.claude.json
49
+ ```
50
+
51
+ ファイルが存在しない場合は、新しく作成する:
52
+
53
+ ```bash
54
+ echo '{}' > ~/.claude.json
55
+ ```
56
+
57
+ **2. MCP サーバーを追加する**
58
+
59
+ `~/.claude.json` を開き、`mcpServers` に `persona` を追加する:
31
60
 
32
61
  ```json
33
62
  {
@@ -40,19 +69,68 @@ npm install narikiri-mcp
40
69
  }
41
70
  ```
42
71
 
43
- Claude Code を起動(または再起動)し、`/` を入力するとペルソナ一覧が表示される。
72
+ 既に他の MCP サーバーが設定されている場合は、`mcpServers` の中に追記する:
44
73
 
45
- ### オリジナルキャラクターを作る
74
+ ```json
75
+ {
76
+ "mcpServers": {
77
+ "既存のサーバー": { "..." : "..." },
78
+ "persona": {
79
+ "command": "npx",
80
+ "args": ["narikiri-mcp"]
81
+ }
82
+ }
83
+ }
84
+ ```
46
85
 
47
- `/` から「キャラクター作成」を選ぶと、会話しながらオリジナルのキャラクターを作れる。作ったキャラクターは `~/.narikiri/personas/` に保存され、すぐに使える。
86
+ **3. Claude Code を起動する**
48
87
 
49
- ### 注意事項
88
+ ```bash
89
+ claude
90
+ ```
50
91
 
51
- 会話が長くなるとコンテキスト圧縮(compaction)が発生し、選択中のペルソナの口調が薄れることがある。その場合は `/` から再度ペルソナを選び直すと復帰する。
92
+ 既に起動中の場合は `/mcp` と入力し、`persona` を選んで Reconnect する。
93
+
94
+ **4. 動作確認する**
95
+
96
+ `/` を入力してペルソナ一覧が表示されれば成功。好きなペルソナを選んで会話してみよう。
97
+
98
+ #### 方法B: 特定のプロジェクトだけで使う
99
+
100
+ そのプロジェクトでのみペルソナを有効にしたい場合。
101
+
102
+ **1. プロジェクトルートに `.mcp.json` を作成する**
103
+
104
+ ```json
105
+ {
106
+ "mcpServers": {
107
+ "persona": {
108
+ "command": "npx",
109
+ "args": ["narikiri-mcp"]
110
+ }
111
+ }
112
+ }
113
+ ```
114
+
115
+ **2. Claude Code をそのプロジェクトで起動する**
116
+
117
+ ```bash
118
+ cd /path/to/your/project
119
+ claude
120
+ ```
121
+
122
+ **3. 動作確認する**
123
+
124
+ `/` を入力してペルソナ一覧が表示されれば成功。
52
125
 
53
126
  ### Claude Desktop
54
127
 
55
- `claude_desktop_config.json` に以下を追加:
128
+ **1. 設定ファイルを開く**
129
+
130
+ - macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
131
+ - Windows: `%APPDATA%\Claude\claude_desktop_config.json`
132
+
133
+ **2. MCP サーバーを追加する**
56
134
 
57
135
  ```json
58
136
  {
@@ -65,6 +143,67 @@ Claude Code を起動(または再起動)し、`/` を入力するとペル
65
143
  }
66
144
  ```
67
145
 
146
+ **3. Claude Desktop を再起動する**
147
+
148
+ ### Cursor / Windsurf / その他の対応クライアント
149
+
150
+ 各クライアントの MCP 設定に以下のサーバーを追加:
151
+
152
+ - コマンド: `npx`
153
+ - 引数: `narikiri-mcp`
154
+
155
+ 設定方法は各クライアントのドキュメントを参照してください。
156
+
157
+ ## 使い方
158
+
159
+ ### ペルソナの切り替え
160
+
161
+ `/` からペルソナを選ぶだけで、AIの口調が切り替わる。
162
+
163
+ ### オリジナルキャラクターを作る
164
+
165
+ `/` から「キャラクター作成」を選ぶと、会話しながらオリジナルのキャラクターを作れる。作ったキャラクターは `~/.narikiri/personas/` に保存され、すぐに使える。
166
+
167
+ ### 注意事項
168
+
169
+ 会話が長くなるとコンテキスト圧縮(compaction)が発生し、選択中のペルソナの口調が薄れることがある。その場合は `/` から再度ペルソナを選び直すと復帰する。
170
+
171
+ ## トラブルシューティング
172
+
173
+ ### `/` を入力してもペルソナが表示されない
174
+
175
+ - `/mcp` を入力して `persona` サーバーの接続状態を確認する
176
+ - 表示されていない場合、設定ファイルのパスと JSON の書式を確認する
177
+ - `persona` が表示されているが `error` の場合は Reconnect を試す
178
+
179
+ ### `/mcp` に persona サーバーが表示されない
180
+
181
+ - 設定ファイルが正しい場所にあるか確認する
182
+ - 方法A: `~/.claude.json`
183
+ - 方法B: プロジェクトルートの `.mcp.json`
184
+ - JSON の書式が正しいか確認する(カンマの過不足に注意)
185
+
186
+ ### Reconnect しても接続できない
187
+
188
+ - Node.js がインストールされているか確認する: `node -v`
189
+ - npx が使えるか確認する: `npx --version`
190
+ - 手動で起動を試す: `npx narikiri-mcp`(入力待ちで止まれば正常。`Ctrl+C` で終了)
191
+
192
+ ## 対応クライアント
193
+
194
+ narikiri-mcp は MCP Prompts を使用するため、Prompts 対応のクライアントが必要です。
195
+
196
+ | クライアント | 対応状況 |
197
+ |---|---|
198
+ | Claude Code | 対応 |
199
+ | Claude Desktop | 対応 |
200
+ | Cursor | 対応 |
201
+ | Windsurf | 対応 |
202
+ | Continue | 対応 |
203
+ | VS Code (GitHub Copilot) | 対応 |
204
+ | Cline | 非対応(Tools のみ) |
205
+ | ChatGPT | 非対応(Tools のみ) |
206
+
68
207
  ## 技術スタック
69
208
 
70
209
  - Runtime: Node.js
package/dist/index.js CHANGED
@@ -10,7 +10,7 @@ import * as z from "zod/v4";
10
10
  const CUSTOM_DIR = path.join(os.homedir(), ".narikiri", "personas");
11
11
  const server = new McpServer({
12
12
  name: "narikiri-mcp",
13
- version: "0.2.0",
13
+ version: "0.2.2",
14
14
  });
15
15
  /** ペルソナをプロンプトとしてサーバーに登録する */
16
16
  function registerPersona(persona) {
@@ -173,7 +173,78 @@ tone パラメータには以下のフォーマットで渡してください:
173
173
  },
174
174
  ],
175
175
  }));
176
+ import * as readline from "node:readline";
177
+ const MCP_ENTRY = {
178
+ persona: {
179
+ command: "npx",
180
+ args: ["narikiri-mcp"],
181
+ },
182
+ };
183
+ /** JSON ファイルに mcpServers.persona を追加する */
184
+ function addMcpConfig(filepath) {
185
+ let config = {};
186
+ if (fs.existsSync(filepath)) {
187
+ try {
188
+ config = JSON.parse(fs.readFileSync(filepath, "utf-8"));
189
+ }
190
+ catch {
191
+ return `${filepath} の JSON が不正です。手動で確認してください。`;
192
+ }
193
+ // 既に設定済みか確認
194
+ const servers = config.mcpServers;
195
+ if (servers?.persona) {
196
+ return `${filepath} には既に persona が設定されています。そのまま使えます!`;
197
+ }
198
+ }
199
+ // mcpServers がなければ作る
200
+ if (!config.mcpServers) {
201
+ config.mcpServers = {};
202
+ }
203
+ config.mcpServers.persona = MCP_ENTRY.persona;
204
+ fs.writeFileSync(filepath, JSON.stringify(config, null, 2) + "\n", "utf-8");
205
+ return `${filepath} に設定を追加しました!`;
206
+ }
207
+ /** 対話式セットアップ */
208
+ function interactiveSetup() {
209
+ const version = "0.2.2";
210
+ console.log(`
211
+ narikiri-mcp v${version} — AIの口調を着せ替えるMCPペルソナサーバー
212
+ `);
213
+ const rl = readline.createInterface({
214
+ input: process.stdin,
215
+ output: process.stdout,
216
+ });
217
+ console.log("セットアップ方法を選んでください:");
218
+ console.log(" [1] 全プロジェクト共通で使う(おすすめ)");
219
+ console.log(" [2] このプロジェクトだけで使う");
220
+ console.log("");
221
+ rl.question("> ", (answer) => {
222
+ rl.close();
223
+ const choice = answer.trim();
224
+ if (choice === "1") {
225
+ const filepath = path.join(os.homedir(), ".claude.json");
226
+ const result = addMcpConfig(filepath);
227
+ console.log(`\n${result}`);
228
+ }
229
+ else if (choice === "2") {
230
+ const filepath = path.join(process.cwd(), ".mcp.json");
231
+ const result = addMcpConfig(filepath);
232
+ console.log(`\n${result}`);
233
+ }
234
+ else {
235
+ console.log("\n1 または 2 を入力してください。");
236
+ process.exit(1);
237
+ }
238
+ console.log("\nClaude Code を起動(または /mcp → Reconnect)して、/ を入力するとペルソナが選べます。");
239
+ });
240
+ }
176
241
  async function main() {
242
+ // ターミナルから直接実行された場合は対話式セットアップ
243
+ if (process.stdin.isTTY) {
244
+ interactiveSetup();
245
+ return;
246
+ }
247
+ // MCP クライアント経由の場合は通常起動
177
248
  const transport = new StdioServerTransport();
178
249
  await server.connect(transport);
179
250
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "narikiri-mcp",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "description": "AIの口調を着せ替えるMCPペルソナサーバー",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",