ホーム チュートリアル カテゴリ Skills サイトについて
ZH EN JA KO
スキル・プラグイン

OpenClaw MCP Server設定と使用チュートリアル

· 19 分で読了

はじめに

MCP(Model Context Protocol、モデルコンテキストプロトコル)は、AI モデルと外部ツールやデータソース間の通信方式を定義するオープンスタンダードです。OpenClaw は MCP を深く統合しており、AI アシスタントが MCP Server を通じてファイルシステム、データベース、API などの外部リソースとやり取りできるようになっています。

本チュートリアルでは、概念から出発して、OpenClaw における MCP の設定と使用方法を習得していただきます。

MCP とは

コア概念

MCP が解決する核心的な課題は、AI モデルが安全かつ標準化された方法で外部ツールを使用できるようにすることです。

ユーザーメッセージ → OpenClaw → AI モデル → ツールが必要 → MCP Client → MCP Server → 操作実行
                                                                ↓
ユーザーへの返答 ← OpenClaw ← AI モデル ← 結果取得 ← MCP Client ← MCP Server

MCP の3つのコア機能

機能 説明
Tools 呼び出し可能な関数/ツール ファイル読み書き、HTTPリクエスト送信、データベースクエリ
Resources アクセス可能なデータリソース ファイルコンテンツ、データベーステーブル、APIエンドポイント
Prompts 事前定義のプロンプトテンプレート コードレビューテンプレート、要約テンプレート

MCP Server のタイプ

MCP Server には2つの実行方式があります:

  • Stdio(標準入出力):子プロセスとして実行し、stdin/stdout で通信
  • SSE(Server-Sent Events):HTTP サービスとして実行し、HTTP で通信

OpenClaw での MCP Server 設定

基本設定構造

~/.config/openclaw/openclaw.json5 で MCP を設定します:

{
  mcp: {
    servers: {
      // 各 MCP Server には一意の名前がある
      "server-name": {
        // Stdio モードの設定
        command: "npx",
        args: ["-y", "@package/mcp-server"],
        env: {
          // 環境変数
          API_KEY: "your-key"
        }
      },

      // または SSE モードの設定
      "remote-server": {
        url: "http://localhost:3001/sse",
        headers: {
          "Authorization": "Bearer your-token"
        }
      }
    }
  }
}

複数 Server の共存

複数の MCP Server を同時に設定できます:

{
  mcp: {
    servers: {
      "filesystem": {
        command: "npx",
        args: ["-y", "@modelcontextprotocol/server-filesystem",
               "--allow-read", "--allow-write", "/home/user/documents"]
      },
      "database": {
        command: "npx",
        args: ["-y", "@modelcontextprotocol/server-sqlite",
               "--db-path", "/home/user/data/app.db"]
      },
      "http-fetch": {
        command: "npx",
        args: ["-y", "@openclaw-mcp/http-fetch"]
      },
      "github": {
        command: "npx",
        args: ["-y", "@modelcontextprotocol/server-github"],
        env: {
          GITHUB_PERSONAL_ACCESS_TOKEN: "ghp_xxxxx"
        }
      }
    }
  }
}

よく使われる MCP Server の詳細

1. ファイルシステム MCP Server

AI がローカルファイルを読み書きできるようにします。ドキュメント管理やデータ保存などのシナリオに適しています。

{
  mcp: {
    servers: {
      "filesystem": {
        command: "npx",
        args: [
          "-y",
          "@modelcontextprotocol/server-filesystem",
          "--allow-read",      // 読み取り許可
          "--allow-write",     // 書き込み許可
          "/home/user/docs"    // ディレクトリ範囲を限定
        ]
      }
    }
  }
}

提供されるツール:

ツール名 機能 パラメータ
read_file ファイルの内容を読み取り path
write_file ファイルに書き込み path, content
list_directory ディレクトリの内容を一覧表示 path
create_directory ディレクトリの作成 path
move_file ファイルの移動/名前変更 source, destination
search_files ファイルの検索 path, pattern

