<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>MCP on Claude Code 始めました</title><link>https://kitepon-rgb.github.io/WebAICoding/tags/mcp/</link><description>Recent content in MCP on Claude Code 始めました</description><generator>Hugo</generator><language>ja</language><lastBuildDate>Mon, 06 Apr 2026 12:00:00 +0900</lastBuildDate><atom:link href="https://kitepon-rgb.github.io/WebAICoding/tags/mcp/index.xml" rel="self" type="application/rss+xml"/><item><title>AIアシスタントに手足を増やそうと思ったら人格も増やしていた件</title><link>https://kitepon-rgb.github.io/WebAICoding/post/ai-assistant-personality/</link><pubDate>Mon, 06 Apr 2026 12:00:00 +0900</pubDate><guid>https://kitepon-rgb.github.io/WebAICoding/post/ai-assistant-personality/</guid><description>&lt;h2 id="前回のあらすじ"&gt;前回のあらすじ&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://kitepon-rgb.github.io/WebAICoding/post/discord-ai-assistant/"&gt;前回の記事&lt;/a&gt;で、Discord経由でClaude Code CLIを操作するBot「OpenCClaw」を作った話を書いた。&lt;/p&gt;
&lt;p&gt;骨組みだけ作って、&lt;code&gt;tools/&lt;/code&gt; にファイルを置けばClaude自身が使えるMCPツールになる仕組み。Claudeが自分で手足を増やしていく環境。天気、カレンダー、Gmail、出発通知——Discordから「これ欲しい」と言うだけでツールが生えていった。&lt;/p&gt;
&lt;p&gt;便利だった。便利だったんだけど、2つの出来事が重なって、気づいたらAIに人格を実装していた。自分でもよく分からない。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="きっかけは2つ"&gt;きっかけは2つ&lt;/h2&gt;
&lt;h3 id="x-apiの大型アップデート"&gt;X APIの大型アップデート&lt;/h3&gt;
&lt;p&gt;4月5日、Xが大きなAPIアップデートを発表した。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Pay-Per-Use&lt;/strong&gt;が全世界でGA（従量課金、月額固定プランから移行）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;XMCP Server&lt;/strong&gt; — 公式のMCPサーバー。AIエージェントがXを直接操作できる&lt;/li&gt;
&lt;li&gt;公式のPython・TypeScript SDK&lt;/li&gt;
&lt;li&gt;無料のAPI Playground&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Elon自身が「Try using the X API」と推していた。要するに「AIエージェントにXを使わせる」ことを公式が後押しし始めた。&lt;/p&gt;
&lt;p&gt;じゃあアシスタントにXアカウント持たせて発信させるか、くらいの軽いノリだった。X投稿機能を付けるだけのつもりだった。&lt;/p&gt;
&lt;h3 id="便利だけど無機質"&gt;便利だけど、無機質&lt;/h3&gt;
&lt;p&gt;もう一つは、日々の使い心地の話。&lt;/p&gt;
&lt;p&gt;朝7時に天気と予定を教えてくれる。出発前に運行情報付きで通知してくれる。メールも管理してくれる。全部ちゃんと動く。&lt;/p&gt;
&lt;p&gt;でも、なんだろう。&lt;strong&gt;道具感がすごい&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;CRONが起きて、ツールを叩いて、結果を整形して、Discordに投げる。正確で効率的。だけどそこに温度がない。毎朝同じトーンの報告が流れてきて、自分はそれを読んで「ふーん」で終わる。&lt;/p&gt;
&lt;p&gt;便利な通知botと、自分の秘書は、やっぱり違う。&lt;/p&gt;
&lt;p&gt;秘書だったら、天気を伝えるときに「今日寒いから上着持ってった方がいいよ」くらい言うだろう。朝のテンションだって日によって違うはずだ。こっちが忙しそうなときは空気を読んで短く済ませるかもしれない。&lt;/p&gt;
&lt;p&gt;そういう「人間っぽさ」が欲しかった。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="ベルが生まれるまで"&gt;ベルが生まれるまで&lt;/h2&gt;
&lt;p&gt;じゃあどうするか。考えたのは3つだった。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;人格を定義する&lt;/strong&gt; — 口調、性格、呼び方、テンション。システムプロンプトで渡す&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;記憶を持たせる&lt;/strong&gt; — 過去の会話や行動を覚えていて、文脈を踏まえた応答ができる&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;自発的に動く&lt;/strong&gt; — 指示されなくても、状況を見て自分から行動する&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;この3つが揃えば、「道具」から「秘書」になれる気がした。&lt;/p&gt;
&lt;p&gt;名前はベル。Quoさんの専属秘書。明るくて元気で、女子高生風のカジュアルな口調。&lt;/p&gt;
&lt;p&gt;……と、こう書くと「キャラ設定を考えるのが楽しかっただけでは？」と思われそうだが、半分は正解だ。でも残りの半分は技術的な理由がある。&lt;strong&gt;人格がはっきりしていないと、LLMの応答がブレる&lt;/strong&gt;。テンションも口調も毎回違うものが返ってくる。それを安定させるには、具体的なペルソナ定義が必要だった。&lt;/p&gt;
&lt;p&gt;ちなみに一つハマったポイントがある。口調を「女子高生風」にしたかったんだが、そのまま指示するとLLMが未成年キャラの再現を拒否する。セーフティフィルターに引っかかるのだ。だからペルソナ定義には「実年齢の設定ではなく口調・テンションの話」とわざわざ但し書きを入れている。つまり女子高生ではない。完璧だ。LLMにキャラを演じさせるなら、こういう地味な調整が要る。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="bellbotベルの脳"&gt;BellBot——ベルの脳&lt;/h2&gt;
&lt;p&gt;LogBotは既にある。Discord ↔ Claude CLIの橋渡しをするやつだ。&lt;/p&gt;
&lt;p&gt;ベルの脳は、これとは別プロセスで動く&lt;strong&gt;BellBot&lt;/strong&gt;として作った。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Discord ──→ LogBot (:18800) ──→ Claude Code CLI ──→ MCP Server
 │
