プロトタイプ · プレビュー版:公式レジストリのすべてのサーバーを掲載し、30分ごとに同期しています。Google でログインするとレビューを書けます。
PopNx MCPAIを使う人のためのMCPサーバー · やさしい言葉で解説

Thingctx

作者:thingctxバージョン 0.2.2i★ 16iパソコンで動く
レジストリ名com.thingctx/thingctx

インストール方法

概要

作者による説明(英語の原文)

Drive devices and APIs from their W3C Thing Description. You gate every operation.

できること

このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。

  • 接続方法: パソコンで動く
  • トランスポート: stdio
  • カテゴリ: その他

インストール

使っているAIアプリを選んで、設定をコピーしてください。

チェック 3/3 合格 · あなたのパソコンで動きます

まず:どの AI を使っていますか?

使っているアプリを選ぶと、下に手順が表示されます。

Claude につなげますが、先に準備が必要です

Thingctx のキーが必要です(提供元のサイトで登録、費用がかかる場合あり) · 先にパソコンへ Python (uv) を入れてください(1 回だけ) · パソコン版 Claude アプリ(Windows または Mac)のみ。Web やスマホでは使えません

  1. Python (uv) を入れる

    1 回だけ。Python (uv) が必要なすべてのサーバーで使えます

    Python (uv) のダウンロードページを開く ↗

  2. Thingctx に登録してキーを作る

    提供元のサイトで登録し、次の手順で使う API キーを作ります。費用がかかる場合があります。

    Thingctx のサイトを開く ↗

  3. パソコン版 Claude アプリの設定ファイルを開く

    SettingsDeveloperEdit Config

  4. この設定を貼り付けて保存

    {
      "mcpServers": {
        "thingctx": {
          "command": "uvx",
          "args": [
            "thingctx",
            "--from",
            "thingctx[mcp,http,mqtt,media,filesystem,authz]",
            "thingctx-mcp",
            "https://td.thingctx.com/index.json"
          ],
          "env": {
            "THINGCTX_POLICY": "your-value",
            "THINGCTX_APPROVE_WHEN": "your-value",
            "THINGCTX_FS_ROOT": "your-value"
          }
        }
      }
    }

    キーはアプリの入力欄にだけ貼り付け、チャットに貼ったり人に送ったりしないでください

  5. Claude を終了してもう一度開く

  6. 試してみる

    Thingctx を使って、私に何ができるか教えて、1 つやってみせて

    ✓ Claude が Thingctx を使っていると言うか、回答に Thingctx のツール名が出れば接続成功です

メニュー名は 2026年11月11日 に Anthropic のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります

ChatGPT はまだ Thingctx につなげません

Thingctx はパソコンに入れて使うものですが、ChatGPT は Web 上で動くサーバーにしかつなげません

代わりにできること

A · Thingctx につなげるアプリを使う

  • Thingctx のキーが必要です(提供元のサイトで登録、費用がかかる場合あり) · 先にパソコンへ Python (uv) を入れてください(1 回だけ) · パソコン版 Claude アプリ(Windows または Mac)のみ。Web やスマホでは使えません
  • Thingctx のキーが必要です(提供元のサイトで登録、費用がかかる場合あり) · 先にパソコンへ Python (uv) を入れてください(1 回だけ)
  • Thingctx のキーが必要です(提供元のサイトで登録、費用がかかる場合あり) · 先にパソコンへ Python (uv) を入れてください(1 回だけ)
  • Thingctx のキーが必要です(提供元のサイトで登録、費用がかかる場合あり) · 先にパソコンへ Python (uv) を入れてください(1 回だけ)

B · その他 の中で ChatGPT につなげる別のサーバー

同じカテゴリでよく使われているものから、キーなしでアドレスだけでつなげるものを選びました

Claude Code につなげますが、先に準備が必要です

