OpenClaw用カスタムスキルを構築する
はじめに
OpenClaw の真の力はその拡張性にあります。モデルが脳であるとすれば、スキルは手です。ClawdHub のコミュニティレジストリにはすぐに使える数百のスキルがありますが、社内の独自 API、データベースシステム、あるいはローカルハードウェアとの統合が必要になる場合もあります。
このガイドでは、Node.js で "WeatherCheck" スキルを構築し、OpenClaw Agent に公開し、モデルコンテキストプロトコル(MCP)を正しくフォーマットする手順を説明します。
1. アーキテクチャの理解(MCP)
OpenClaw は Anthropic のオープン標準であるモデルコンテキストプロトコル(MCP)をサポートしています。これにより、壊れやすいカスタムパーサーを書く必要がなくなります。以下を公開する標準的な JSON-RPC サーバー(または HTTP SSE ストリーム)を構築するだけです:
- リソース(Resources): リソース(Resources):モデルが選択して読み取れる静的コンテキスト(例:「会社の API ドキュメント」)。
- ツール(Tools): ツール(Tools):モデルが実行を決定できるアクション(例:「fetch_weather_by_city」)。
2. プロジェクトのセットアップ
公式 MCP SDK を使用して新しい Node.js パッケージを作成しましょう。
mkdir my-first-skill && cd my-first-skill
npm init -y
npm install @modelcontextprotocol/sdk3. スキルサーバーの作成
index.js ファイルを作成します。stdio トランスポートを使用する MCP サーバーを定義します(OpenClaw がローカルスキルを起動して通信する最も簡単な方法です)。
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";
// Initialize the standard MCP server
const server = new McpServer({
name: "WeatherCheck-Skill",
version: "1.0.0"
});
// Register a Tool that the AI can call
server.tool("get_weather",
"Fetch current weather for a specific city",
{
city: z.string().describe("The name of the city (e.g. London, Beijing)")
},
async ({ city }) => {
console.error(`Fetching hardware sensor or API for: ${city}`);
const mockTemp = Math.floor(Math.random() * 30);
return {
content: [{ type: "text", text: `The weather in ${city} is ${mockTemp}°C and Sunny.` }]
};
}
);
// Connect via standard I/O pipes
const transport = new StdioServerTransport();
await server.connect(transport);
console.error("WeatherCheck Skill is running on stdio!");4. OpenClaw へのスキル登録
~/.openclaw/config.json(またはバージョンによっては skills.yml)を開き、新しい MCP サーバーの起動方法を OpenClaw に伝えます。
{
"mcpServers": {
"weather_check": {
"command": "node",
"args": ["/absolute/path/to/my-first-skill/index.js"]
}
}
}5. 統合のテスト
OpenClaw デーモンを再起動し、AI に質問してみましょう:
ねえ、今日パリでは傘が必要ですか?
正しく設定されていれば、LLM はコンテキスト内の get_weather ツールを認識し、「パリ」の JSON 呼び出し引数を生成します。すると index.js がモックテキストを返し、LLM はそのテキストを読んで自然に返答します。
ClawdHub への公開
スキルが完成してテストが完了したら、リポジトリをパッケージ化し、Starmadebydata/clawdhub-registry にプルリクエストを送信してください。コミュニティへの採用はここから始まります!詳細については 公式パブリッシュガイドライン。