Claude Code vs Cursor
Claude Code(ターミナルCLI)とCursor(エディタ) — AIコーディングツールの比較。マルチエージェント、Plan Mode、Composer、IDE統合、プロダクション開発者ワークフロー。
必要なタイミングで読み込まれる指示・コンテキスト・スクリプトパッケージ
エージェントをライブの外部システムに接続するオープンプロトコル
両者はライバルではなく、レイヤーの違いです。skillは「どうやるか」を、MCPは「何にアクセスできるか」を解決します。繰り返す手順や組織固有のドメイン知識を教えたいならskillを書きましょう — 摩擦が少なく、コンテキストコストも低いです。リアルタイムのデータや外部システムでの操作が必要ならMCPサーバーを構築してください。静的なファイルはリアルタイムのデータを取得できません。今日の判断は「どのツールがどの仕事を解決するか」という問いに基づいており、両者は排他的ではなく、skillはMCPツールを呼び出す手順そのものを記述できます。
| カテゴリー | Agent Skills | MCP (Model Context Protocol) |
|---|---|---|
| パフォーマンス | 8/10 | 6/10 |
| 学習のしやすさ | 8/10 | 6/10 |
| エコシステム | 5/10 | 9/10 |
| コミュニティ | 5/10 | 9/10 |
| 求人市場 | 4/10 | 7/10 |
| 将来性 | 7/10 | 9/10 |
# Agent Skillのディレクトリ構造とSKILL.mdの例
# 出典: anthropics/skillsリポジトリのskill形式(SKILL.md + frontmatter)
pr-checklist/
├── SKILL.md
├── reference.md
└── scripts/
└── validate.py
---
# SKILL.mdの内容
---
name: pr-checklist
description: Use when opening a pull request in this repo, to apply the team's commit format, required checklist items, and reviewer assignment rules.
---
# Pull Request Checklist
When opening a PR:
1. Commit messages follow Conventional Commits (`feat:`, `fix:`, `refactor:`).
2. Run `scripts/validate.py` before pushing to check the checklist file.
3. Assign at least one reviewer from the CODEOWNERS file.
4. Link the related issue in the PR description.
See `reference.md` for the full checklist template and edge cases.
---
# scripts/validate.py — 必要な時にのみ実行される
import sys
def validate_checklist(pr_body: str) -> list[str]:
required = ["## Summary", "## Test plan"]
missing = [item for item in required if item not in pr_body]
return missing
if __name__ == "__main__":
body = sys.stdin.read()
missing = validate_checklist(body)
if missing:
print(f"Missing sections: {missing}")
sys.exit(1)
print("Checklist OK")// MCPサーバー — TypeScript SDKによる最小限の"get_order_status"ツール
// 出典: modelcontextprotocol/typescript-sdk README(v2 serverパッケージ)
import { McpServer } from "@modelcontextprotocol/server";
import { StdioServerTransport } from "@modelcontextprotocol/server/stdio";
import * as z from "zod/v4";
const server = new McpServer({
name: "orders-server",
version: "1.0.0",
});
server.registerTool(
"get_order_status",
{
title: "Get Order Status",
description: "Fetch the current status of a customer order from the live database",
inputSchema: z.object({
orderId: z.string().describe("The order ID to look up"),
}),
},
async ({ orderId }) => {
// db: プロジェクト独自のデータベースクライアント(例: Prisma client)
const order = await db.orders.findUnique({ where: { id: orderId } });
if (!order) {
return {
content: [{ type: "text", text: `Order ${orderId} not found` }],
isError: true,
};
}
return {
content: [
{
type: "text",
text: `Order ${orderId}: status=${order.status}, updatedAt=${order.updatedAt.toISOString()}`,
},
],
};
}
);
const transport = new StdioServerTransport();
await server.connect(transport);両者はライバルではなく、レイヤーの違いです。skillは「どうやるか」を、MCPは「何にアクセスできるか」を解決します。繰り返す手順や組織固有のドメイン知識を教えたいならskillを書きましょう — 摩擦が少なく、コンテキストコストも低いです。リアルタイムのデータや外部システムでの操作が必要ならMCPサーバーを構築してください。静的なファイルはリアルタイムのデータを取得できません。今日の判断は「どのツールがどの仕事を解決するか」という問いに基づいており、両者は排他的ではなく、skillはMCPツールを呼び出す手順そのものを記述できます。
無料相談を受けるSkillは、エージェントに必要なタイミングで読み込まれる静的な指示/手順パッケージです(SKILL.md + サポートファイル)。一方MCPは、エージェントをライブの外部システム(データベース、API、ファイルシステム)に接続するプロトコルです。Skillは「どうやるか」を、MCPは「何にアクセスできるか」を解決します。