Thingctx のキーが必要です(提供元のサイトで登録、費用がかかる場合あり) · 先にパソコンへ Python (uv) を入れてください(1 回だけ)

  1. Python (uv) を入れる

    1 回だけ。Python (uv) が必要なすべてのサーバーで使えます

    Python (uv) のダウンロードページを開く ↗

  2. Thingctx に登録してキーを作る

    提供元のサイトで登録し、次の手順で使う API キーを作ります。費用がかかる場合があります。

    Thingctx のサイトを開く ↗

  3. ターミナルを開く

    Mac:Command+スペースで Terminal と入力 · Windows:PowerShell を開く

  4. このコマンドを貼り付けて Enter

    claude mcp add thingctx --env THINGCTX_POLICY=your-value --env THINGCTX_APPROVE_WHEN=your-value --env THINGCTX_FS_ROOT=your-value -- uvx thingctx --from 'thingctx[mcp,http,mqtt,media,filesystem,authz]' thingctx-mcp https://td.thingctx.com/index.json

    Enter の前に「your-value」を自分のキーに書き換えてください

    キーはアプリの入力欄にだけ貼り付け、チャットに貼ったり人に送ったりしないでください

  5. Claude Code で /mcp と入力

    Thingctx が一覧にあり、接続済みと表示されれば OK です

  6. 試してみる

    Thingctx を使って、私に何ができるか教えて、1 つやってみせて

    ✓ Claude Code が Thingctx を使っていると言うか、回答に Thingctx のツール名が出れば接続成功です

メニュー名は 2026年11月11日 に Anthropic のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります

Cursor につなげますが、先に準備が必要です

Thingctx のキーが必要です(提供元のサイトで登録、費用がかかる場合あり) · 先にパソコンへ Python (uv) を入れてください(1 回だけ)

  1. Python (uv) を入れる

    1 回だけ。Python (uv) が必要なすべてのサーバーで使えます

    Python (uv) のダウンロードページを開く ↗

  2. Thingctx に登録してキーを作る

    提供元のサイトで登録し、次の手順で使う API キーを作ります。費用がかかる場合があります。

    Thingctx のサイトを開く ↗

  3. このボタンで Cursor を開く

    Cursor で開く

    Cursor がインストールの確認をするので Install を押します

  4. キーを入力

    Thingctx の設定で THINGCTX_POLICY, THINGCTX_APPROVE_WHEN, THINGCTX_FS_ROOT が空です。自分のキーを入れて保存します

    キーはアプリの入力欄にだけ貼り付け、チャットに貼ったり人に送ったりしないでください

  5. Cursor の AI チャットを Agent モードで開く

  6. 試してみる

    Thingctx を使って、私に何ができるか教えて、1 つやってみせて

    ✓ Cursor が Thingctx を使っていると言うか、回答に Thingctx のツール名が出れば接続成功です

メニュー名は 2026年11月11日 に Cursor のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります

VS Code につなげますが、先に準備が必要です

Thingctx のキーが必要です(提供元のサイトで登録、費用がかかる場合あり) · 先にパソコンへ Python (uv) を入れてください(1 回だけ)

  1. Python (uv) を入れる

    1 回だけ。Python (uv) が必要なすべてのサーバーで使えます

    Python (uv) のダウンロードページを開く ↗

  2. Thingctx に登録してキーを作る

    提供元のサイトで登録し、次の手順で使う API キーを作ります。費用がかかる場合があります。

    Thingctx のサイトを開く ↗

  3. このボタンで VS Code を開く

    VS Code で開く

    VS Code がインストールの確認をするので Install を押します

  4. キーを入力

    Thingctx の設定で THINGCTX_POLICY, THINGCTX_APPROVE_WHEN, THINGCTX_FS_ROOT が空です。自分のキーを入れて保存します

    キーはアプリの入力欄にだけ貼り付け、チャットに貼ったり人に送ったりしないでください

  5. VS Code の AI チャットを Agent モードで開く

  6. 試してみる

    Thingctx を使って、私に何ができるか教えて、1 つやってみせて

    ✓ VS Code が Thingctx を使っていると言うか、回答に Thingctx のツール名が出れば接続成功です

