mcpField
S
Senlay Physical Context

Senlay Physical Context

リモート
github.com/smartsurfsolar地図・旅行08 週間前に更新
リポジトリ

Senlay Physical Context について

Senlay Physical Contextは、屋外で動作するシステム向けに、出所情報付きの物理環境データと実行可能性チェックを提供します。オープンプロトコル、JavaScript SDK、エッジゲートウェイのスターターで独立運営のセンサーを接続し、利用できない入力も明示します。

主な機能

  1. 01地点の物理環境情報を取得
  2. 02活動の実行可能性を確認
  3. 03対応ドメインを一覧表示
  4. 04証拠の出所情報を保持
  5. 05利用できない入力を明示

活用シーン

  1. 01屋外活動の地点条件を確認
  2. 02エージェントの行動前に実行可能性を評価
  3. 03直接観測と過去の状況を区別

MCP 対応

公開されたステートレスなStreamable HTTP MCPサーバーは、sense_location、check_operability、list_domainsを公開します。証拠の出所情報を保ち、入力がない場合は値を作らず明示します。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://senlay.cloud/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

ツール

4
パラメーター型必須説明
latnumberはい緯度(-90~90)。
lngnumberはい経度(-180~180)。
timestringいいえ任意の ISO 8601 時刻。このリリースでは現在の状況のみをサポートします(現在時刻から 10 分以内)。
domainenumいいえ運用領域。デフォルトは general です。general | kitesurfing | surfing | sailing | drone | paragliding | hiking | agriculture | construction | running

詳細

Senlay — 外界で行動するシステムのための検証済み物理コンテキスト

これは Senlay オープンネットワークです。独立して運用されるセンサーを、検証済みの物理コンテキストに接続するためのオープンプロトコル、JavaScript SDK、エッジゲートウェイのスターターキットを提供します。

senlay.cloud · API ドキュメント

インストール不要で AI エージェントを MCP に接続

公開されているステートレスな Streamable HTTP エンドポイントを、MCP 対応クライアントに追加してください。匿名の試用アクセスにはサインアップも OAuth も必要ありません。

{
  "mcpServers": {
    "senlay": {
      "url": "https://senlay.cloud/mcp"
    }
  }
}

MCP 2026-07-28 サーバーが公開するツールは、sense_location、check_operability、list_domains の3つのみです。Senlay のエビデンスの出所情報を保持し、入力が利用できない場合は値を捏造せず、その旨を明示します。アカウントの利用枠を使うには、サーバーヘッダーに Authorization: Bearer sl_live_... を追加してください。運用可能性の結果は意思決定の支援情報であり、最終的な判断は人間が行います。

公式 MCP Registry のメタデータは server.json で提供されています。バージョン 1.0.0 は、ライブエンドポイントとスキーマの検証後、io.github.smartsurfsolar/senlay として公開されています。

ここでオープンになっているもの

  • ベンダーに依存しない観測エンベロープと JSON Schema
  • 決定論的な検証と正規化
  • プロバイダーからゲートウェイへの転送用 HMAC リクエスト署名
  • 互換性のあるあらゆる取り込みエンドポイントに対応する JavaScript クライアント
  • 転送前に検証を行う小型のエッジゲートウェイ
  • アダプターのサンプルと自動テスト

本番用の集約エンジン、グローバルレジストリ、認証、課金、プロバイダー認証情報、過去の場所別メモリーコーパス、リスクモデル、商用コネクターは、非公開の senlay-platform-core リポジトリに残されています。

公開ウェブサイトのソースは senlay-world で個別に管理されており、正式なドメインは senlay.cloud です。公開・非公開の区分とブランチポリシーについては、リポジトリの境界を参照してください。

ステータス

これは最初の 0.x プロトコルリリースです。認証済み Senlay アカウントでは、senlay.cloud でセルフサービスによるステーション登録と、署名付き観測データの取り込みを利用できます。サーバーが保持するのは、復元不可能な各ステーションシークレットのハッシュのみです。返されたシークレットは、必ず保存してください。

ネットワークはまだ始まったばかりで、カバレッジの保証も SLA もありません。一般提供中とはしていません。

ステーションをライブネットワークに接続

まず、senlay.cloud/register.html で通常のアカウントを作成し、次にダッシュボードで API キーを作成して、表示されたら保存してください。保存済みのキーは取得できません。紛失した場合は、新しいキーを作成してください。プロバイダーとステーションの管理にはアカウントキーを使用し、観測データの署名にはステーションシークレットのみを使用してください。

# Create a provider with your account API key.
curl -sS -X POST https://senlay.cloud/api/v1/providers/register \
  -H "Authorization: Bearer $API_KEY" -H 'content-type: application/json' \
  --data '{"name":"My community network","slug":"my-community-network"}'

# Substitute the returned prv_... ID. Save the returned station secret now.
curl -sS -X POST https://senlay.cloud/api/v1/stations/register \
  -H "Authorization: Bearer $API_KEY" -H 'content-type: application/json' \
  --data '{"providerId":"prv_REPLACE_ME","name":"Beach wind station","sensorType":"weather_station","location":{"lat":15.8801,"lng":108.3380}}'

