ChatGPTとNextcloudをつなぐ「独自MCP」という選択肢|TinyFishの次に試した方法

ChatGPTとNextcloudをつなぐ「独自MCP」という選択肢|TinyFishの次に試した方法 その他
この記事は約11分で読めます。

前回の記事では、ChatGPTからNextcloud上のファイルを読む方法をいろいろ試した結果、普段使いならTinyFish経由がかなり使いやすいというところまで書きました。

前回の記事はこちらです。

ChatGPTからNextcloudを読む方法を試した結果、TinyFishがかなり便利だった

実際、今でもこの考えは変わっていません。

Nextcloudのフォルダを開いたり、ファイルを探したり、一般的なWebページを確認したりする用途なら、TinyFishはかなり便利です。

ただ、その後さらにChatGPTと自分のサーバーを連携させていく中で、もう一つ面白い選択肢が見えてきました。

独自MCPを作る方法です。

今回は、TinyFish、Storage Bridge、ChatGPT Workなどを試してきた続編として、ChatGPTとNextcloud、WordPress、研究データを直接つなぐ「独自MCP」という方法についてまとめます。

スポンサーリンク

独自MCPを使うと何が変わるのか

前回は、おおまかに次のような構成でした。

ChatGPT
  |
  v
TinyFish
  |
  v
Nextcloud

TinyFishは、ChatGPTにWebブラウザを使わせるような感覚で利用できます。

一方、独自MCPを作ると構成は少し変わります。

ChatGPT
  |
  v
Custom MCP
  |
  +-- Nextcloud
  |
  +-- WordPress
  |
  +-- Database
  |
  +-- Research Data
  |
  +-- External API

つまり、ChatGPTにWebページを見に行ってもらうのではなく、自分のシステムを扱うための専用ツールをChatGPTに渡すという考え方です。

MCPとは?

MCPは「Model Context Protocol」の略です。

簡単に言えば、AIと外部のデータや機能を接続するための共通ルールです。

MCPサーバー側に、例えば次のような機能を用意できます。

  • ファイル一覧を取得する
  • ファイルを検索する
  • ファイルの一部分だけ読む
  • CSVの特定期間を取得する
  • WordPressの記事一覧を取得する
  • 研究ジョブの状態を確認する
  • バックテスト結果を取得する

ChatGPT側から見ると、これらが利用可能なツールとして見えるようになります。

人間向けの管理画面を無理に操作させるのではなく、最初からAI向けの入口を作るわけです。

TinyFishと独自MCPは何が違うのか

最初は私も、

「TinyFishで読めるなら、わざわざMCPを作らなくてもよいのでは?」

と思っていました。

しかし実際に使ってみると、両者は似ているようで役割がかなり違います。

方法 得意なこと
TinyFish WebページやNextcloudを人間の操作に近い形で見る
独自MCP AI専用のツールとしてデータや機能を直接呼び出す

TinyFishは、どちらかというと「AIにWebを見てもらう仕組み」です。

独自MCPは、「AI専用の操作口を作る仕組み」です。

Nextcloudを例にすると違いが分かりやすい

例えばNextcloudに次のようなデータが保存されているとします。

/ChatGPT-FXdata/
  USDJPY.csv
  XAUUSD.csv
  GBPJPY.csv

TinyFishの場合は、人間がブラウザで操作するときに近い流れになります。

Nextcloudを開く
  |
  v
フォルダを探す
  |
  v
USDJPY.csvを探す
  |
  v
ファイルを確認する

これでも十分便利です。

しかし独自MCPなら、最初から次のような機能を用意できます。

list_files

search_files

read_file

read_range

seek_ticks

ChatGPTはページの位置やリンク構造を考える必要がありません。

必要な機能を直接呼び出せます。

巨大CSVと独自MCPはかなり相性がいい

私の場合、ここが特に重要でした。

NextcloudにはFXのティックデータを保存しています。

データによってはCSVファイルが十数GBあります。

当然ながら、

16GBのCSV
  |
  v
全部ChatGPTへ送信

という使い方は現実的ではありません。

そこで以前、巨大ファイルの一部分だけ取得するStorage Bridgeという仕組みを作りました。

例えば、

USDJPY

2024-01-03

13:00前後

だけ欲しい場合、16GBのファイル全部を読む必要はありません。