セキュリティ上の注意:パスパラメータでアクセス可能なディレクトリ範囲を必ず制限し、ファイルシステム全体へのアクセス権限を与えないようにしてください。

2. SQLite データベース MCP Server

AI が SQLite データベースを検索・操作できるようにします。

{
  mcp: {
    servers: {
      "sqlite": {
        command: "npx",
        args: [
          "-y",
          "@modelcontextprotocol/server-sqlite",
          "--db-path", "/home/user/data/myapp.db"
        ]
      }
    }
  }
}

提供されるツール:

ツール名 機能
read_query SELECT クエリの実行
write_query INSERT/UPDATE/DELETE の実行
create_table 新しいテーブルの作成
list_tables すべてのテーブルを一覧表示
describe_table テーブル構造の確認

使用例——ユーザーがチャットで「先週の売上データを調べて」と言うと、AI は自動的に MCP ツールを通じて SQL クエリを実行し、結果を返します。

3. HTTP Fetch MCP Server

AI が HTTP リクエストを発行し、任意の REST API を呼び出せるようにします。

{
  mcp: {
    servers: {
      "http-fetch": {
        command: "npx",
        args: ["-y", "@openclaw-mcp/http-fetch"],
        env: {
          // オプション:デフォルトのリクエストヘッダーを設定
          DEFAULT_HEADERS: '{"User-Agent": "OpenClaw/1.0"}'
        }
      }
    }
  }
}

提供されるツール:

ツール名 機能
http_get GET リクエストの発行
http_post POST リクエストの発行
http_put PUT リクエストの発行
http_delete DELETE リクエストの発行

4. GitHub MCP Server

GitHub リポジトリとやり取りし、Issue、PR、コードなどを確認します。

{
  mcp: {
    servers: {
      "github": {
        command: "npx",
        args: ["-y", "@modelcontextprotocol/server-github"],
        env: {
          GITHUB_PERSONAL_ACCESS_TOKEN: "ghp_xxxxx"
        }
      }
    }
  }
}

提供されるツール:

ツール名 機能
search_repositories リポジトリの検索
get_file_contents ファイルコンテンツの取得
list_issues Issue の一覧表示
create_issue Issue の作成
list_pull_requests PR の一覧表示
create_pull_request PR の作成

5. PostgreSQL MCP Server

PostgreSQL データベースに接続します:

{
  mcp: {
    servers: {
      "postgres": {
        command: "npx",
        args: ["-y", "@modelcontextprotocol/server-postgres"],
        env: {
          DATABASE_URL: "postgresql://user:pass@localhost:5432/mydb"
        }
      }
    }
  }
}

MCP と Skill の連携

MCP Server は Skill に外部世界とやり取りする能力を提供します。SKILL.md で必要な MCP ツールを宣言します:

---
name: my-skill
mcp_tools:
  - filesystem    # ファイルシステムツールを使用
  - http_fetch    # HTTP リクエストツールを使用
  - sqlite        # データベースツールを使用
---

AI は Skill 実行時に、必要に応じて対応する MCP ツールを自動的に呼び出します。

実際のフロー例

ユーザーが送信:「先週の注文データを CSV ファイルにエクスポートして」

  1. AI はタスクに sqlitefilesystem の2つの MCP Server が必要であることを認識
  2. sqlite.read_query を呼び出して先週の注文データを検索
  3. 検索結果を CSV フォーマットに整形
  4. filesystem.write_file を呼び出して CSV ファイルを保存
  5. ファイルパスをユーザーに返却

カスタム MCP Server

既存の MCP Server がニーズを満たさない場合、独自のものを開発できます。

最小限の例(Node.js)

// my-mcp-server.js
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";

const server = new Server({
  name: "my-custom-server",
  version: "1.0.0"
}, {
  capabilities: {
    tools: {}
  }
});

// ツールの登録
server.setRequestHandler("tools/list", async () => ({
  tools: [{
    name: "greet",
    description: "Generate a greeting message",
    inputSchema: {
      type: "object",
      properties: {
        name: { type: "string", description: "Name to greet" }
      },
      required: ["name"]
    }
  }]
}));

