Claude-skill-registry add-mcp-primitive
Add new MCP primitives (Tool, Resource, Prompt). Use when asked to add a new tool, resource, or prompt to the MCP server.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/add-mcp-primitive" ~/.claude/skills/majiayu000-claude-skill-registry-add-mcp-primitive && rm -rf "$T"
manifest:
skills/data/add-mcp-primitive/SKILL.mdsource content
Adding MCP Primitives
Tool
- Create feature in
src/features/<name>/<name>.ts - Create definition in
src/definitions/tools/<name>.ts - Register in
src/definitions/tools/index.ts
// src/definitions/tools/my-tool.ts import { defineTool } from "@/definitions/define.ts"; import { z } from "zod"; export const myTool = defineTool({ name: "my-tool", title: "My Tool", description: "What this tool does", inputSchema: { param: z.string().describe("Parameter description"), }, handler: async ({ param }) => ({ content: [{ type: "text", text: "Result" }], }), });
Resource
- Create definition in
src/definitions/resources/<name>.ts - Register in
src/definitions/resources/index.ts
// src/definitions/resources/my-resource.ts import { defineResource } from "@/definitions/define.ts"; export const myResource = defineResource({ name: "my-resource", uri: "my-resource://path", title: "My Resource", description: "What this resource provides", mimeType: "text/plain", handler: async (uri) => ({ contents: [{ uri: uri.href, mimeType: "text/plain", text: "Content" }], }), });
Prompt
- Create definition in
src/definitions/prompts/<name>.ts - Register in
src/definitions/prompts/index.ts
// src/definitions/prompts/my-prompt.ts import { definePrompt } from "@/definitions/define.ts"; import { z } from "zod"; export const myPrompt = definePrompt({ name: "my-prompt", title: "My Prompt", description: "What this prompt does", argsSchema: { topic: z.string().describe("Topic to discuss"), }, handler: ({ topic }) => ({ messages: [ { role: "user", content: { type: "text", text: `Discuss ${topic}` } }, ], }), });