TinaCMS MCP Server (C#) について
TinaCMS MCP Server (C#)は、MCPクライアントをローカルのTinaCMSプロジェクト内のコンテンツファイルに接続します。パス検証を行い、文書やメタデータの作成、編集、移動、削除に対応します。
主な機能
- 01コレクションと文書の一覧表示
- 02文書内容とメタデータの読み取り
- 03文書の作成、更新、削除
- 04文書の移動とコピー
- 05生成されたTinaCMSスキーマの読み取り
- 06パス検証
活用シーン
- 01TinaCMSのコンテンツコレクションの確認
- 02文書テキストやfrontmatterの編集
- 03コンテンツファイルの整理
- 04生成されたコンテンツスキーマの確認
MCP 対応
標準のMCP Stdioトランスポートでコンテンツ管理ツールを提供します。MCPクライアントは設定済みのローカルTinaCMSプロジェクトのファイルを操作できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
TinaCMS MCP Server(C#)
このプロジェクトは、公式 C# SDK(modelcontextprotocol/csharp-sdk)を使用して、単独で動作する Model Context Protocol(MCP)サーバーを実装します。その目的は、TinaCMS プロジェクトリポジトリで管理されているコンテンツファイルを操作するためのツールを公開することです。
これにより、AI モデルやその他の MCP クライアントは、標準化された MCP を介して TinaCMS サイト内のコンテンツファイルを一覧表示、読み取り、作成、更新、削除できるようになります。
機能
- ローカルの TinaCMS プロジェクトディレクトリに接続します。
- 通信には標準の MCP Stdio トランスポートを使用します。
- 基本的なコンテンツ管理操作のためのツールを提供します。
- コレクション(
/content配下のディレクトリ)の一覧表示。 - コレクション内のドキュメントの一覧表示(非再帰および再帰)。
- ドキュメントコンテンツの読み取り。
- ドキュメントのフロントマター(メタデータ)の読み取り。
- 新しいドキュメントの作成。
- 既存のドキュメントの更新(コンテンツ全体の置換)。
- ドキュメントのフロントマターの更新(メタデータのマージ)。
- ドキュメントの削除。
- ドキュメントの移動/名前変更。
- ドキュメントのコピー。
- TinaCMS が生成したスキーマ(
.tina/schema.json)の読み取り。
- コレクション(
- 基本的なパス検証とセキュリティチェックを含みます。
前提条件
- .NET 8 SDK(またはそれ以降):C# サーバーのビルドと実行に必要です。
- **Node.js と npm/npx:**テスト用に MCP Inspector を実行するために必要です。
- **TinaCMS プロジェクト:**このサーバーで管理するコンテンツを含む、ローカルの TinaCMS プロジェクトが必要です。
セットアップ
- **クローン/ダウンロード:**このプロジェクトのソースコードを取得します。
- ルートパスの設定:
appsettings.jsonファイルを開きます。TinaProjectセクションを探します。- 重要:
RootPathに指定されているサンプルパスを、対象となる TinaCMS プロジェクトのルートディレクトリ(.tinaフォルダーを含むディレクトリ)の完全な絶対パスに置き換えます。 - パス区切りにはスラッシュ(
/)を使用してください(クロスプラットフォーム互換性のために推奨)。Windows では、必要に応じて二重バックスラッシュ(\\)も使用できます。
{ "Logging": { ... }, "TinaProject": { "RootPath": "/path/to/your/tina-project" } } - 依存関係の復元:
TinaMcpServerプロジェクトディレクトリでターミナルを開き、次を実行します。dotnet restore
開発
- **ビルド:**プロジェクトをコンパイルするには、次を実行します。
dotnet build - **ローカルでの実行(テスト用):**このサーバーは MCP クライアント(Inspector など)から実行するように設計されています。直接実行してもあまり意味はありませんが、次のコマンドで起動できます。
または、コンパイル済み DLL を実行します。dotnet run
サーバーが起動し、標準入力/出力を介して MCP クライアントが接続するのを待ちます。クライアントなしで実行した場合、すぐに終了するか、JSON エラーが表示される可能性があります。dotnet bin/Debug/net8.0/TinaMcpServer.dll
MCP Inspector を使ったテスト
サーバーとそのツールをテストするには、公式 MCP Inspector の使用を推奨します。
- **プロジェクトがビルド済みであることを確認:**まだビルドしていない場合は、
dotnet buildを実行します。 - **Inspector の実行:**ターミナルで(
TinaMcpServerプロジェクトディレクトリから)次のコマンドを実行します。これにより、Inspector はdotnetを使ってコンパイル済みサーバー DLL を起動します。npx @modelcontextprotocol/inspector dotnet bin/Debug/net8.0/TinaMcpServer.dll - **Inspector UI を開く:**コマンドの出力に表示される URL(例:
http://127.0.0.1:6274)を、ウェブブラウザーで開きます。 - **接続:**検出された
TinaMcpServerの「Connect」ボタンをクリックします。 - ツールの使用:
- 「Tools」タブに移動します。
- 「List Tools」をクリックして、利用可能なツールをすべて表示します。
- 特定のツールをクリックすると、その説明と引数が表示されます。
- 必須の引数を入力して、「Run Tool」をクリックします。
- 結果を確認し、Inspector を実行しているターミナルで C# サーバーのログを確認します。
利用可能なツール
(説明はここでは簡略化しています。詳細についてはコード内のツール属性をご確認ください)
ListTinaCollections():/content配下のコレクションディレクトリを一覧表示します。ListCollectionDocuments(collection): コレクションディレクトリ直下のファイルを一覧表示します。ListDocumentsRecursive(collection): サブディレクトリを含む、コレクション内のすべてのファイルを一覧表示します。GetTinaDocument(collection, relativePath): ドキュメントの全文を取得します。CreateTinaDocument(collection, relativePath, content): 新しいドキュメントを作成します。既に存在する場合は失敗します。UpdateTinaDocument(collection, relativePath, content): 既存のドキュメントを上書きします。存在しない場合は失敗します。DeleteTinaDocument(collection, relativePath): 既存のドキュメントを削除します。存在しない場合は失敗します。MoveDocument(collection, oldRelativePath, newRelativePath): ドキュメントを移動または名前変更します。CopyDocument(collection, sourceRelativePath, destinationRelativePath): ドキュメントをコピーします。GetDocumentMetadata(collection, relativePath): YAML フロントマターを JSON 文字列として取得します。UpdateDocumentMetadata(collection, relativePath, metadataUpdatesJson): JSON オブジェクトからフロントマターのフィールドを追加または更新します。GetCollectionSchemaInfo(collection):.tina/schema.jsonファイルの内容を読み取ります。
今後の機能強化の可能性
/contentディレクトリ名を設定できる機能。- より細かな更新操作(例:全体を置き換えるのではなく、一部を更新する機能)。
- 必要に応じて、異なるフロントマター形式(例:JSON、TOML)をサポートする機能。
- より堅牢なスキーマ解析・操作。
- 異なるトランスポートオプション(例:HTTP/SSE)。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。