Senlay Physical Context について
Senlay Physical Contextは、屋外で動作するシステム向けに、出所情報付きの物理環境データと実行可能性チェックを提供します。オープンプロトコル、JavaScript SDK、エッジゲートウェイのスターターで独立運営のセンサーを接続し、利用できない入力も明示します。
主な機能
- 01地点の物理環境情報を取得
- 02活動の実行可能性を確認
- 03対応ドメインを一覧表示
- 04証拠の出所情報を保持
- 05利用できない入力を明示
活用シーン
- 01屋外活動の地点条件を確認
- 02エージェントの行動前に実行可能性を評価
- 03直接観測と過去の状況を区別
MCP 対応
公開されたステートレスなStreamable HTTP MCPサーバーは、sense_location、check_operability、list_domainsを公開します。証拠の出所情報を保ち、入力がない場合は値を作らず明示します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://senlay.cloud/mcpclaude mcp add --transport http smartsurfsolar-senlay https://senlay.cloud/mcp{"mcpServers":{"smartsurfsolar-senlay":{"type":"http","url":"https://senlay.cloud/mcp"}}}Cursor で開く{"servers":{"smartsurfsolar-senlay":{"type":"http","url":"https://senlay.cloud/mcp"}}}VS Code で開く{"mcpServers":{"smartsurfsolar-senlay":{"type":"http","url":"https://senlay.cloud/mcp"}}}{"mcpServers":{"smartsurfsolar-senlay":{"serverUrl":"https://senlay.cloud/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
4| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| lat | number | はい | 緯度(-90~90)。 |
| lng | number | はい | 経度(-180~180)。 |
| time | string | いいえ | 任意の ISO 8601 時刻。このリリースでは現在の状況のみをサポートします(現在時刻から 10 分以内)。 |
| domain | enum | いいえ | 運用領域。デフォルトは general です。general | kitesurfing | surfing | sailing | drone | paragliding | hiking | agriculture | construction | running |
詳細
Senlay — 外界で行動するシステムのための検証済み物理コンテキスト
これは Senlay オープンネットワークです。独立して運用されるセンサーを、検証済みの物理コンテキストに接続するためのオープンプロトコル、JavaScript SDK、エッジゲートウェイのスターターキットを提供します。
インストール不要で 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。同じライセンスのもとで、コントリビューションを歓迎します。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。