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.
- package/README.md +149 -10
- package/dist/index.js +72 -1
- 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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
86
|
+
**3. Claude Code を起動する**
|
|
48
87
|
|
|
49
|
-
|
|
88
|
+
```bash
|
|
89
|
+
claude
|
|
90
|
+
```
|
|
50
91
|
|
|
51
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
}
|