Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
kimny1143 avatar

Mcp

  • 71 installs
  • 4 repo stars
  • Updated July 31, 2026
  • kimny1143/claude-code-template

Create custom tools and extend Claude Code with external service integrations.

About

Teaches how to build Model Context Protocol (MCP) servers to add custom tools to Claude Code. Covers server setup, tool registration, and integration patterns for automating project-specific tasks.

  • Complete MCP server implementation with tool definition and execution
  • Context-aware debugging and async request handling

Mcp by the numbers

  • 71 all-time installs (skills.sh)
  • Ranked #5,591 of 16,556 AI & Agent Building skills by installs in the Skillselion catalog
  • Data as of Aug 2, 2026 (Skillselion catalog sync)
npx skills add https://github.com/kimny1143/claude-code-template --skill mcp

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs71
repo stars4
Last updatedJuly 31, 2026
Repositorykimny1143/claude-code-template

What it does

Create custom tools and extend Claude Code with external service integrations.

Files

SKILL.mdMarkdownGitHub ↗

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 コマンドで接続状態を確認

---

ベストプラクティス

1. エラーハンドリング: 常に try-catch で囲む 2. タイムアウト: 長時間処理は避ける(30秒以内) 3. 説明を明確に: description はツール選択の判断材料 4. inputSchema 必須: パラメータの型を明示 5. 10個以下: プロジェクトあたりのMCP数を制限

Related skills

AI & Agent Buildingintegrationsdevops

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.