NotionBae について
NotionBaeは、Notion APIを介してAIアシスタントとNotionワークスペースをつなぐ、.NET C#製のMCPサーバーです。Markdownをコンテンツの中間形式として使い、ページの検索、取得、作成、更新に対応します。
主な機能
- 01Notionページの検索と絞り込み
- 02Markdown形式でのページ内容取得
- 03内容を指定したページ作成
- 04ページ更新とブロック取得
- 05インテグレーショントークンでのワークスペースアクセス
活用シーン
- 01ワークスペース内の関連ページ検索
- 02ページ内容のAIアシスタントへの提供
- 03MarkdownからのNotionページ作成
- 04既存ページ内容の更新
MCP 対応
NotionBaeはMCPサーバーとして、Notionページやブロックの検索、取得、作成、更新ツールをクライアントに提供します。NotionワークスペースへのアクセスにはインテグレーションAPIキーが必要です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
NotionBae
Notion.com と連携する Model Context Protocol(MCP)サーバーです。ModelContextProtocol を使用して、.NET C# で構築されています。NotionBae は Notion API を活用し、AI アシスタントと Notion ワークスペース間のシームレスなやり取りを実現します。
概要
NotionBae は、Model Context Protocol フレームワークを通じて、大規模言語モデルと Notion.com をつなぐブリッジを提供します。これにより、AI アシスタントは Notion のデータベース、ページ、コンテンツをシームレスかつ構造化された方法で操作できます。
機能
- Notion API との連携
- MCP 準拠のサーバー実装
- Notion コンテンツの構造化データ処理
- Notion ワークスペースへの認証と安全なアクセス
技術
- Notion SDK for .NET:Notion API 用の包括的な .NET クライアントです。この SDK を基盤として使用しながら、いくつかの制約に対処するため、独自の
NotionBaeRestClientを実装しています。- 元の SDK の REST クライアント実装は密結合で、依存性注入に関する .NET のベストプラクティスに従っていませんでした。
- カスタムクライアントでは
HttpClientFactoryを適切に活用しています。これは、コネクションプーリングとライフタイム管理を適切に行ううえで重要です。 - この再設計により、テストが容易になり、テストスイートでポリモーフィックな動作を実現できます。
- このソリューションは、元の SDK の擬似 DI 実装ではなく、真の依存性注入を提供します。
- Markdig:Notion のブロック構造と Markdown を相互に変換するために使用する、高速で強力かつ拡張可能な .NET 用 Markdown プロセッサーです。
Markdown を使う理由
NotionBae は、次のような理由から、Notion の複雑なブロック構造と AI エージェントの間の中間形式として Markdown を使用します。
-
トークン効率:Notion API は、多くのプロパティを含む冗長なブロック構造でデータを返します。Markdown に変換することで、AI モデルが処理するトークン数を大幅に削減し、パフォーマンスの向上とコストの削減が期待できます。
-
読みやすさ:Markdown はもともと人間が読みやすい形式であるため、人間と AI エージェントの双方がコンテンツを利用しやすくなります。
-
シンプルさ:特にコンテンツを生成する際、Markdown の使用は Notion の入れ子になったブロック構造を直接処理するよりもはるかに簡単です。
Notion API の生のレスポンスと Markdown のトークン使用量を比較した包括的なデータはありませんが、中間形式として Markdown を使用すると、効率が大幅に向上することを示す逸話的な証拠があります。
利用可能なツール
NotionBae は、Notion を操作するために次のツールを提供します。
| ツール名 | 説明 | パラメーター |
|---|---|---|
| nb_search | Notion のページを検索し、タイトルと公開 URL を返します | query:String - Notion 内で一致するページを検索するための検索クエリ |
| nb_create_page | 指定したタイトル、説明、コンテンツで新しい Notion ページを作成します | parentId:String - 親ページの IDtitle:String - 新しいページのタイトルdescription:String - ページの説明content:String - ページの Markdown コンテンツ |
| nb_get_page_content | メタデータと全コンテンツを Markdown 形式で含む Notion ページを取得します | pageId:String - 取得するページの ID |
| nb_get_block | Notion から特定のブロックとその子ブロックを取得します | blockId:String - 取得するブロックの ID |
| nb_search_page | フィルタリング機能を備えた高度なページ検索を行います | query:String - 検索クエリfilter:Object - 任意のフィルターパラメーター |
| nb_update_page | 既存の Notion ページを更新します | pageId:String - 更新するページの IDcontent:String - ページの新しい Markdown コンテンツ |
はじめに
1. Notion アカウントの設定
-
Notion アカウントを作成する:まだアカウントをお持ちでない場合は、notion.so で Notion アカウントを作成してください。
-
Notion インテグレーションを作成する:
- Notion Developers にアクセスします
- 「New integration」をクリックします
- インテグレーションに名前を付けます(例:「NotionBae」)
- インテグレーションを使用するワークスペースを選択します
- 適切な機能を設定します(最低限、「Read content」と「Update content」を選択してください)
- 「Submit」をクリックしてインテグレーションを作成します
-
API キーを取得する:
- インテグレーションを作成すると、「Internal Integration Secret」(API キー)が表示されます
- NotionBae の設定に必要になるため、このキーをコピーします
-
インテグレーションにページを共有する:
- NotionBae 経由でアクセスしたい Notion ページを開きます
- 右上の「Share」をクリックします
- 「Add people, groups, or integrations」欄で、インテグレーション名を検索します
- インテグレーションを選択して、そのページへのアクセス権を付与します
2. NotionBae のクローンとセットアップ
-
リポジトリをクローンする:
git clone https://github.com/mrcunninghamz/NotionBae.git /path/to/your/directory cd /path/to/your/directory/path/to/your/directoryを、リポジトリのクローン先となる実際のディレクトリパスに置き換えてください(例:~/projects/NotionBaeまたは/Users/username/Documents/Projects/NotionBae)。 -
プロジェクトをビルドする:
dotnet build -
環境変数を設定する:
NotionBae サーバーには、次の環境変数が必要です:
Notion:AuthToken:Notion API での認証に使用する Notion API キー
Notion ワークスペースの設定でインテグレーションを作成すると、Notion API キーを取得できます。インテグレーションの作成方法と API キーの取得方法については、Notion API documentation をご覧ください。 appsettings.template.json を appsettings.json にコピーし、
Notion:AuthTokenに Notion API キーを設定してください。 -
プロジェクトを実行する:
dotnet run --project PATH_TO_NOTIONBAE_PROJECT/src/NotionBae.csprojPATH_TO_NOTIONBAE_PROJECTを、NotionBae.csproj ファイルを含むフォルダーである NotionBae プロジェクトフォルダーのパスに置き換えてください。
3. MCP サーバーの設定
VS Code で NotionBae を MCP サーバーとして使用するには、次の設定を VS Code の settings.json ファイルに追加してください:
"mcp": {
"servers": {
"NotionBae": {
"url": "http://localhost:5001/mcp"
}
}
}
関連プロジェクト
このプロジェクトは、ツールコレクション「Bae」の一部です:
- TestBae - フィクスチャー、モック、一般的なテストパターンを使用してテストのセットアップを簡素化し、効率的で保守しやすいテストスイートを実現する .NET テストユーティリティライブラリです。
- AzBae - Azure リソース管理、デプロイ、DevOps ワークフローを効率化するための CLI と GUI の両方のインターフェイスを備えた Azure DevOps ツールです。
ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。