
デジタルコア · MCPサーバー
機械は統語に住まう
DWFWコアにはMCP(Model Context Protocol)サーバーが含まれ、エージェント(Claudeその他のMCPクライアント)が観測所・カルトグラフィ・Event Stackを読み、機械の出所を持つ接続を提案できる。接続の確認、意味の付与、工程の前進はできない。それを禁じるのはサービスユーザーのRBACであり、エージェントの善意ではない。
サーバー https://dwfw.trabemflex.com/mcp · OAuth · stdioAPIガイドコードと手順 · GitHub
01
これは何か
MCP(Model Context Protocol)は、言語モデルを外部ツールにつなぐオープンなプロトコル。dwfwサーバーには同じロジックを共有する2つのトランスポートがある:ローカル開発用のstdio(mcp/index.mjs)と、本番用のStreamable HTTP(https://dwfw.trabemflex.com/mcp)。どちらもエージェントの呼び出しをコアのREST APIへのリクエストに変換する。APIガイドが記述しているのと同じAPIで、権限も同じ。
役割分担はドクトリンそのもの:機械は統語に、人間は意味に住まう。接続したエージェントは形式的なパターンを見つけて接続を提案できる。人間のキュレーターがパネルで確認するか却下する。サーバーは権限を与えない。決めるのはコアのRBACであり、investigadorロールのサービスユーザーを通して働く。
接続したエージェントが今できること:作品・著者・ノードの検索と閲覧、カルトグラフィーの走査、Event Stackのプログラム参照、そして作品とノードの間の接続の提案(「提案」状態・出所は機械として入る)。できないこと:その提案の確定、意味の付与、ムーブメントの前進、ユーザー・資格情報・非公開アセットの閲覧や操作。推奨の接続はワンクリックのOAuth 2.1(HubSpotやSlackのコネクタと同じ):同意画面でDWFWユーザーとして認可すればクライアントは接続され、トークンのコピーは不要。各セッションは個人に属し、監査ログに残り、自動で失効し、管理画面で失効できる。OAuthを話さないクライアント向けにトークン方式も残っている。
02
ワンクリック接続(OAuth)
推奨の方法。サーバーはOAuth 2.1(動的クライアント登録とPKCE)を実装しており、HubSpotやSlackのコネクタと同じ流れ:同意画面でDWFWユーザーとして認可すればクライアントは接続され、トークンの手動コピーは不要。各セッションは個人に属し(監査ログにメールが残る)、管理画面(MCPセッション)で失効でき、自動でも期限切れになる:アクセスは1時間、クライアントは最長30日まで更新する。
- claude.ai(ウェブ/デスクトップ):設定 → コネクタ → 「カスタムコネクタを追加」 → URL https://dwfw.trabemflex.com/mcp → DWFWの画面で認可。
- Claude Code:下のコマンドを実行。ブラウザに同意画面が開き、認可するとセッションが接続される。
# Claude Code:トークンもヘッダーも不要——ブラウザにDWFWの認可画面が開く claude mcp add --transport http dwfw https://dwfw.trabemflex.com/mcp # 認可後に ✔ Connected と表示されるはず claude mcp list
03
トークンでのリモート接続(代替)
本番のトランスポートはStreamable HTTPで、ステートレス:各リクエストは自己完結し、セッションもクライアント・アフィニティも要らない。OAuthが使えない場合の手動の代替はクライアントトークン(次のセクション)。トークンは常に Authorization ヘッダーで送り、URLには決して載せない。
# Claude Code:リモートサーバーに接続(トークンは次のセクション)
claude mcp add --transport http dwfw https://dwfw.trabemflex.com/mcp \
--header "Authorization: Bearer dwfw_mcp_…"
# サービスの状態を確認(資格情報は不要)
curl https://dwfw.trabemflex.com/mcp/salud
# リモートHTTP対応の他のMCPクライアント:汎用設定
{
"mcpServers": {
"dwfw": {
"url": "https://dwfw.trabemflex.com/mcp",
"headers": { "Authorization": "Bearer dwfw_mcp_…" }
}
}
}04
リモート認証
クライアントトークン(dwfw_mcp_…)はディレクションのセッションでAPIを呼んで発行する:POST https://dwfw.trabemflex.com/api/tokens-mcp、ボディは {"nombre": "利用者名"}。トークンの平文はそのJSONレスポンスにのみ現れる——その場でコピーすること。データベースにはハッシュだけが残り、以後は読み出せない。管理画面で「有効」を外すと失効する(1分以内に反映)。任意の有効期限でも自動的に失効する。
決して混ざらない3つのアイデンティティ:トークンはリモートクライアントを識別する。MCPサーバーは maquina@dwfw.test としてAPIと話し、その内部キーはサーバーから出ない。権限はそのユーザーのRBACが決める。OAuthセッションはこれらのトークンと共存する:同じトランスポート、同じツール、同じRBACの壁。
05
ローカル接続(stdio)
必要なのはNode 18+とリポジトリのコピー。サーバーにデータベースやローカル設定は不要で、APIを指す環境変数だけでよい。Claude Desktopでは、下のJSONブロックを claude_desktop_config.json に追加する。
# コアをクローンし、サーバーの依存関係をインストール(Node 18+) git clone https://github.com/juanceldran/dwfw-core cd dwfw-core/mcp && pnpm install --ignore-workspace # 手動で起動(stdioで通信。通常はMCPクライアントが起動する) DWFW_API_URL=https://dwfw.trabemflex.com/api DWFW_API_KEY=… node index.mjs
# Claude Code:サーバーを登録(パスは自分のリポジトリの場所に合わせる) claude mcp add dwfw \ -e DWFW_API_URL=https://dwfw.trabemflex.com/api \ -e DWFW_API_KEY=… \ -- node /ruta/dwfw-core/mcp/index.mjs # 表示され、接続されていることを確認 claude mcp list
{
"mcpServers": {
"dwfw": {
"command": "node",
"args": ["/ruta/dwfw-core/mcp/index.mjs"],
"env": {
"DWFW_API_URL": "https://dwfw.trabemflex.com/api",
"DWFW_API_KEY": "…"
}
}
}
}06
資格情報と環境変数
推奨はサービスユーザー maquina@dwfw.test(investigadorロール)のAPIキー。管理画面のユーザーシートで "Enable API Key" にチェックして生成する。Authorization: usuarios API-Key … ヘッダーで送られ、クライアント設定にパスワードを保存せずに済む。代替は DWFW_EMAIL + DWFW_PASSWORD(JWTはサーバーが自動更新する)。
資格情報がなければ、サーバーは公開読み取り専用モードで動く:アーカイブ(工程7の作品)、作者、ノード、カルトグラフィ、意味、Event Stackのプログラム。接続の提案にはサービスセッションが要る。
# コアのAPI(本番。開発では http://localhost:3000/api) DWFW_API_URL=https://dwfw.trabemflex.com/api # サービスユーザーのAPIキー(推奨。管理画面で生成) DWFW_API_KEY=… # 代替:サービスユーザーのメールとパスワードでのセッション DWFW_EMAIL=maquina@dwfw.test DWFW_PASSWORD=… # レスポンスの既定言語:es · en · zh · ja DWFW_LOCALE=es
07
ツール
読み取りツールが6つ、書き込みはただ1つ。名前とパラメータは技術的な識別子で翻訳されない。コンテンツは locale で要求した言語で届く。
| ツール | 何をするか | パラメータ |
|---|---|---|
buscar_obras · 読み取り | サービスセッションから見える観測所の作品。テキスト・工程・タイプで絞り込む。 | q · movimiento · tipo · limit · locale |
ficha_obra · 読み取り | 作品の完全なシート:作者、接続(起点と終点)、付与された意味。 | id · locale |
buscar_autores · 読み取り | デザイナー、コレクティブ、ラボ、機関(第2層)。 | q · tipo · locale |
buscar_nodos · 読み取り | カルトグラフィのノード(第3層):思想潮流、先行技術、コミュニティ、機関、文化的緊張。 | q · tipo · locale |
cartografia · 読み取り | グラフの接続。既定ではすべて。状態でも絞れる(propuesta · confirmada · descartada)。 | estado · locale |
programa · 読み取り | Event Stackのプログラム:各エディション、ブランドチャプター、映像作品。 | locale |
proponer_conexion · 書き込み | 唯一の書き込み:機械の出所・提案状態の接続を作り、notaに根拠を記す。 | origen · destino · tipoRelacion · nota |
dwfw://doctrina — コアの硬い規則をmarkdownで提供する読み取り専用リソース。エージェントが働き始める前に、クライアントがコンテキストに読み込める。
08
できること・できないこと
この境界はエージェントの約束ではない。コアのサーバーがリクエストごとに強制する。サービスユーザーが持つのは読み取りの権限と conexion:proponer。それ以外の書き込みは明示的なメッセージ付きの403を受け取る。エージェントが試みても、コアが阻む。
できること
- ● 観測所全体(あらゆる工程の作品)、作者、ノード、接続、意味、Event Stackのプログラムを読む。
- ● テキスト・タイプ・工程・状態で検索と絞り込み。4言語のいずれでも(locale)。
- ● 作品・ノードの任意の組み合わせで接続を提案し、notaに統語的根拠を記す。maquinaの出所、propuestaの状態で生まれる。
- ● 行動の前に dwfw://doctrina リソースを読んで規則を知る。
できないこと
- ● 接続の確認や却下:それは意味論的行為であり、conexion:confirmar の権限が要る(明示的なメッセージ付きの403)。
- ● 意味の付与(第4層):significado:asignar が要る。人間のキュレーターに限られた権限(403)。さらにサーバーはすべての意味に procedencia: humano を強制する。
- ● キュレーション工程の前進:作品の状態は movimiento:avanzar でのみ変わる。
- ● 作品・作者・ノード・エディション・ユーザーの作成、編集、削除。Mediaアセットのアップロードや公開も不可。
- ● 人気指標の要求や推定:APIにはいいね・閲覧数・ランキングは存在しない(アルゴリズム的エポケー)。
# 接続を提案:機械の出所を持つ「提案」として生まれる
proponer_conexion {
"origen": { "tipo": "obras", "id": 3 },
"destino": { "tipo": "nodos", "id": 2 },
"tipoRelacion": "dialoga_con",
"nota": "どちらもシミュレートされた生物的成長を扱う:生成論理としての菌糸体。"
}
# → { "ok": true, "id": 12, "estado": "propuesta", "procedencia": "maquina",
# "mensaje": "Propuesta registrada. Queda pendiente de confirmación humana." }
# 人間の確認を待つ提案を見る
cartografia { "estado": "propuesta" }09
プロトコルのバージョン
HTTPトランスポートは公式SDKが対応するリビジョンを提供する:2025-11-25、2025-06-18、2025-03-26、2024-11-05。2026-07-28 リビジョン(プロトコルをステートレスにする——このサーバーはすでにそうだ)のクライアントは自分でプローブして下位に交渉する(最近のClaude Codeがそう)。SDKが公開されたら、採用は依存関係の更新であり、再設計ではない。
10
エージェントのためのドクトリン
働き始める前に、エージェントは dwfw://doctrina リソースを読み込むとよい。要約すると:
- あらゆる層に出所がある:機械が提案したものは、人間が確認するまで提案のまま。
- アルゴリズム的エポケー:順序を決めるのはアイデアの重み。最適化する指標も、求める指標もない。
- 七つの工程:キュレーション状態を進められるのは人間だけ。作品のうち、セッションなしで公開されるのは工程7(アーカイブ)だけ。
- 文化的出自は記述的なデータであり、順序や序列の基準には決してならない。
- 技術アセットは工程7に達するまで非公開(ブラインド・キュレーション)。