// ツール呼び出しの処理
server.setRequestHandler("tools/call", async (request) => {
  if (request.params.name === "greet") {
    const name = request.params.arguments.name;
    return {
      content: [{ type: "text", text: `Hello, ${name}!` }]
    };
  }
});

// サーバーの起動
const transport = new StdioServerTransport();
await server.connect(transport);

OpenClaw での設定:

{
  mcp: {
    servers: {
      "my-custom": {
        command: "node",
        args: ["/path/to/my-mcp-server.js"]
      }
    }
  }
}

MCP Server のデバッグ

MCP ツール一覧の確認

# ロード済みのすべての MCP ツールを確認
openclaw doctor

出力には、接続済みのすべての MCP Server とそれぞれが提供するツールが一覧表示されます。

MCP デバッグログの有効化

# MCP 通信の詳細を確認
openclaw logs --level debug

ログには MCP ツール呼び出しのリクエストとレスポンスが表示されます:

[DEBUG] MCP tool call: filesystem.read_file({path: "/home/user/notes.txt"})
[DEBUG] MCP tool result: {content: [{type: "text", text: "file contents..."}]}

MCP Server の独立テスト

MCP Inspector ツールを使用して MCP Server を独立にテストできます:

npx @modelcontextprotocol/inspector npx -y @modelcontextprotocol/server-filesystem --allow-read /tmp

これにより Web インターフェースが開き、MCP ツールを直接呼び出してテストできます。

セキュリティのベストプラクティス

最小権限の原則

{
  mcp: {
    servers: {
      "filesystem": {
        command: "npx",
        args: ["-y", "@modelcontextprotocol/server-filesystem",
               "--allow-read",           // 読み取りのみ
               "/home/user/public-docs"  // ディレクトリを限定
        ]
        // 注意:--allow-write は追加しない
      }
    }
  }
}

API キーのセキュリティ

設定ファイルに API キーをハードコーディングせず、環境変数を使用してください:

{
  mcp: {
    servers: {
      "github": {
        command: "npx",
        args: ["-y", "@modelcontextprotocol/server-github"],
        env: {
          // システム環境変数を参照
          GITHUB_PERSONAL_ACCESS_TOKEN: "${GITHUB_TOKEN}"
        }
      }
    }
  }
}

次にシステムで環境変数を設定します:

export GITHUB_TOKEN="ghp_xxxxx"

ネットワーク分離

リモート MCP Server(SSE モード)の場合、以下を推奨します:

  • HTTPS 接続の使用
  • 認証 Token の設定
  • アクセス可能な IP 範囲の制限

よくある質問

MCP Server が起動しない

# npx が正常に実行できるか確認
npx -y @modelcontextprotocol/server-filesystem --help

# Node.js のバージョンを確認
node --version  # 22+ が必要

ツール呼び出しがタイムアウトする

一部の MCP ツール(HTTP リクエストなど)はネットワークの問題でタイムアウトする場合があります。設定でタイムアウト時間を設定できます:

{
  mcp: {
    // グローバルタイムアウト設定(ミリ秒)
    timeout: 30000,
    servers: {
      "http-fetch": {
        command: "npx",
        args: ["-y", "@openclaw-mcp/http-fetch"],
        // この Server 個別のタイムアウトを設定
        timeout: 60000
      }
    }
  }
}

AI が期待したツールを呼び出さない

Skill で mcp_tools が正しく宣言されていること、MCP Server 名が設定と一致していることを確認してください。デバッグログでツールが正しくロードされているか確認してください。

まとめ

MCP は OpenClaw の能力拡張の基盤です。さまざまな MCP Server を設定することで、AI アシスタントにファイルシステムへのアクセス、データベースのクエリ、API の呼び出し、GitHub の操作など、ほぼすべての外部リソースを利用させることができます。MCP の動作原理と設定方法を理解することで、より強力な Skill と自動化ワークフローの構築が可能になります。

OpenClawは無料のオープンソースAIアシスタント。WhatsApp、Telegram、Discordなど多数のプラットフォームに対応