Files
LangBot/ja/usage/mcp
99185d0b1d Feat/sandbox (#94)
* docs: add sandbox documentation for all languages

Add comprehensive documentation for the code sandbox feature:
- Overview, built-in tools, scope and lifecycle
- Backend configuration (Docker/Nsjail/E2B)
- Security profiles (default/offline_readonly/network_basic/network_extended)
- Complete configuration reference

Languages: zh, en, ja

* docs: add skills documentation for all languages

Add comprehensive Skills system documentation covering:
- Design philosophy and industry practices comparison (Claude Code, OpenAI GPTs, Cursor)
- Layered architecture (management, import, execution layers)
- Current activation mechanism ([ACTIVATE_SKILL:] marker) with TODO for future Tool Call optimization
- Agent Skills open standard compliance with field specifications
- Complete tools API reference

Languages: zh, en, ja

Co-Authored-By: Claude Opus 4.7 <[email protected]>

* docs: update sandbox documentation to include new tools and configuration options

* Refactor Skills API documentation to align with Tool Call mechanism

- Updated the overview of the Skills system to emphasize the Tool Call mechanism for activating and registering skills.
- Removed deprecated tools and consolidated functionality into `activate` and `register_skill`.
- Revised usage examples and parameters for the new tools, ensuring clarity on their requirements and expected responses.
- Enhanced descriptions of the activation process, including the injection of skill instructions and mounting of skill packages.
- Improved error handling documentation for better user guidance.
- Added notes on sandbox requirements for tool usage and the creation of new skills.

* docs: align sandbox runtime guides

* docs: align sandbox & skills guides with current Box implementation

Correct five inaccuracies across the zh/en/ja sandbox and skills docs so
they match the actual code:

- Box launch command: use the lbp CLI subcommand
  (`langbot_plugin.cli.__init__ box`) instead of the removed
  `langbot_plugin.box --mode ws`.
- Environment variables: replace the obsolete `LANGBOT_BOX_LOCAL_*`
  vars with the unified `SECTION__SUBSECTION__KEY` override convention
  (`BOX__LOCAL__*`); note that the langbot_box service reads no
  config.yaml/env and is configured by LangBot over INIT RPC.
- Skills: drop the stale "falls back to data/skills" claims — the Box
  Runtime is the sole source of skills; when Box is unavailable the
  skill list is simply empty.
- Document the new `box.enabled` master switch (default true) and what
  it gates.
- Document that the langbot_box compose service is optional, gated
  behind the `box`/`all` compose profile.

* docs: align sandbox docs with implementation

* docs: simplify sandbox naming and diagrams

* docs: shorten AI capability nav labels

* docs: merge sandbox configuration pages

* docs: document BOX__BACKEND as sole backend selector

* docs: recommend all profile for docker deploy

* docs: add docker permission fix for sandbox

* chore(skills): add obra/superpowers writing-skills

Install the writing-skills skill from obra/superpowers via
`npx skills add`. Lands the skill files under .agents/skills/
(universal layout) with a Claude Code symlink at .claude/skills/
and the pin in skills-lock.json.

Also gitignore .claude/settings.local.json since it's per-user
Claude Code state (skill symlinks under .claude/skills/ remain
tracked).

* docs(sandbox,skills): tighten user guides for onboarding

Rewrite the sandbox and skills user guides to be shorter, plainer, and
focused on getting users productive instead of explaining internals.

Changes per page (zh/en/ja kept in lockstep):

- sandbox/readme: 170 → 73 lines. Drop the "what is a sandbox" essay,
  decorative mermaid, and the backend table that already lives in
  config.mdx. Lead with the six built-in tools and the scope picker
  (the parts users actually configure).
- sandbox/runtime-relationships: 75 → 54 lines. Replace the runtime
  prose with a single comparison table; tighten the troubleshooting
  entry-points.
- skills/readme: 320 → 114 lines. Cut the "design philosophy" /
  "industry comparison" / "KV cache theory" sections — those are
  implementation details users don't need to ship. Lead with the
  user-visible flow (Agent reads <available_skills> → calls activate →
  follows the SKILL.md).
- skills/skill-format: 360 → 134 lines. One excellent example
  (api-tester) instead of three overlapping ones. Drop the standalone
  "field details" subsections that just restate the table.
- skills/tools-api: 200 → 122 lines. Drop the old-vs-new historical
  comparison and the duplicated activation section; keep the two tool
  signatures, parameters, returns and errors.

sandbox/config.mdx left untouched (already condensed upstream).

Principles applied come from obra/superpowers writing-skills (installed
in 08c35a4): lead with use, one excellent example, tables for scanning,
cut internals and history.

* docs(sandbox): drop redundant 'how to choose' table from runtime-relationships

The 对照表 above already has a '何时使用 / When to use' column that says
the same thing. Repeating it as a second 怎么选 / How to Choose table
was pure noise.

* docs(skills): collapse to one page, link out for SKILL.md spec

Delete skill-format.mdx and tools-api.mdx — Skills now has a single
page. The format details and tools reference were already covered in
shorter form inside readme.mdx; the separate pages were repetition.

In readme.mdx:
- Inline a compact 'SKILL.md format' section (one example + a three-
  field table) and point at agentskills.io for the canonical spec.
- Drop the 'next steps' section and the tools-api link, since both
  destinations no longer exist.

docs.json: remove the two pages from each locale's Skills nav. Add
redirects from the old paths to readme so existing links don't 404.

* docs(nav): flatten Skills — single page, no group wrapper

Group with one child is just visual noise in the sidebar. Replace
{ group: Skills, pages: [...readme] } with the readme path directly
in the parent AI Configuration group, in all three locales.

* docs(mcp,skills): lead with LangBot Space as the preferred install path

LangBot Space (https://space.langbot.app) now hosts a curated list of
MCP servers and Skills. Surface that as the first install option in
both user guides.

- usage/mcp/readme: rework the intro Info block to recommend LangBot
  Space first (third-party channels demoted to "alternative source").
  Add a "Install from LangBot Space (Preferred)" section above the
  existing manual flow; rename that flow to "Add MCP Server Manually".
- usage/skills/readme: add a "Install from LangBot Space (Preferred)"
  section above "Creating a Skill"; rename the existing section to
  "Creating a Custom Skill" so the contrast is clear.

zh/en/ja kept in sync.

* docs(skills): reorganize the readme around the user journey

The old structure interleaved "what it is" → "how it works internally"
→ "prerequisites" → "format spec" → install options. Reorder around
how users actually approach the page:

  Intro → compare with plugins/MCP → install → enable → write → debug

Specific moves:
- Drop the standalone "Workflow" flow diagram; fold the one important
  point (activation pulls SKILL.md via Tool Result) into the intro.
- Merge the standalone "Prerequisites" section into a short Note on the
  Install heading — that's where the constraint actually applies.
- Bring "Install from LangBot Space" and "Create your own" together
  under one "Install" H2 with H3 subsections; they were sibling H2s
  before, which buried the relationship.
- Move "Writing a SKILL.md" after install + enable, since most users
  start with marketplace skills.
- Demote the "Tools the Agent sees" table to an H3 inside the writing
  section — it's reference, not a top-level concern.

114 → 100 lines, zh/en/ja in lockstep.

* docs(mcp,models): reorder MCP page + move tool-use capability to Models

Two related changes, same as the Skills cleanup pattern:

usage/mcp/readme — reorganize around the user journey
- Drop the standalone "Enable function calling on the model" section;
  that belongs in the Models doc (it's not MCP-specific — sandbox tools
  and Skills depend on the same model capability).
- Drop the redundant "Effect" section — its one fact (built-in Agent +
  tool-use model) already lives in the Note under "Three Transport
  Modes".
- Group install paths under one "Installing an MCP Server" H2 with
  Space (preferred) and manual flows as H3 siblings, mirroring the
  Skills doc layout.
- Move the stdio MCP technical block under a clearly-labeled
  "Advanced: stdio MCP" H2 so casual readers skim past it.
- Trim screenshot duplication and collapse three steps in the manual
  flow into one paragraph + one screenshot per step.
- 140 → 107 lines, zh/en/ja kept in lockstep.

usage/models/readme — rename and expand "function calling" → "tool use"
- The checkbox is renamed to "Tool Use" (zh: 工具使用能力 / ja: ツール
  使用); function calling kept in parentheses for recognition.
- Expand the bullet into a Note that explicitly lists where the
  capability matters: MCP servers, sandbox built-ins (exec/read/write/
  edit/glob/grep), Skills. Without it, even bound extensions stay
  silent.
- Note that the underlying model must actually support function
  calling for the checkbox to take effect.

* docs(sandbox): point sandbox/config readers to System Environment Settings

The page lists box.* YAML blocks without ever telling the reader where
those settings actually go. Add a one-line Note at the top linking to
deploy/settings (System Environment Settings), where the data/config.yaml
location and load mechanism are documented.

* docs(sandbox/config): align the page with the real config structure

The previous version listed local / docker / nsjail / e2b as four
parallel "backends" in one flat table. That's wrong: looking at the
config template and the SDK's _select_backend, the real model is:

- box.backend accepts 'local' | 'docker' | 'nsjail' | 'e2b'
- 'local' is shorthand for "auto-pick from Docker / Nsjail" — not a
  fourth backend
- 'local', 'docker', 'nsjail' all *share* the box.local.* config
  section; the section is misleadingly named ("local" here means
  "host-local backends", not "for backend: 'local'")
- 'e2b' uses box.e2b.* instead
- 'local' is the only value that auto-falls-back; everything else is a
  hard selection

Rewrite the page around that structure:
- Group backends as "local containers" vs "cloud" with the four values
  inside, and call out the local-vs-fourth-backend distinction.
- Split the old single "common settings" table into two clearly-scoped
  tables: box.local.* (for local backends) and box.e2b.* (for cloud).
- Move box.runtime.endpoint into the Docker Compose section, where it
  actually matters.
- Add an explicit note that backend is a hard selection — only 'local'
  fans out.

zh/en/ja kept in lockstep.

* docs(deploy): note Box control-plane transport differs by deploy method

In Docker deployments the Box control plane runs as the langbot_box
container (WebSocket); manual / uvx deployments use a stdio subprocess.
Also clarify the LangBot image bundles the docker client so langbot_box
can create sandbox containers via the mounted socket without extra setup.
zh / en / ja.

---------

Co-authored-by: Claude Opus 4.7 <[email protected]>
Co-authored-by: Junyan Qin <[email protected]>
2026-06-04 20:18:29 +08:00
..
2026-06-04 20:18:29 +08:00

---
title: "MCP サーバー"
---

LangBot は MCP サーバー由来のツールを利用できます。MCP サーバーを追加すれば、ツール使用を有効にしたモデルを持つ組み込み Agent が会話中にそのツールを呼び出せます。

<Info title="MCP は Streamable HTTP、SSE、stdio の 3 モードに対応しています。">
  まずは [LangBot Space](https://space.langbot.app) からのインストールを推奨します。掲載されている MCP サーバーは設定済みで、そのまま使えます。

  [ModelScope](https://modelscope.cn/mcp)、[mcp.so](https://mcp.so)、[composio.dev](https://composio.dev/toolkits) から入手して、後述の手動追加で登録することも可能です。
</Info>

## 3 つの通信モード

| モード | 適した場面 | 備考 |
|------|----------|------|
| Streamable HTTP (`mode: "http"`) | Streamable HTTP に対応したリモート MCP | LangBot がリモート URL に直接接続 |
| SSE | SSE に対応したリモート MCP | LangBot がリモート URL に直接接続 |
| stdio | ローカルコマンドで起動する MCP サーバー | Box Runtime が利用可能なときのみサポート |

<Note>
MCP ツールを使うには、パイプラインで**組み込み Agent** を選択し、**ツール使用が有効化されたモデル**を使用する必要があります。[モデル](../models/readme)を参照。Dify、n8n、Langflow、Coze などの外部 Runner は各プラットフォームのツール機構を使います。
</Note>

## MCP サーバーをインストール

### LangBot Space から(推奨)

[LangBot Space](https://space.langbot.app) は LangBot 公式のマーケットプレイスで、設定済みの MCP サーバーが多数掲載されています。WebUI の `プラグイン管理` → `MCP 管理` から閲覧して 1 クリックでインストールでき、URL、コマンド、モードなどのパラメータはマーケット側が提供するため、手動入力は不要です。

ほとんどのケースはこれで十分です。掲載されていないサービスを利用する場合は、下記の手動追加を使ってください。

### 手動で追加

`プラグイン管理` → `MCP 管理` を開きます:

<img width="1000px" src="/images/zh/deploy/mcp/mcp02.png" alt="MCP 管理ページ" />

右上の `追加` → `MCP サーバーを追加` をクリック。URL(HTTP/SSE)またはコマンド(stdio)を入力し、`テスト` で接続を確認、`送信` で保存します:

<img width="400px" src="/images/zh/deploy/mcp/mcp03.png" alt="MCP サーバー作成" />

保存後、カードのスイッチをオンにして接続します。カードをクリックすると詳細を確認できます:

<img width="400px" src="/images/zh/deploy/mcp/mcp05.png" alt="MCP サーバー詳細" />

## パイプラインで有効化

MCP サーバーを追加したあと、パイプライン拡張設定で Agent から見える MCP を決めます:

- 「すべての MCP サーバーを有効化」をオン、または
- 指定した MCP サーバーのみをバインド

バインドしていない MCP のツールはそのパイプラインのツール一覧に入りません。

## 高度な設定:stdio MCP

stdio MCP は Box Runtime によってホストされます。接続前に LangBot は以下を行います:

1. 共有の MCP Box session を作成または再利用
2. コマンドからローカルプロジェクトのパスを推測できれば、プロジェクトをワークスペースに staging
3. プロジェクトに `requirements.txt`、`pyproject.toml`、`setup.py`、`setup.cfg` がある場合は依存をインストール
4. WebSocket relay 経由で MCP プロセスの stdin/stdout に接続

マウント、ネットワーク、タイムアウトを細かく調整したい場合、MCP 設定の `extra_args` に `box` オーバーライドを追加できます:

```json
{
  "mode": "stdio",
  "extra_args": {
    "command": "python",
    "args": ["server.py"],
    "env": {},
    "box": {
      "host_path": "/path/to/mcp-project",
      "network": "on",
      "host_path_mode": "ro",
      "startup_timeout_sec": 120,
      "image": "python:3.11-slim"
    }
  }
}
```

主なフィールド:

| フィールド | 説明 |
|------|------|
| `host_path` | ホスト上の MCP プロジェクトディレクトリ。`box.local.allowed_mount_roots` の許可範囲内である必要があります |
| `network` | ネットワークを許可するか(依存インストールでよく使う) |
| `host_path_mode` | `host_path` を staging するときのアクセスモード。デフォルトは `ro`。stdio MCP は通常ワークスペースに staging されます |
| `startup_timeout_sec` | Box 準備と依存インストールのタイムアウト、デフォルト 120 秒。接続待ちで約 30 秒追加されます |
| `image` | Docker バックエンドで使用するランタイムイメージ |

<Warning>
stdio MCP は Box 内で実行されます。依存インストールとプロセス起動は sandbox profile、ネットワーク権限、リソース制限、マウント許可リストの影響を受けます。
</Warning>

## よくある問題

| 症状 | 確認項目 |
|------|--------|
| MCP の接続に失敗 | URL、コマンド、引数、環境変数が正しいか |
| stdio MCP が接続中のまま | Box Runtime の状態、`startup_timeout_sec` が短すぎないか |
| 依存インストールに失敗 | sandbox がネットワークを許可しているか、依存ファイルが正しいか |
| ローカルファイルにアクセスできない | `host_path` が存在し、`allowed_mount_roots` 内にあるか |
| Agent が MCP ツールを認識しない | パイプラインで組み込み Agent を使っているか、モデルでツール使用を有効にしているか、MCP がパイプラインにバインドされているか |