mcp

Model Context Protocol (MCP) サーバーの作成・管理。

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "mcp" with this command: npx skills add kimny1143/claude-code-template/kimny1143-claude-code-template-mcp

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数を制限

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

ui-ux-pro-max

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

remotion

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

ux-psychology

No summary provided by upstream source.

Repository SourceNeeds Review