---
title: 連携サンプル
description: n8n・Make・自作スクリプトなど MCP を直接話せないツールから JSON-RPC で呼び出す設定例
createdAt: 2026-06-17
lastModified: 2026-10-07
---

n8n や Make のように MCP を直接話せないツールからは、**HTTP で JSON-RPC を送る**形で同じツールを呼び出せます。このページでは、その設定例をまとめています。

- MCP クライアント（Claude Desktop など）の設定 → [MCPサーバのセットアップ](/docs/mcp/setup)

以下の `<トークン>` には、[組織設定](/docs/guides/organization#api-トークン)で発行した API トークンを入れてください。

## 呼び出しの基本

| 項目 | 値 |
| --- | --- |
| エンドポイント | `POST https://api.thingsconnect.app/api/mcp` |
| ヘッダ | `Authorization: Bearer <トークン>` |
| | `Content-Type: application/json` |
| | `Accept: application/json, text/event-stream` |
| ボディ | JSON-RPC 2.0（`method` は `tools/list` または `tools/call`） |

サーバはステートレスな Streamable HTTP 構成のため、**セッションを張らずに単発の POST で完結**します。`GET` / `DELETE` は `405` を返します。

### ツール一覧を取得する

```bash
curl -X POST https://api.thingsconnect.app/api/mcp \
  -H "Authorization: Bearer <トークン>" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
```

### ツールを呼び出す

```bash
curl -X POST https://api.thingsconnect.app/api/mcp \
  -H "Authorization: Bearer <トークン>" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{
    "jsonrpc": "2.0",
    "id": 2,
    "method": "tools/call",
    "params": {
      "name": "get_sensor_reading",
      "arguments": { "device_id": "edge-device-01__c9b1d2e3-4a5b-6c7d-8e9f-0a1b2c3d4e5f" }
    }
  }'
```

### レスポンスの読み方

レスポンスは JSON-RPC の形で返り、**ツールの戻り値は `result.content[0].text` に JSON 文字列**として入ります。

```json
{
  "jsonrpc": "2.0",
  "id": 2,
  "result": {
    "content": [{ "type": "text", "text": "{\"device_id\":\"...\",\"value\":12.34,\"unit\":\"kg\"}" }]
  }
}
```

:::warning
`result.content[0].text` は**文字列**です。後続で値を使う前に必ずパースしてください。

エラー時は `result.isError` が `true` になり、`content[0].text` にメッセージが入ります（HTTP は 200 のままです）。**認証に失敗した場合だけ**、ツール呼び出し以前に HTTP `401` が返ります。
:::

## n8n から使う

HTTP Request ノードで上記の JSON-RPC を送ります。

### ワークフロー例（センサ値の監視 → Slack 通知）

```json
{
  "nodes": [
    {
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "parameters": {
        "rule": { "interval": [{ "field": "minutes", "minutesInterval": 5 }] }
      }
    },
    {
      "name": "Get Sensor Reading",
      "type": "n8n-nodes-base.httpRequest",
      "parameters": {
        "method": "POST",
        "url": "https://api.thingsconnect.app/api/mcp",
        "headerParameters": {
          "parameters": [
            { "name": "Authorization", "value": "Bearer <トークン>" },
            { "name": "Accept", "value": "application/json, text/event-stream" }
          ]
        },
        "jsonBody": "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"get_sensor_reading\",\"arguments\":{\"device_id\":\"edge-device-01__c9b1d2e3-4a5b-6c7d-8e9f-0a1b2c3d4e5f\"}}}"
      }
    },
    {
      "name": "Slack Notify",
      "type": "n8n-nodes-base.slack",
      "parameters": {
        "channel": "#factory-alerts",
        "text": "現在の重量: {{ JSON.parse($json.result.content[0].text).value }} kg"
      }
    }
  ]
}
```

`result.content[0].text` は JSON 文字列なので、後続で使う前に**パースが必要**です。

## Make（旧 Integromat）から使う

HTTP モジュールから同じ JSON-RPC を送ります。

1. シナリオエディタで「HTTP > Make a request」モジュールを追加します。
2. 以下のように設定します。

   | 項目 | 値 |
   | --- | --- |
   | URL | `https://api.thingsconnect.app/api/mcp` |
   | Method | `POST` |
   | Headers | `Authorization: Bearer <トークン>` / `Accept: application/json, text/event-stream` |
   | Body type | `Raw` |
   | Content type | `application/json` |
   | Request content | `{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"list_ai_events","arguments":{"ai_app_id":"license-plate","limit":20}}}` |

3. 「Parse JSON」モジュールで `result.content[0].text` をパースし、後続モジュールで利用します。

### 監視シナリオの組み方

**サーバ起点の通知は受け取れません**（ステートレス構成のため）。定期実行して自前で判定する形にします。

- **トリガー**: スケジュール（5 分ごと）
- **HTTP**: 値を取るツールを呼び出す
- **Parse JSON**: `result.content[0].text` をパース
- **Router**: 条件に一致するルートと、しないルートに分岐
- **Email / Slack**: 一致 → 通知

:::warning
AI アプリのイベント（`list_ai_events`）に入るのは、在/不在ルールの切り替わりとナンバーの読み取りだけです。件数などの数値を監視したい場合は、[AI 推論デバイス](/docs/guides/inference)を登録したうえで `get_sensor_history` や `run_query` を使ってください。

イベントが起きた瞬間に知らせたい場合は、定期実行よりも[トリガー](/docs/guides/ai-apps#連携トリガー)が向いています。
:::

## 自作スクリプトから使う

同じ JSON-RPC を送るだけです。センサ値を 5 分ごとに取得して閾値判定する例です。

```bash
#!/usr/bin/env bash
set -euo pipefail

ENDPOINT="https://api.thingsconnect.app/api/mcp"
TOKEN="<トークン>"
DEVICE_ID="edge-device-01__c9b1d2e3-4a5b-6c7d-8e9f-0a1b2c3d4e5f"

value=$(curl -sS -X POST "$ENDPOINT" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"get_sensor_reading\",\"arguments\":{\"device_id\":\"$DEVICE_ID\"}}}" \
  | jq -r '.result.content[0].text' | jq -r '.value')

echo "現在値: $value"
```

利用できるツールの全一覧とパラメータは[利用可能なMCPツール一覧](/docs/mcp/tools)にあります。