必要な時刻付近だけ探して取得すれば済みます。

これをMCPのツールとして用意しておけば、例えば次のような処理ができます。

seek_ticks(
  symbol="USDJPY",
  datetime="2024-01-03 13:00",
  before=300,
  after=300
)

ChatGPT側は巨大CSVの保存場所や内部構造を意識する必要がありません。

単純に、

「USDJPYの2024年1月3日13時前後を調べて」

と依頼すれば、必要な部分だけ取得できます。

AI向けのWebページを作らなくてもよくなる

以前は、ChatGPTから自分のデータを読みやすくするために、次のような仕組みも作っていました。

Nextcloud
  |
  v
WordPress
  |
  v
REST API
  |
  v
Gateway URL
  |
  v
ChatGPT

この方法でも動きます。

ただし、いろいろ考えることがあります。

  • URLの設計
  • 認証
  • アクセス制限
  • 巨大ファイルのRange対応
  • レスポンス形式
  • キャッシュ

TinyFishを使い始めたとき、

「AI向けのWebページを無理に作らなくてもいいのでは?」

と思うようになりました。

そしてMCPを使うと、さらに一歩進みます。

そもそもWebページである必要がありません。

AIが本当に必要なのは、画面のデザインではなく、

  • 何ができるのか
  • どんな入力を渡すのか
  • 何が返ってくるのか

だからです。

まずは「読み取り専用MCP」にした

独自MCPというと、

「AIが勝手にサーバーを変更するのでは?」

という不安もあります。

そこで私の場合は、まず読み取り専用から始めました。

例えば許可する操作は次のようなものです。

list

search

read

stat

range

seek

反対に、次のような操作は最初から持たせません。

delete

rename

overwrite

execute

つまりAIができるのは、基本的に、

探す、読む、確認する

ところまでです。

研究データを扱うだけなら、これでもかなり便利です。

WordPressともMCPは相性がいい

MCPはNextcloudだけではありません。

WordPressとの連携にもかなり向いています。

例えば研究用WordPressで、次のような機能をMCPとして公開できます。

  • 研究ジョブ一覧
  • ジョブ状態取得
  • 登録EA一覧
  • データセット一覧
  • バックテスト結果取得
  • Forward結果取得
  • ログ検索

するとChatGPTに、

「昨日失敗した研究ジョブを調べて」

と頼むだけで、

ジョブ一覧取得
  |
  v
失敗ジョブを抽出
  |
  v
ログ取得
  |
  v
原因を分析

という流れを作れるようになります。

これは単純なWebページ閲覧とはかなり違います。

Web管理画面は人間用、MCPはAI用。

こう考えると分かりやすいと思います。

TinyFishをやめるわけではない

ここは前回の記事と同じです。

新しい方法を見つけたからといって、今までの仕組みを全部置き換える必要はありません。

現在の私の使い分けは、おおよそ次のようになっています。

用途 使う方法
普通のWebページを見る TinyFish
Nextcloudを普通に見る TinyFish
巨大CSVを部分取得する Storage Bridge
日時指定でティックデータを取得する Storage Bridge / 独自MCP
研究データを構造的に取得する 独自MCP
WordPress内部の状態を確認する 独自MCP
大量データをまとめて解析する ChatGPT Work

MCPに向いている仕事だけMCPにする。

このくらいの使い分けが、今のところ一番扱いやすいと感じています。

独自MCPは「自分専用API」より少し面白い

もちろん、普通のREST APIを作る方法もあります。

私もこれまでかなり使ってきました。

ただ、MCPには少し違う面白さがあります。

AI側が「自分にはどんな道具があるのか」を理解できる点です。

例えば、

search_ticks

というツールを作り、

  • 銘柄
  • 開始日時
  • 終了日時
  • 最大取得件数

などの入力を定義しておけば、AIはその説明を見ながら適切なツールを使えます。

毎回人間が、

「このURLを開いて、このパラメータを付けて……」

と説明する必要がありません。

AIと自分のサーバーの間に、共通の道具箱を置くような感覚です。

独自MCPなら自分の用途に合わせられる

既製サービスの最大のメリットは、すぐに使えることです。

一方で独自MCPには、

自分が本当に必要な機能だけ作れる

というメリットがあります。

私の場合なら、例えば次のようなデータがあります。

