Fledge MCP Server

by Krupalp525
Verified

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Integrations

  • Enables building and deploying the Fledge MCP server using Docker containers, supporting deployment to Smithery.ai for enhanced scalability and availability.

  • Supports deployment behind an Nginx reverse proxy for production environments, enhancing security and performance for the Fledge MCP server.

  • Allows generation of React components for Fledge data visualization, enabling the creation of custom UI elements to display sensor data from Fledge instances.

Fledge MCP サーバー

これは、Fledge 機能を Cursor AI に接続し、AI が自然言語コマンドを介して Fledge インスタンスと対話できるようにする Model Context Protocol (MCP) サーバーです。

前提条件

  • Fledge はローカルにインストールされているか、API 経由でアクセス可能です (デフォルト: http://localhost:8081 )
  • カーソルAIがインストール済み
  • Python 3.8以上

インストール

  1. このリポジトリをクローンします:
git clone https://github.com/Krupalp525/fledge-mcp.git cd fledge-mcp
  1. 依存関係をインストールします。
pip install -r requirements.txt

サーバーの実行

  1. Fledge が実行されていることを確認します。
fledge start
  1. MCP サーバーを起動します。
python mcp_server.py

API キー認証による安全な操作の場合:

python secure_mcp_server.py
  1. ヘルスエンドポイントにアクセスして動作していることを確認します。
curl http://localhost:8082/health

応答として「Fledge MCP Server is running」が表示されます。

カーソルに接続

  1. カーソルで、「設定」>「MCPサーバー」に移動します。
  2. 新しいサーバーを追加します:
    • URL: http://localhost:8082/tools
    • ツールファイル: 含まれている tools.json をアップロードするか、ローカルパスを指定します。
  3. セキュア サーバーの場合は、セキュア サーバーの起動時に生成される api_key.txt ファイルの値を使用して、「X-API-Key」ヘッダーを構成します。
  4. テストします: Cursor の Composer (Ctrl+I) を開き、「Fledge API にアクセスできるかどうかを確認する」と入力すると、AI がvalidate_api_connectionツールを呼び出すはずです。

利用可能なツール

データアクセスと管理

  1. get_sensor_data : 時間範囲と制限によるフィルタリングをオプションで行い、Fledge からセンサーデータを取得します。
  2. list_sensors : Fledgeで利用可能なすべてのセンサーを一覧表示します
  3. ingest_test_data : オプションのバッチカウントを使用して、テストデータをFledgeに取り込む

サービス制御

  1. get_service_status : すべてのFledgeサービスのステータスを取得する
  2. start_stop_service : タイプ別にFledgeサービスを開始または停止する
  3. update_config : Fledge 設定パラメータを更新する

フロントエンドコード生成

  1. generate_ui_component : Fledge のデータ視覚化用の React コンポーネントを生成する
  2. fetch_sample_frontend : さまざまなフレームワークのサンプルフロントエンドテンプレートを取得します。
  3. suggests_ui_improvements : UI コードを改善するための AI を活用した提案を取得します

リアルタイムデータストリーミング

  1. subscribe_to_sensor : センサーデータの更新のサブスクリプションを設定する
  2. get_latest_reading : 特定のセンサーから最新の読み取り値を取得する

デバッグと検証

  1. validate_api_connection : Fledge API がアクセス可能かどうかを確認する
  2. simulate_frontend_request : さまざまなメソッドとペイロードを使用して API リクエストをテストする

ドキュメントとスキーマ

  1. get_api_schema : 利用可能なFledge APIエンドポイントに関する情報を取得する
  2. list_plugins : 利用可能なFledgeプラグインを一覧表示する

高度なAI支援機能

  1. generate_mock_data : テスト用の現実的な模擬センサーデータを生成する

APIのテスト

付属のテスト スクリプトを使用してサーバーをテストできます。

# For standard server python test_mcp.py # For secure server with API key python test_secure_mcp.py

セキュリティオプション

セキュア サーバー (secure_mcp_server.py) は、API キー認証を追加します。

  1. 初回実行時に、api_key.txtに保存されるAPIキーを生成します。
  2. すべてのリクエストには、X-API-Key ヘッダーにこのキーを含める必要があります。
  3. ヘルスチェックエンドポイントは認証なしでもアクセス可能です

APIリクエストの例

# Validate API connection curl -X POST -H "Content-Type: application/json" -d '{"name": "validate_api_connection"}' http://localhost:8082/tools # Generate mock data curl -X POST -H "Content-Type: application/json" -d '{"name": "generate_mock_data", "parameters": {"sensor_id": "temp1", "count": 5}}' http://localhost:8082/tools # Generate React chart component curl -X POST -H "Content-Type: application/json" -d '{"name": "generate_ui_component", "parameters": {"component_type": "chart", "sensor_id": "temp1"}}' http://localhost:8082/tools # For secure server, add API key header curl -X POST -H "Content-Type: application/json" -H "X-API-Key: YOUR_API_KEY" -d '{"name": "list_sensors"}' http://localhost:8082/tools

サーバーの拡張

ツールを追加するには:

  1. ツール定義をtools.jsonに追加する
  2. mcp_server.pysecure_mcp_server.pyにツール ハンドラーを実装します。

生産上の考慮事項

本番環境への展開の場合:

  • HTTPSを使用する
  • Nginxのようなリバースプロキシの背後にデプロイする
  • より堅牢な認証(JWT、OAuth)を実装する
  • レート制限を追加する
  • サブスクリプション用の永続データストレージを設定する

Smithery.aiへのデプロイ

Fledge MCPサーバーは、Smithery.aiにデプロイすることで、スケーラビリティと可用性を向上させることができます。デプロイするには、以下の手順に従ってください。

  1. 前提条件
    • ローカルマシンにDockerがインストールされている
    • Smithery.aiアカウント
    • Smithery CLIツールがインストールされました
  2. ビルドとデプロイ
    # Build the Docker image docker build -t fledge-mcp . # Deploy to Smithery.ai smithery deploy
  3. 構成smithery.jsonファイルには、デプロイメントの構成が含まれています。
    • ポート 8082 の WebSocket トランスポート
    • 設定可能なFledge API URL
    • ツールの定義とパラメータ
    • タイムアウト設定
  4. 環境変数Smithery.ai ダッシュボードで次の環境変数を設定します。
    • FLEDGE_API_URL : Fledge APIエンドポイント
    • API_KEY : セキュア API キー (セキュア モードを使用している場合)
  5. 検証デプロイ後、サーバーが実行中であることを確認します。
    smithery status fledge-mcp
  6. 監視Smithery.ai ダッシュボードを通じて展開を監視します。
    • リアルタイムログ
    • パフォーマンスメトリック
    • エラー追跡
    • リソースの使用
  7. 更新デプロイメントを更新するには:
    # Build new image docker build -t fledge-mcp . # Deploy updates smithery deploy --update

JSON-RPC プロトコルのサポート

サーバーは、WebSocket経由のJSON-RPC 2.0を使用してモデルコンテキストプロトコル(MCP)を実装します。以下のメソッドがサポートされています。

  1. 初期化する
    { "jsonrpc": "2.0", "method": "initialize", "params": {}, "id": "1" }
    応答:
    { "jsonrpc": "2.0", "result": { "serverInfo": { "name": "fledge-mcp", "version": "1.0.0", "description": "Fledge Model Context Protocol (MCP) Server", "vendor": "Fledge", "capabilities": { "tools": true, "streaming": true, "authentication": "api_key" } }, "configSchema": { "type": "object", "properties": { "fledge_api_url": { "type": "string", "description": "Fledge API URL", "default": "http://localhost:8081/fledge" } } } }, "id": "1" }
  2. ツール/リスト
    { "jsonrpc": "2.0", "method": "tools/list", "params": {}, "id": "2" }
    応答: 使用可能なツールとそのパラメータのリストを返します。
  3. ツール/呼び出し
    { "jsonrpc": "2.0", "method": "tools/call", "params": { "name": "get_sensor_data", "parameters": { "sensor_id": "temp1", "limit": 10 } }, "id": "3" }

エラーコード

サーバーは標準の JSON-RPC 2.0 エラー コードに従います。

  • -32700: 解析エラー
  • -32600: 無効なリクエスト
  • -32601: メソッドが見つかりません
  • -32602: 無効なパラメータ
  • -32000: サーバーエラー
ID: 4a3t88dbgq