メニュー名は 2026年11月11日 に VS Code のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります

Windsurf、Zed、Gemini CLI など MCP を使える他のアプリは追加方法がそれぞれ違います。アプリ一覧で確認してください

MCP を使えるアプリをすべて見る →

JSON 設定は下の「開発者向け」にあります

つまずいたら?Thingctx を使っている人に聞いてみましょう💬 ディスカッション →
開発者向け:ターミナルのコマンドと JSON 設定

パソコンにインストール

Claude Code

claude mcp add thingctx --env THINGCTX_POLICY=your-value --env THINGCTX_APPROVE_WHEN=your-value --env THINGCTX_FS_ROOT=your-value -- uvx thingctx --from 'thingctx[mcp,http,mqtt,media,filesystem,authz]' thingctx-mcp https://td.thingctx.com/index.json

Claude Desktop (claude_desktop_config.json)

{
  "mcpServers": {
    "thingctx": {
      "command": "uvx",
      "args": [
        "thingctx",
        "--from",
        "thingctx[mcp,http,mqtt,media,filesystem,authz]",
        "thingctx-mcp",
        "https://td.thingctx.com/index.json"
      ],
      "env": {
        "THINGCTX_POLICY": "your-value",
        "THINGCTX_APPROVE_WHEN": "your-value",
        "THINGCTX_FS_ROOT": "your-value"
      }
    }
  }
}

Cursor (~/.cursor/mcp.json)

{
  "mcpServers": {
    "thingctx": {
      "command": "uvx",
      "args": [
        "thingctx",
        "--from",
        "thingctx[mcp,http,mqtt,media,filesystem,authz]",
        "thingctx-mcp",
        "https://td.thingctx.com/index.json"
      ],
      "env": {
        "THINGCTX_POLICY": "your-value",
        "THINGCTX_APPROVE_WHEN": "your-value",
        "THINGCTX_FS_ROOT": "your-value"
      }
    }
  }
}

VS Code (mcp.json)

{
  "servers": {
    "thingctx": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "thingctx",
        "--from",
        "thingctx[mcp,http,mqtt,media,filesystem,authz]",
        "thingctx-mcp",
        "https://td.thingctx.com/index.json"
      ],
      "env": {
        "THINGCTX_POLICY": "your-value",
        "THINGCTX_APPROVE_WHEN": "your-value",
        "THINGCTX_FS_ROOT": "your-value"
      }
    }
  }
}

自分で入力する値

  • THINGCTX_POLICY env
    What the agent may do: read-only | full.
  • THINGCTX_APPROVE_WHEN env
    When the agent asks before acting: declared | destructive | all | never.
  • THINGCTX_FS_ROOT env
    Sandbox directory for the filesystem Thing. Unset = refuse every filesystem call.

この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。

ひと目でわかる

週あたりのダウンロードi
106/週
確認済みドメイン
✓ thingctx.com
接続方法
パソコンで動く
最新バージョンi
0.2.2
カテゴリi
その他
レジストリ公開日i
2026年7月27日
コードの最終更新i
2026年11月9日
作者
thingctx
パッケージ
pypi: thingctx
ウェブサイト
thingctx.com
レジストリでの状態
有効

使えるアプリ

このサーバーのつなぎ方と、各アプリの公式ドキュメントに基づきます。2026年11月10日に確認。

パソコン上で動かせるアプリ

ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast

すべてのアプリと長所・短所 →

できること

パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。

基本チェックi

誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月11日にチェック

  • ✓ 合格

    作者とリポジトリが一致

    レジストリ名はドメイン thingctx.com で確認済みです(レジストリがドメインの所有を確認しています)

  • ✓ 合格

    今もメンテナンスされている

    コードの最終更新:一昨日

  • ✓ 合格

    ライセンスがある

    Apache-2.0を使用

  • – 対象外

    エンドポイントが応答する

    これはパソコンで動くため、インターネット上のエンドポイントはありません

  • – 対象外

    OAuthでサインイン

    パソコンで動き、代わりにローカルの設定を使います

  • … 未チェック

    ツールの説明に隠れた指示がない

    パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです

話し合い

質問、コツの共有、使えないことの報告ができます。「役に立った」の多い順です。

まだ投稿はありません。最初の質問や共有をどうぞ。

ここの投稿は利用者によるもので、PopNx チームのものではありません。

Google でログインして投稿

ユーザーレビュー

まだレビューはありません

Google でログインしてレビューを書く

その他のほかのサーバーとの比較i

  • このカテゴリのほかの19235件のうち97%よりスターが多い
  • このカテゴリのほかの19235件のうち16%より最近レジストリに公開
  • 基本チェックの結果が、このカテゴリのほかの19235件のうち100%と同じかそれ以上

レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。

よくある質問

Thingctxは安全ですか?

当てはまる基本チェック3項目のうち3項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。

どんなキーやコードが必要ですか?

レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。

パソコンで動きますか、それともクラウドですか?

あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。

今もメンテナンスされていますか?

GitHubリポジトリの最終更新は一昨日、最新バージョン(0.2.2)がレジストリに届いたのは4 か月前です。

どのアプリで使えますか?

Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにPython (uv)も必要です。

代わりに使えるものは?

同じカテゴリには:World Monitor, Claude Flow, Tldraw

代わりの候補

同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。

カードの見方:↓ 週あたりのダウンロードi★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i

World Monitor

Real-time global intelligence on conflict, markets, energy, trade, shipping and cyber. 102 tools.

作者:koala73広く使われている★ 9万6 日前更新

クラウドで動く✓ worldmonitor.app

Claude Flow

AI orchestration with hive-mind swarms, neural networks, and 87 MCP tools for enterprise dev.

作者:ruvnet広く使われている↓ 1.4万/週★ 8.1万14 か月前更新

パソコンで動く

Tldraw

Draw and visually collaborate with your agents on tldraw's canvas.

作者:tldraw広く使われている★ 5.1万8 か月前更新

クラウドで動く

作者のREADME

READMEを開く

作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。

thingctx

thingctx turns a description of any API, device, or local process into tools an AI agent can call: authorized per operation, over the system's own transport, and the agent never holds your keys. The description is a W3C Web of Things Thing Description (a TD), a plain JSON file naming what the system can do. Write one, or compile it from an OpenAPI spec. The described system is the server, so you run no server per integration.

A "Thing" is whatever you want to describe: a REST API, an app, a sensor, a media server, a local object, or one system that is several of those at once. A media server takes commands over HTTP and serves its stream over RTSP. The pump in examples/ reads over MQTT and acts through a local call. Each is one Thing and one description.

A description names actions, properties, and events, and gives each one a form: the entry that says where and how to reach it. The URL scheme in that address picks the transport per call, so however many protocols one Thing spans, the agent still sees one tool set.

docs/BINDINGS.md covers the transports and how to add your own. A subprocess transport, exec, also ships, and it ships locked: it refuses every command until you hand it an explicit allowlist.

Those three stay distinct all the way to the call. A read, a write, and a subscribe do not collapse into one undifferentiated function, which is why the gate can allow the read and refuse the write on the same system. A flat list of functions has no such handle.

Pick your path: use it as a library if you own the agent loop, the command line if you do not want to write code, the MCP bridge if your host only speaks MCP, or add a transport if thingctx does not speak your protocol yet.

Stuck, or wondering whether something is possible? Ask in Discussions. Want to build something small? The open issues say what would help.

First run: no keys, no network

One paste shows the whole idea. The description is inline and the handler ships with the package, so nothing here needs a key, a network, or a second file:

pip install thingctx
import asyncio

