【WpAiCli × MCP】AIに「コマンド」ではなく「道具」を渡す。WpAiCliをMCP対応させて感じた“確信”の変化

アプリ開発

以前の記事(AIとWordPressを繋ぐ:Gemini時代の執筆環境と自作ツール「WpAiCli」)で、「AIが操作しやすいCLIツール」として自作の WpAiCli を紹介しました。

「AIにJSONを読み書きさせ、ローカルとサーバーを同期する」
このコンセプトは私の執筆環境の土台となり、十分に便利に機能していました。

しかし今回、そこにあえてもう一段階、MCP(Model Context Protocol) というレイヤーを実装してみました。これは機能追加というよりは、「AIとの対話の質を変える」ための実験的な試みです。

なぜ今、MCPなのか?

これまでの WpAiCli は、AI にとって「使いやすいコマンドラインツール」でした。
AIはヘルプテキスト(--help)を読み、「たぶんこういう引数で動くだろう」と推論してコマンドを組み立てていました。優秀なLLMであればこれで9割うまくいきますが、そこには常に「確率的な推論」が介在します。

今回導入した MCP は、Anthropic社などが提唱する「AIモデルと外部システムを接続するための標準規格」です。これを導入することで、WpAiCliは単なるコマンドの集合体から、AIが直接認識できる「型定義された関数のセット(Tools)」へと変化します。

「推測」から「確信」へ

MCP対応によって何が変わったのか?
正直なところ、できること(記事の投稿、同期、画像のアップロード)自体は以前と変わりません。劇的な機能向上を期待すると肩透かしを食らうかもしれません。

しかし、開発者として、そしてユーザーとしてツールを使っていると、AIの挙動に明確な変化を感じます。それは「確信」です。

  • Before (CLI):
  • AI: 「ヘルプを見ると --title オプションがあるようだ。これを文字列で組み立てて実行しよう。(幻覚で存在しない --author をつけちゃうかも?)」

  • After (MCP):

  • AI: 「ここにある CreatePost ツールは、title (string, required) と content (string) を受け付けると定義されている。だからこの通りにデータを渡す。」

この違いは大きいです。AIが「コマンドを予測する」のではなく、「用意された道具(関数)を仕様通りに実行する」という振る舞いに変わるため、「迷い」がなくなり、実行速度や安定感が肌感覚で向上しました。

技術的な裏側:C# SDKでの実装

今回の実装には、NuGetで公開されている .NET向けの ModelContextProtocol SDK (Preview) を使用しました。

実装は非常にシンプルで、既存のサービスロジック(WordPressService)を、MCPの属性(Attribute)でラップするだけです。

// 実際のコードイメージ:属性をつけるだけでツール化される
[McpServerTool]
[Description("新しい記事を作成します。")]
public static async Task<string> CreatePost(
    [Description("記事のタイトル")] string title,
    [Description("本文")] string content,
    IServiceProvider services
)
{
    // 既存のロジックを呼び出すだけ
    var service = services.GetRequiredService<WordPressService>();
    return await service.CreatePostAsync(...);
}

このように属性をつけることで、WpAiCliは起動時に自分自身の機能を「ツール一覧」としてAIに提示できるようになります。既存の資産を活かしつつ、AIへのインターフェースだけをモダンに差し替えることができました。

コードの全容は GitHub に置いてありますので、.NET で MCP サーバーを実装してみたい方は参考にしてみてください。

実際のワークフロー:日記投稿がどう変わったか

Claude DesktopなどのMCP対応クライアントを使うと、私の日記投稿フローは以下のようになります。

  1. 入力: 「今日の開発進捗は〇〇だった。これを日記として下書き保存しておいて」
  2. 思考(AI): (CreatePost ツールが使えるな。引数はこれとこれだ)
  3. 実行: [CreatePostを実行] → 成功
  4. 思考(AI): (ユーザーはローカルでも確認したいはずだ。SyncPosts もやっておこう)
  5. 実行: [SyncPostsを実行] → 完了
  6. 回答: 「下書きを作成し、ローカル環境とも同期しました」

ユーザーである私は、ただ話しかけるだけ。裏側でAIが「確信を持って」ツールを選び、WordPressを操作し、ローカルファイルまで生成してくれる。
まさに「AIに指先が生えた」感覚です。

導入方法(実験的機能として)

もしこの感覚を試してみたい方は、最新のWpAiCliをインストールし、Claude Desktopの設定ファイル(claude_desktop_config.json)に以下を追加してみてください。

インストール:

dotnet tool install --global WpAiCli

Claude Desktop設定 (Windows):
%APPDATA%Claudeclaude_desktop_config.json

{
  "mcpServers": {
    "wpai": {
      "command": "wpai",
      "args": ["mcp"]
    }
  }
}

(macOS/Linuxの場合は dotnet exec 経由での指定が必要です)

結論:AI時代のツールの在り方

今回のMCP対応は、ツール自体が便利になったというより、「人間とAIの境界線を溶かす」ための実験です。

コマンドラインでカチャカチャと引数を入力する楽しさも捨てがたいですが、AIがあたかも自分の手足のように外部システムを操作してくれる未来感には、抗いがたい魅力があります。

あくまで個人的なツールですが、AI時代の「道具」の在り方を考える上で、面白い実験になったと感じています。

コメント

タイトルとURLをコピーしました