
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 mcpAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 71 |
|---|---|
| repo stars | ★ 4 |
| Last updated | July 31, 2026 |
| Repository | kimny1143/claude-code-template ↗ |
What it does
Create custom tools and extend Claude Code with external service integrations.
Files
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数を制限