Nextcloud

WordPress

FX tick data

EA research results

Backtest results

Forward results

一般的なクラウドストレージ連携なら、ファイルを開いたり検索したりするところまではできます。

しかし、

「USDJPY.csvの2024年1月3日13時前後だけ取得する」

あるいは、

「USDJPYとGBPJPYで同じ条件の研究結果だけ比較する」

といった処理は、自分専用のツールとして作ってしまったほうが使いやすいことがあります。

ここが独自MCPの面白いところです。

セキュリティも「必要な機能だけ公開する」と考える

自前のMCPというと、サーバー全体をAIに見せるような印象を持つかもしれません。

しかし実際には、そうする必要はありません。

例えばNextcloud全体ではなく、

/ChatGPT-FXdata/

だけを対象にすることもできます。

さらにMCP側で、

  • CSVのみ
  • 読み取り専用
  • 1回の取得量を制限
  • 削除禁止
  • 書き込み禁止
  • 実行系コマンド禁止

という制限もできます。

つまり、AIにサーバーそのものを渡すのではなく、

必要な操作だけ切り出して渡す

という設計にできます。

現在のChatGPT連携環境

いろいろ試した結果、現在は次のような役割分担になってきました。

                    ChatGPT
                       |
          +------------+------------+
          |            |            |
          v            v            v
       TinyFish     Custom MCP     Work
          |            |            |
          |            |            |
          v            v            v
       Web access   Tools/API    Analysis
          |            |
          +------+-----+
                 |
          +------+------+
          |             |
          v             v
      WordPress      Nextcloud
                        |
                        v
                  Storage Bridge
                        |
                        v
                  Large FX CSV

あえて役割を短く表現すると、

  • TinyFishは「目」
  • MCPは「手」
  • Storage Bridgeは巨大データ専用の取り出し口
  • Workは作業場

という感じです。

結論:ChatGPTを自分のシステムにつなぐなら独自MCPは面白い

前回の記事では、

Nextcloudを普通に読むならTinyFishがかなり使いやすい

という結論になりました。

今でもこれは変わっていません。

ただ、自分のデータやWordPress、研究環境をChatGPTから頻繁に使うようになると、独自MCPという選択肢がかなり面白くなってきます。

TinyFishは、人間向けに作られたWebをAIにも見てもらう方法。

独自MCPは、最初からAI用の入口を作る方法。

この違いはかなり大きいです。

最初は、

ChatGPTから
Nextcloudのファイルを読みたい

というだけだったのですが、気が付けば、

ChatGPT
  |
  v
Custom MCP
  |
  +-- WordPress
  |
  +-- Nextcloud
  |
  +-- Research System

というところまで来ました。

こういう遠回りも、自分で環境を作っていると結構面白いものです。

今のところ、私の使い分けは次のようになっています。

普通にWebを見るならTinyFish。
巨大ファイルを部分的に読むならStorage Bridge。
自分のシステムをAIの「道具」にするなら独自MCP。
重い解析を任せるならChatGPT Work。

前回は「第三の方法」までたどり着きました。

どうやら第四の方法まで来てしまったようです。


よくある質問

独自MCPを作ればTinyFishは不要になりますか?

いいえ。用途が違います。一般的なWebページやNextcloudの画面を見る用途ではTinyFishが便利です。一方、特定データの取得や研究システムとの連携には独自MCPが向いています。

MCPを使うとChatGPTがサーバーを自由に操作できるようになりますか?

必ずしもそうではありません。読み取り専用の機能だけ公開したり、対象フォルダや取得量を制限したりできます。最初は「読む・探す・確認する」機能だけに限定する方法が扱いやすいと思います。

巨大なCSVもMCPで扱えますか?

ファイル全体をAIへ渡すのではなく、日時や範囲を指定して必要な部分だけ取得するツールをMCP側に作れば扱いやすくなります。巨大なティックデータのような用途では特に相性がよいと感じています。

WordPressとMCPを連携できますか?

可能です。記事取得だけでなく、独自プラグインの状態、研究ジョブ、データセット、ログなどをMCP経由で取得する仕組みにすると、WordPressをAI向けのバックエンドとして利用できます。

関連記事:
ChatGPTからNextcloudを読む方法を試した結果、TinyFishがかなり便利だった

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