Use when you have a written implementation plan to execute in a separate session with review checkpoints
0
0
# Install this skill:
npx skills add kimny1143/claude-code-template --skill "/mcp コマンドで接続状態を確認"
Install specific skill from multi-skill repository
# Description
"データベースにクエリを実行",
# SKILL.md
mcp - MCP Server 作成
Model Context Protocol (MCP) サーバーの作成・管理。
概要
MCP は Claude Code にカスタムツールを追加するためのプロトコル。
用途:
- プロジェクト固有のツール提供
- 外部サービス連携
- 自動化タスク
基本構造
// scripts/mcp/my-tool.js
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
const server = new Server(
{ name: "my-tool", version: "1.0.0" },
{ capabilities: { tools: {} } }
);
// ツール一覧
server.setRequestHandler("tools/list", async () => ({
tools: [
{
name: "my_custom_tool",
description: "カスタムツールの説明",
inputSchema: {
type: "object",
properties: {
param1: { type: "string", description: "パラメータ1" },
},
required: ["param1"],
},
},
],
}));
// ツール実行
server.setRequestHandler("tools/call", async (request) => {
const { name, arguments: args } = request.params;
if (name === "my_custom_tool") {
const result = await doSomething(args.param1);
return { content: [{ type: "text", text: JSON.stringify(result) }] };
}
throw new Error(`Unknown tool: ${name}`);
});
// サーバー起動
const transport = new StdioServerTransport();
await server.connect(transport);
設定
プロジェクトレベル (.mcp.json)
{
"mcpServers": {
"my-tool": {
"command": "node",
"args": ["scripts/mcp/my-tool.js"]
}
}
}
ユーザーレベル (~/.claude/settings.json)
{
"mcpServers": {
"my-global-tool": {
"command": "node",
"args": ["/path/to/tool.js"]
}
}
}
実用例
テストランナー
server.setRequestHandler("tools/list", async () => ({
tools: [
{
name: "run_tests",
description: "ユニットテストを実行",
inputSchema: {
type: "object",
properties: {
pattern: { type: "string", description: "テストパターン" },
},
},
},
],
}));
server.setRequestHandler("tools/call", async (request) => {
if (request.params.name === "run_tests") {
const pattern = request.params.arguments?.pattern || "";
const result = await runTests(pattern);
return { content: [{ type: "text", text: result }] };
}
});
async function runTests(pattern) {
const { execSync } = await import("child_process");
try {
const output = execSync(`npm test -- ${pattern}`, { encoding: "utf-8" });
return output;
} catch (error) {
return error.stdout + error.stderr;
}
}
DB クエリ
{
name: "query_database",
description: "データベースにクエリを実行",
inputSchema: {
type: "object",
properties: {
query: { type: "string", description: "SQL クエリ" },
},
required: ["query"],
},
}
コンテキスト節約
使わないMCPサーバーを無効化してコンテキストを節約:
// .mcp.json
{
"mcpServers": {
"frequently-used": { "command": "node", "args": ["tool1.js"] }
},
"disabledMcpServers": [
"rarely-used-tool",
"heavy-context-tool"
]
}
デバッグ
# 直接実行
node scripts/mcp/my-tool.js
# ログ確認
DEBUG=mcp* node scripts/mcp/my-tool.js
# Claude Code で確認
# /mcp コマンドで接続状態を確認
ベストプラクティス
- エラーハンドリング: 常に try-catch で囲む
- タイムアウト: 長時間処理は避ける(30秒以内)
- 説明を明確に: description はツール選択の判断材料
- inputSchema 必須: パラメータの型を明示
- 10個以下: プロジェクトあたりのMCP数を制限
# Supported AI Coding Agents
This skill is compatible with the SKILL.md standard and works with all major AI coding agents:
Amp
Antigravity
Claude Code
Clawdbot
Codex
Cursor
Droid
Gemini CLI
GitHub Copilot
Goose
Kilo Code
Kiro CLI
OpenCode
Roo Code
Trae
Windsurf
Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.