BellBot (:18801) ← event通知 ← LogBot ├── tools/（既存ツール群）
 │ └── bell用MCPツール
 ├── 記憶DB（SQLite）
 ├── ベクトル検索（Ruri）
 ├── X投稿クライアント
 └── Claude CLI（ベル専用セッション）
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;BellBotは自前のHTTPサーバー（ポート18801）を持っていて、LogBotからイベント通知を受け取る。Quoさんの発言、ツールの実行結果、全部がBellBotに流れてきて、記憶として蓄積される。&lt;/p&gt;</description></item><item><title>手足を勝手に増やすAIアシスタントを作った話</title><link>https://kitepon-rgb.github.io/WebAICoding/post/discord-ai-assistant/</link><pubDate>Mon, 06 Apr 2026 00:00:00 +0900</pubDate><guid>https://kitepon-rgb.github.io/WebAICoding/post/discord-ai-assistant/</guid><description>&lt;h2 id="はじめに"&gt;はじめに&lt;/h2&gt;
&lt;p&gt;Anthropicの規約変更で、サードパーティのハーネスからClaude系のサブスクOAuth利用がブロックされた。世の中はそこそこ騒いでいたが、正直なところ、俺にはあんまり関係のない話だった。&lt;/p&gt;
&lt;p&gt;Claude Code CLIは手元にある。Discordに投げたメッセージをCLIに渡して、返事をDiscordに返す。それだけの橋を架ければいい。&lt;/p&gt;
&lt;p&gt;だから作った。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="骨組みだけ作った"&gt;骨組みだけ作った&lt;/h2&gt;
&lt;p&gt;作ったのは&lt;strong&gt;LogBot&lt;/strong&gt;。Discord上のメッセージをClaude Code CLIに転送して、応答をDiscordに返す。それだけのBot。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Discord ──→ LogBot ──→ Claude Code CLI
 ↑ │
 └── 応答を投稿 ──┘
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;最低限の骨組みとして、こんな機能を持たせた。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;セッション管理&lt;/strong&gt; — UUIDベースでClaude Codeのセッションを維持。VSCodeのセッションとは完全に分離される&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;メッセージキュー&lt;/strong&gt; — Claudeが処理中にメッセージが来てもキューに溜めて順番に処理。取りこぼさない&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;承認フロー&lt;/strong&gt; — Claudeがファイルを編集しようとしたら、Discordに通知が飛んで、リアクション（✅ / ❌）で承認か拒否を返せる&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MCPサーバー&lt;/strong&gt; — &lt;code&gt;tools/&lt;/code&gt; ディレクトリにファイルを置けば、Claude側からツールとして使える&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ここで大事なのは、&lt;strong&gt;MCPツールは最初ゼロだった&lt;/strong&gt;ということ。天気もカレンダーも電車情報も、何もない。ただの骨組み。&lt;/p&gt;
&lt;p&gt;でも、この骨組みには一つだけ強烈な特性がある。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Claudeはファイルを書ける。&lt;/strong&gt; つまり &lt;code&gt;tools/&lt;/code&gt; にJavaScriptファイルを追加できる。MCPサーバーは &lt;code&gt;tools/&lt;/code&gt; 配下を自動スキャンして登録する。&lt;/p&gt;
&lt;p&gt;Claudeが自分で自分の手足を作れる。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="時計が欲しいから始まった"&gt;「時計が欲しい」から始まった&lt;/h2&gt;
&lt;p&gt;最初にDiscordからClaudeに頼んだのは些細なことだった。&lt;/p&gt;
&lt;p&gt;「今何時？」&lt;/p&gt;
&lt;p&gt;Claude Code CLIはシステムの時刻を取れるが、MCPツールとして切り出されていたほうがスマートだ。Claudeに「時刻を返すMCPツールを作ってくれ」と頼んだ。&lt;/p&gt;
&lt;p&gt;数秒で &lt;code&gt;tools/current-time.js&lt;/code&gt; が生えた。&lt;/p&gt;
&lt;p&gt;次は「天気が知りたい」。Open-Meteoという無料の天気APIを使った &lt;code&gt;tools/weather.js&lt;/code&gt; が生えた。APIキーすら不要。&lt;/p&gt;
&lt;p&gt;「Googleカレンダーの予定を見たい」。OAuth認証のヘルパーごと、&lt;code&gt;tools/gcal-auth.js&lt;/code&gt; と &lt;code&gt;tools/gcal-list.js&lt;/code&gt; が生えた。&lt;/p&gt;
&lt;p&gt;「Gmailも読みたい」。同じ要領で、認証・一覧・本文読み取り・送信・フィルタ・一括削除まで、Gmailツール群が一式生えた。&lt;/p&gt;
&lt;p&gt;全部、Discordから「これ欲しい」と言っただけだ。自分はコードを一行も書いていない。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="cronが叩くのはコードじゃない"&gt;CRONが叩くのはコードじゃない&lt;/h2&gt;
&lt;p&gt;ツールが揃ってくると、次に欲しくなるのは定期実行だ。&lt;/p&gt;
&lt;p&gt;「毎朝7時に天気と電車の運行情報と今日の予定を教えてほしい」&lt;/p&gt;
&lt;p&gt;ここで普通なら、天気APIを叩いてカレンダーAPIを叩いて運行情報をスクレイピングして整形して送信する、というスクリプトを書いてCRONに登録する。&lt;/p&gt;
&lt;p&gt;でもせっかくClaude使うんだから、コードじゃなくてプロンプト渡した方が面白い。&lt;/p&gt;</description></item></channel></rss>