import thingctx from thingctx.contrib.time import make_time_handler

TD = { "@context": "https://www.w3.org/2022/wot/td/v1.1", "id": "urn:thingctx:time", "title": "Time", "securityDefinitions": {"nosec_sc": {"scheme": "nosec"}}, "security": ["nosec_sc"], "actions": { "getCurrentTime": { "description": "Current time in an IANA timezone (default UTC).", "input": { "type": "object", "properties": {"timezone": {"type": "string"}}, }, "safe": True, "idempotent": True, "forms": [{"href": "local://getCurrentTime"}], } }, }

async def main(): client = thingctx.ThingClient(tds=[TD], bindings=[thingctx.LocalBinding(make_time_handler())]) tools, invoke = client.as_tools() # specs for your model; invoke runs a call print("tools:", t["function" for t in tools]) print(await invoke("time__getCurrentTime", {"timezone": "UTC"}))

asyncio.run(main())

tools: ['time__getCurrentTime'] {'timezone': 'UTC', 'datetime': '2026-07-26T15:59:03.233080+00:00', 'utc_offset': '+0000'}

That is the whole loop: a description in, tools out, calls routed. LocalBinding is a binding, a transport implementation; this one routes the local:// address to the handler you pass it. Every other transport works the same way; only the form's href changes.

Install

pip install 'thingctx[llm,http,validate]'

Quote the argument; unquoted brackets fail in zsh. Base pip install thingctx has no dependencies; it already includes the local and exec transports. Redis support is pip install 'thingctx[redis]'. Every optional transport and capability has an extra, listed in pyproject.toml; each one this page uses is named next to the code that needs it.

The document

A description can be small. This one drives the live, key free Open-Meteo forecast API, so it runs as written. Save it as weather.td.json, a later example uses it:

{

"@context": "https://www.w3.org/2022/wot/td/v1.1", "id": "urn:example:weather:v1", "title": "Weather", "securityDefinitions": { "nosec_sc": { "scheme": "nosec" } }, "security": ["nosec_sc"], "actions": { "forecast": { "input": { "type": "object", "properties": { "latitude": { "type": "number" }, "longitude": { "type": "number" }, "current": { "type": "string" } }, "required": ["latitude", "longitude"] }, "forms": [{ "href": "https://api.open-meteo.com/v1/forecast", "htv:methodName": "GET" }] } } }

thingctx projects each action to a tool named __ : this file yields weather__forecast (a version segment on the id is dropped). docs/MAPPING.md specifies the full projection. The description carries no secrets, so it is safe to commit and share. The secret is supplied at runtime to the binding that carries the call. Secrets are keyed per Thing.

If your system already has an OpenAPI 3.x spec, you do not have to author a description at all:

pip install 'thingctx[openapi]'

thingctx import openapi https://api.example.com/openapi.json --out api.td.json

The spec can be a file or a URL, JSON or YAML; --base-url, --id, and --title override what the spec says. The result is a normal description, so everything else here applies to it unchanged.

Ready made descriptions for common apps, developer tools, and devices live at td.thingctx.com.

Use it as a library

Own the agent loop? Read descriptions, hand the specs to your model, and route each call back through invoke. ThingClient needs no LLM and has no opinion on what chose the action; any code can drive it. This sketch shows the surface against a folder describing a pump; from_arg turns a path or URL into a registry of descriptions:

import thingctx

async def run(): # a sketch, not a program: call it from your own loop client = thingctx.ThingClient.from_registry(thingctx.from_arg("./descriptions/")) specs, invoke = client.as_tools()

await invoke("pump__set_speed", {"rpm": 1500}) await client.read_property("pump__rpm") await client.write_property("pump__target_rpm", 1500) # gated like invoke async for evt in await client.subscribe( "pump__overheat" ): # subscribe returns an async iterator ...