ライブデータを公開する前に、ダッシュボードの Send signed test 操作を使って、偽の観測データを保存することなく、ステーションシークレットとペイロードの形式を確認してください。その後、返された stationId と、ネットワークプロトコルで説明されている X-Senlay-* 署名ヘッダーを使用して、https://senlay.cloud/api/v1/observations に公開してください。

近隣で受け入れられた観測データは、後続の認証済み /api/v1/sense および /api/v1/pwm レスポンスに、明示的にラベル付けされたステーションからの直接エビデンスとして表示されます。確認済みのステーション測定値は、同じ場所と季節に対する Senlay のローカルメモリーのベースラインにも反映されます。これらのベースラインは過去のコンテキストであり、現在のエビデンスではありません。

5 分で始める Python ステーション

Python コネクターは標準ライブラリのみを使用するため、Raspberry Pi や一般的なコンピューターでもパッケージのインストールは不要です。ダッシュボードから返された stationId と一度限りのステーションシークレットをコピーし、シミュレートした観測データをローカルでプレビューします。

git clone https://github.com/smartsurfsolar/senlay-platform.git
cd senlay-platform
export SENLAY_STATION_ID='stn_REPLACE_ME'
export SENLAY_STATION_SECRET='sl_station_REPLACE_ME'
python3 python/simulator.py --seed 1

プレビューモードでは Senlay に接続しません。読み取りを保存せずに署名とペイロードを検証するには、アカウントの API キーを追加し、コミッショニング用エンドポイントを使用します。

export SENLAY_ACCOUNT_API_KEY='sl_live_REPLACE_ME'
python3 python/simulator.py --dry-run --seed 1

生成データを使ってライブ取り込みを試すには、--publish を使用します。シミュレーターの読み取りは常に estimated としてマークされ、simulated: true が設定されるため、検証済み読み取りの場所メモリーベースラインには入りません。

python3 python/simulator.py --publish --count 3 --interval 10 --seed 1

実際の風速センサーを使う場合は、その読み取り値をパブリッシャーに渡します。デフォルトの品質は raw です。アダプターとセンサーの校正によってその品質を裏付けられる場合に限り、--quality checked を使用してください。

python3 python/publish_reading.py \
  --lat 15.8801 --lng 108.3380 \
  --wind-speed 7.4 --wind-direction 62

別のセンサープロセスを直接接続するには、python/senlay_client.py から SenlayClient と observation をインポートします。

ライブ API を試す — インストール不要

CREDS="$(curl -sS -X POST https://senlay.cloud/api/v1/agent-register -H 'content-type: application/json' --data '{"ownerEmail":"[email protected]","agentName":"my-first-agent"}')"; printf '%s\n' "$CREDS"
API_KEY="$(printf '%s' "$CREDS" | sed -n 's/.*"apiKey":"\([^"]*\)".*/\1/p')"
curl -sS -H "Authorization: Bearer $API_KEY" "https://senlay.cloud/api/v1/sense?lat=15.8801&lng=108.3380&field=kitesurfing"

最初のコマンドで表示された apiKey と recoveryToken は、どちらも保存してください。それぞれ一度しか返されません。[email protected] と my-first-agent をご自身の情報に置き換えてください。

ローカル SDK とゲートウェイ

npm install
npm test
cp .env.example .env
npm run gateway

サンプルの観測データをローカルゲートウェイに送信します。

npm run example

ゲートウェイは観測データをローカルで検証します。認可済みの互換性のある取り込みエンドポイントに転送するには、SENLAY_INGEST_URL を設定します。

MQTT ブリッジ(オプション)

MQTT ブローカーに JSON 形式の観測データを送信するハードウェアの場合は、.env で MQTT 変数を設定して、次のコマンドを実行します。

npm run mqtt-bridge

ブリッジは SENLAY_MQTT_TOPIC をサブスクライブし、SDK を通じてすべてのメッセージを検証し、ステーションシークレットで署名してから HTTPS 取り込みエンドポイントに転送します。ステーションごとにブリッジ認証情報を1つ使用してください。ステーションシークレットを複数のデバイスで共有しないでください。

ブランチ

  • main:安定した公開リリース
  • develop:現在進行中の公開開発

変更はフィーチャーブランチから develop に移り、レビューとテストの後に main に反映されます。CONTRIBUTING.md を参照してください。

最小限の SDK サンプル

import { SenlayClient } from '@senlay/open-network';

const client = new SenlayClient({
  endpoint: 'https://senlay.cloud/api/v1/observations',
  providerId: 'prv_REPLACE_ME',
  signingSecret: process.env.SENLAY_STATION_SECRET
});

await client.publish({
  stationId: 'stn_REPLACE_ME',
  observedAt: new Date().toISOString(),
  location: { lat: 15.8801, lon: 108.3380 },
  measurements: [{ phenomenon: 'wind.speed', value: 7.4, unit: 'm/s' }]
});

ライセンス

Apache-2.0。同じライセンスのもとで、コントリビューションを歓迎します。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。