本文へ移動
cccskills
無料GitHub で公開

mcp-development

MCP server development including tool design, resource endpoints, prompt templates, and transport configuration

インストール方法を見る

含まれるファイル(1)

  • SKILL.md4.7 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

MCP Development

MCP Server with Tools

import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";

const server = new McpServer({
  name: "project-tools",
  version: "1.0.0",
});

server.tool(
  "search_files",
  "Search for files matching a glob pattern in the project directory",
  {
    pattern: z.string().describe("Glob pattern (e.g., '**/*.ts')"),
    directory: z.string().optional().describe("Base directory to search from"),
  },
  async ({ pattern, directory }) => {
    const files = await glob(pattern, { cwd: directory ?? process.cwd() });
    return {
      content: [
        {
          type: "text",
          text: files.length > 0
            ? files.join("\n")
            : `No files found matching ${pattern}`,
        },
      ],
    };
  }
);

server.tool(
  "run_query",
  "Execute a read-only SQL query against the application database",
  {
    query: z.string().describe("SQL SELECT query to execute"),
    limit: z.number().default(100).describe("Maximum rows to return"),
  },
  async ({ query, limit }) => {
    if (!query.trim().toUpperCase().startsWith("SELECT")) {
      return {
        content: [{ type: "text", text: "Only SELECT queries are allowed" }],
        isError: true,
      };
    }
    const rows = await db.query(`${query} LIMIT ${limit}`);
    return {
      content: [{ type: "text", text: JSON.stringify(rows, null, 2) }],
    };
  }
);

Resources

server.resource(
  "schema",
  "db://schema",
  "Current database schema with all tables, columns, and relationships",
  async () => {
    const schema = await db.query(`
      SELECT table_name, column_name, data_type, is_nullable
      FROM information_schema.columns
      WHERE table_schema = 'public'
      ORDER BY table_name, ordinal_position
    `);
    return {
      contents: [
        {
          uri: "db://schema",
          mimeType: "application/json",
          text: JSON.stringify(schema, null, 2),
        },
      ],
    };
  }
);

server.resource(
  "config",
  "config://app",
  "Application configuration (secrets redacted)",
  async () => {
    const config = await loadConfig();
    const safe = redactSecrets(config);
    return {
      contents: [
        {
          uri: "config://app",
          mimeType: "application/json",
          text: JSON.stringify(safe, null, 2),
        },
      ],
    };
  }
);

Prompt Templates

server.prompt(
  "review-code",
  "Review code changes for bugs, security issues, and style",
  {
    diff: z.string().describe("Git diff or code to review"),
    focus: z.enum(["security", "performance", "style", "all"]).default("all"),
  },
  async ({ diff, focus }) => ({
    messages: [
      {
        role: "user",
        content: {
          type: "text",
          text: `Review this code diff. Focus: ${focus}\n\n${diff}`,
        },
      },
    ],
  })
);

Client Configuration

{
  "mcpServers": {
    "project-tools": {
      "command": "node",
      "args": ["./mcp-server/dist/index.js"],
      "env": {
        "DATABASE_URL": "postgres://localhost:5432/app"
      }
    },
    "remote-server": {
      "url": "https://mcp.example.com/sse",
      "headers": {
        "Authorization": "Bearer ${MCP_TOKEN}"
      }
    }
  }
}

Transport Setup

import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";

const transport = new StdioServerTransport();
await server.connect(transport);

For HTTP-based servers, use the SSE transport for streaming responses to clients.

Anti-Patterns

  • Creating tools with vague descriptions that don't explain when to use them
  • Not validating inputs with Zod schemas before processing
  • Returning raw error stack traces to the client
  • Missing isError: true flag on error responses
  • Creating too many fine-grained tools instead of composable ones
  • Not redacting secrets in resource responses

Checklist

  • Each tool has a clear description explaining when and why to use it
  • Input parameters validated with Zod schemas and descriptive messages
  • Error responses include isError: true with user-friendly messages
  • Resources expose read-only data with secrets redacted
  • Prompt templates provide structured starting points for common tasks
  • Server handles graceful shutdown on SIGINT/SIGTERM
  • Tools are composable (do one thing well) rather than monolithic
  • Client configuration documented with required environment variables

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

Web accessibility patterns for WCAG 2.2 compliance including ARIA, keyboard navigation, screen readers, and testing

日本語の概要は準備中です。原文の説明を表示しています。

rohitg00/awesome-claude-code-toolkit2,6872026年5月12日 更新

Route broad or ambiguous AgentKit SEO work to the right module while keeping context scoped. Use when a request spans multiple surfaces, asks for overall digital-presence strategy, involves provider or install architecture, needs agent-context planning, or the correct platform skill is unclear.

日本語の概要は準備中です。原文の説明を表示しています。

rohitg00/awesome-claude-code-toolkit2,6872026年5月12日 更新

REST API design with resource naming, pagination, versioning, and OpenAPI spec generation

日本語の概要は準備中です。原文の説明を表示しています。

rohitg00/awesome-claude-code-toolkit2,6872026年5月12日 更新

Authentication and authorization patterns including OAuth2, JWT, RBAC, session management, and PKCE flows

日本語の概要は準備中です。原文の説明を表示しています。

rohitg00/awesome-claude-code-toolkit2,6872026年5月12日 更新

AWS cloud patterns for Lambda, ECS, S3, DynamoDB, and Infrastructure as Code with CDK/Terraform

日本語の概要は準備中です。原文の説明を表示しています。

rohitg00/awesome-claude-code-toolkit2,6872026年5月12日 更新

CI/CD pipeline patterns for GitHub Actions, GitLab CI, testing strategies, and deployment automation

日本語の概要は準備中です。原文の説明を表示しています。

rohitg00/awesome-claude-code-toolkit2,6872026年5月12日 更新

rohitg00 のスキルをすべて見る

このスキルの問題を報告する