The form picks the transport per call, so one client can read over HTTP, subscribe over MQTT, and read or write cached properties over Redis. Bindings that pull optional dependencies, including MQTT and Redis, are off by default: install the extra and pass bindings=thingctx.BindingRegistry.default(mqtt=True, redis=True).

Want the loop handled for you? The llm extra runs any provider through litellm; add the http extra, since the weather file's form is HTTPS. Set your provider key in its usual variable (OPENAI_API_KEY, ANTHROPIC_API_KEY, and so on) and pick a model with THINGCTX_MODEL:

import asyncio

import thingctx

async def main():

weather.td.json from above; it points at a live, key free API

host = thingctx.from_file("weather.td.json") print(await host.chat("What is the forecast for Cairo? Latitude 30.0, longitude 31.2."))

asyncio.run(main())

The model calls weather__forecast itself and answers in prose:

The forecast for Cairo is clear, around 34 C.

Safety: approval and authorization

Two opt in layers stand between an agent and a real system; both run before any transport is selected. Neither layer handles a credential. The binding holds the secret and the model never sees it.

Approval gates risky calls behind a human. Risk is read from the description, and when to gate is yours: declared (only actions the description marks risky; the default), destructive (adds non idempotent actions and every property write), all, or never. A gated call with no approver is denied: a gate with nobody to open it stays shut. The check sits inside invoke and write_property, so it covers the LLM loop, direct callers, and the MCP bridge alike.

Carrying on from the first example above, with the same TD:

def approve(req):  # sync or async; return True to allow

return input(f"run {req.tool_name}{req.arguments}? [y/N] ").lower() == "y"

client = thingctx.ThingClient( tds=[TD], bindings=[thingctx.LocalBinding(make_time_handler())], approve=approve, approve_when="all", )

Authorization decides from policy, per caller, per operation. Pass a pdp and an identity and every call authorizes the resolved (thing, affordance, operation) before it reaches the system; an affordance is an action, property, or event named in the description. This snippet condenses examples/14_authz.py, which runs as is on the core install. It defines the TD and Pump used below: a pump with one property, target_rpm.

from thingctx import LocalBinding, ThingClient

from thingctx.authz import LocalPolicyGrantSource, PolicyDecisionPoint, build_vocabulary

reader = ThingClient( tds=[TD], bindings=[LocalBinding(Pump())] ) # no pdp yet; parsed only to read the description vocab = build_vocabulary(reader.things) # the closed set the description declares

grants = LocalPolicyGrantSource({"operator": {("urn:demo:pump", "target_rpm", "readproperty")}}) pdp = PolicyDecisionPoint(vocabulary=vocab, grant_source=grants) identity = {"sub": "alice", "roles": ["operator"]} # claims, validated upstream

client = ThingClient(tds=[TD], bindings=[LocalBinding(Pump())], pdp=pdp, identity=identity)

Alice's operator role grants read on target_rpm and nothing else, so her reads pass and her writes are refused. The vocabulary is closed: a grant is honored only for operations the description declares. thingctx.authz imports no crypto and runs on the dependency free core. Identity is claims that something upstream validated, never the credential itself.

Running the example prints:

vocabulary (grantable tuples the TD declares):

(urn:demo:pump, target_rpm, readproperty) (urn:demo:pump, target_rpm, writeproperty)

READ target_rpm -> ALLOWED, device returned 1200 WRITE target_rpm -> DENIED, grant does not include ('urn:demo:pump', 'target_rpm', 'writeproperty')

RE-READ target_rpm -> 1200 (unchanged: the denied write never ran)

The full model is in docs/SECURITY.md.

The MCP bridge

Some agents only take tools over MCP. For those, thingctx ships one generic MCP server, with no per integration server. It serves any registry of descriptions: a folder, a URL, or a W3C Thing Description Directory. A Directory is the standard catalog server for descriptions.

pip install 'thingctx[mcp,http]'

thingctx-mcp ./descriptions/

For Claude D

冒頭だけを表示しています。続きはリポジトリで読めます