Pulse Backend MCP Server について
社内開発者向けの Python 製 MCP サーバーで、BigQuery のクエリ、顧客情報やデータセットの取得、ClickUp タスクの照会に対応します。社内データや関連サービスへの読み取り専用ツールを提供します。
主な機能
- 01読み取り専用の BigQuery クエリ実行
- 02顧客情報の取得
- 03顧客データセットの一覧表示
- 04データセットのテーブルとメタデータの確認
- 05ClickUp タスク詳細の取得
活用シーン
- 01SQL による社内データセットの照会
- 02顧客情報と利用可能なデータセットの検索
- 03BigQuery データセット内のテーブル確認
- 04ClickUp タスクとコメントの照会
MCP 対応
BigQuery、社内データウェアハウス、ClickUp の照会ツールを MCP クライアントに公開します。対応クライアントは MCP を通じてツールを検出し、呼び出せます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Pulse Backend MCP サーバー
社内の開発者が生産性を高められるよう、BigQuery へのアクセスと専門的なデータツールを提供する Model Context Protocol(MCP)サーバーです。
概要
この MCP サーバーは、Model Context Protocol を実装し、LLM を活用したアプリケーションが会社のデータにアクセスし、専門的なデータ処理を制御された方法で実行できるようにします。このサーバーは、BigQuery および社内固有のデータ構造を操作するための複数のツールを公開します。
プロジェクト構成
pulse-backend-mcp/
├── README.md # Project documentation
├── pyproject.toml # Python project configuration
├── uv.lock # Dependency lock file
├── .env # Environment variables (create this file)
└── src/ # Source code directory
└── server.py # Main MCP server implementation
MCP とは?
Model Context Protocol(MCP)は、アプリケーションが LLM にコンテキストを提供する方法を標準化するオープンプロトコルです。USB-C がデバイスを周辺機器に接続する標準的な方法を提供するのと同じように、MCP は AI モデルをさまざまなデータソースやツールに接続する標準的な方法を提供します。
MCP アーキテクチャ
MCP はクライアント・サーバーアーキテクチャを採用しています。
- MCP ホスト:Claude Desktop、IDE、AI ツールなど、MCP を介してデータにアクセスするプログラム
- MCP クライアント:サーバーと 1 対 1 の接続を維持するプロトコルクライアント
- MCP サーバー:標準化されたプロトコルを通じて特定の機能を公開する軽量なプログラム(このサーバーなど)
- データソース:MCP サーバーが安全にアクセスできるデータベース、ファイル、サービス
通信の流れ
- ホストアプリケーション(例:Claude Desktop)が MCP サーバーへの接続を開始します
- クライアントは
tools/listエンドポイントを通じて、利用可能なツールを検出します - ユーザーからプロンプトを受けると、LLM はツールを使って BigQuery クエリを実行したり、クライアント情報を取得したりできます
- サーバーは要求された操作を実行し、結果をクライアントに返します
- クライアントはホストアプリケーション内で結果をユーザーに提示します
主な機能
- BigQuery 連携:社内の BigQuery データセットに対して SQL クエリを実行
- クライアントデータへのアクセス:データウェアハウスからクライアントの詳細情報とデータセットを取得
- 拡張可能なアーキテクチャ:新たなユースケースに対応するツールを追加
前提条件
- Python 3.13 以降
- BigQuery にアクセスできる Google Cloud アカウント
- 適切な権限を持つサービスアカウントの認証情報
- ClickUp API キー(タスク連携用)
インストール
-
リポジトリをクローンします。
git clone https://github.com/yourusername/saras-mcp.git cd saras-mcp -
仮想環境を作成します。
python -m venv venv source venv/bin/activate # On Windows, use: venv\Scripts\activate -
依存関係をインストールします。
pip install -r requirements.txt
設定
-
次のいずれかの方法で Google Cloud の認証情報を設定します。
GOOGLE_APPLICATION_CREDENTIALS環境変数に、サービスアカウントキーファイルのパスを設定します。export GOOGLE_APPLICATION_CREDENTIALS="/path/to/service-account-key.json"- ツールの呼び出し時に、サービスアカウントのパスを直接渡します
-
ルートディレクトリに
.envファイルを作成し、次の変数を設定します。GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account-key.json GOOGLE_PROJECT_ID=your-project-id CLICKUP_API_KEY=your-clickup-api-key -
(任意)必要に応じて、ツール定義のデフォルトプロジェクト ID を変更します
使い方
インスペクターで MCP サーバーを起動します。
mcp dev src/server.py
サーバーはデフォルトの MCP ポート(通常は 8080)で起動します。これで、MCP 対応クライアントをこのサーバーに接続できます。
MCP Inspector でのテスト
サーバーの実装をテストするには、次の手順に従います。
- MCP Inspector をインストールします
- 起動中のサーバーに接続します
- 利用可能なツールを確認し、機能をテストします
利用可能なツール
1. execute_bigquery
BigQuery SQL クエリを実行し、構造化データとして結果を取得します。
パラメーター:
query(文字列、必須):実行する SQL クエリproject_id(文字列、任意):Google Cloud プロジェクト ID(デフォルト:"insightsprod")service_account_path(文字列、任意):サービスアカウント JSON 認証情報のパス
ツールの注釈:
- 読み取り専用:はい(データを変更しません)
- オープンワールド:はい(外部の BigQuery サービスと連携します)
2. get_client_details
データウェアハウスからクライアント情報を取得します。
パラメーター:
client_id(string、任意):絞り込みに使用する特定のクライアント IDclient_name(string、任意):検索するクライアント名(一部一致に対応)project_id(string、任意):Google Cloud プロジェクト ID(デフォルト:"insightsprod")service_account_path(string、任意):サービスアカウントの JSON 認証情報へのパス
ツールのアノテーション:
- 読み取り専用:はい(データを変更しません)
- オープンワールド:いいえ(内部データウェアハウスを操作します)
3. get_client_datasets
特定のクライアントで利用可能なデータセットを取得します。
パラメーター:
client_id(string、任意):絞り込みに使用する特定のクライアント IDclient_name(string、任意):検索するクライアント名(一部一致に対応)project_id(string、任意):Google Cloud プロジェクト ID(デフォルト:"insightsprod")service_account_path(string、任意):サービスアカウントの JSON 認証情報へのパス
ツールのアノテーション:
- 読み取り専用:はい(データを変更しません)
- オープンワールド:いいえ(内部データウェアハウスを操作します)
4. get_dataset_tables
特定の BigQuery データセット内のすべてのテーブルと、そのメタデータを一覧表示します。
パラメーター:
dataset_id(string、必須):テーブルを一覧表示する BigQuery データセットの IDproject_id(string、任意):Google Cloud プロジェクト ID(デフォルト:環境から取得)service_account_path(string、任意):サービスアカウントの JSON 認証情報へのパス
ツールのアノテーション:
- 読み取り専用:はい(データを変更しません)
- オープンワールド:いいえ(内部データウェアハウスを操作します)
5. get_clickup_task
特定の ClickUp タスクに関する詳細情報を取得します。
パラメーター:
task_id(string、必須):ClickUp タスクの一意の識別子api_key(string、任意):認証用の ClickUp API キー(デフォルト:環境から取得)include_subtasks(boolean、任意):サブタスクの情報を含めるかどうかinclude_comments(boolean、任意):タスクのコメントを含めるかどうか
ツールのアノテーション:
- 読み取り専用:はい(データを変更しません)
- オープンワールド:はい(外部の ClickUp API と連携します)
サーバーの拡張
新しいツールの追加
MCP サーバーに新しいツールを追加するには:
server.pyに@mcp.tool()を付けた新しい関数を追加します- 関数のパラメーターと戻り値の型を定義します
- ツールの目的と使い方を説明する、充実した docstring を追加します
- 堅牢なユーザーエクスペリエンスを実現するため、エラー処理を実装します
例:
@mcp.tool()
def my_new_tool(param1: str, param2: int = 0) -> dict:
"""Description of what the tool does.
Args:
param1: Description of param1
param2: (Optional) Description of param2
Returns:
Dictionary containing the results or error information
"""
try:
# Implementation
return {"success": True, "results": [...]}
except Exception as e:
return {
"success": False,
"error": "Error Type",
"message": str(e),
"code": 500
}
適切なエラー処理
エラーが発生する可能性があるツールでは:
- 適切なエラー構造を使用します
- 可能な場合は具体的なエラーコードを返します
- 意味のあるエラーメッセージを提示します
例:
try:
# Tool operation
result = perform_operation()
return {"success": True, "results": result}
except NotFound as e:
return {
"success": False,
"error": "Not Found",
"message": str(e),
"code": 404,
}
except Exception as e:
return {
"success": False,
"error": "Execution Error",
"message": str(e),
"code": 500,
}
ツールのアノテーション
ツールを定義する際は、クライアントがツールの動作を理解できるよう、次のアノテーションの追加を検討してください。
readOnlyHint:ツールが環境を変更するかどうかを示しますdestructiveHint:ツールが破壊的な操作を実行する可能性があるかどうかを示しますidempotentHint:同じ引数で繰り返し呼び出しても追加の効果がないかどうかを示しますopenWorldHint:ツールが外部のエンティティと連携するかどうかを示します
セキュリティに関する考慮事項
MCP サーバーを開発する際は、次のセキュリティのベストプラクティスに従ってください。
-
入力の検証
- すべてのパラメーターをスキーマに照らして検証します
- インジェクション攻撃を防ぐため、SQL クエリをサニタイズします
- パラメーターのサイズと範囲を確認します
-
アクセス制御
- 必要に応じて適切な認証を実装します
- 機密データへのアクセスには適切な認可を使用します
- リソースを大量に消費する操作には、レート制限を検討します
-
エラー処理
- 内部エラーをクライアントに公開しないでください
- セキュリティに関係するエラーをログに記録します
- エラー発生後は、適切にリソースをクリーンアップします
MCP プロトコルのリソース
コントリビューション
- 機能追加またはバグ修正用の新しいブランチを作成します
- 変更内容に適切なテストを追加します
- 変更内容を明確に説明したプルリクエストを送信します
ライセンス
[ライセンスをここに記入]
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。