Loading skill
Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Generate MCP capability declarations from tool and resource inventory with proper versioning and feature flags.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 4% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 16% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 54% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 9% | 0% |
| case-03 | ✗→✗ | = Same ✗ | -23% | 0% |
Generate MCP capability declarations from tool/resource inventory.
Invoke this skill when you need to:
| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | serverName | string | Yes | Server name | | version | string | Yes | Server version | | tools | array | No | Tool capabilities | | resources | array | No | Resource capabilities | | prompts | array | No | Prompt capabilities |
typescriptimport { ServerCapabilities, InitializationOptions } from '@modelcontextprotocol/sdk/types.js'; // Server metadata export const SERVER_INFO = { name: 'my-mcp-server', version: '1.0.0', } as const; // Capability declarations export const CAPABILITIES: ServerCapabilities = { tools: { // Tool capabilities listChanged: true, }, resources: { // Resource capabilities subscribe: true, listChanged: true, }, prompts: { // Prompt capabilities listChanged: true, }, logging: {}, }; // Tool definitions export const TOOL_DEFINITIONS = [ { name: 'search_files', description: 'Search for files matching a pattern', inputSchema: { type: 'object', properties: { pattern: { type: 'string', description: 'Glob pattern' }, path: { type: 'string', description: 'Base path' }, }, required: ['pattern'], }, }, { name: 'read_file', description: 'Read contents of a file', inputSchema: { type: 'object', properties: { path: { type: 'string', description: 'File path' }, }, required: ['path'], }, }, ] as const; // Resource templates export const RESOURCE_TEMPLATES = [ { uriTemplate: 'file:///{path}', name: 'File', description: 'Access file contents', mimeType: 'text/plain', }, ] as const; // Create initialization options export function createInitializationOptions(): InitializationOptions { return { serverInfo: SERVER_INFO, capabilities: CAPABILITIES, }; } // Capability documentation export const CAPABILITY_DOCS = ` # ${SERVER_INFO.name} v${SERVER_INFO.version} ## Supported Capabilities ### Tools ${TOOL_DEFINITIONS.map(t => `- **${t.name}**: ${t.description}`).join('\n')} ### Resources - File access via \`file:///\` URI scheme - Resource subscription support - List change notifications ### Prompts - Dynamic prompt templates - List change notifications ## Feature Flags - Tool list change notifications: enabled - Resource subscriptions: enabled `;
pythonfrom dataclasses import dataclass from typing import List, Dict, Any @dataclass class ServerInfo: name: str = "my-mcp-server" version: str = "1.0.0" @dataclass class ToolDefinition: name: str description: str input_schema: Dict[str, Any] TOOL_DEFINITIONS: List[ToolDefinition] = [ ToolDefinition( name="search_files", description="Search for files matching a pattern", input_schema={ "type": "object", "properties": { "pattern": {"type": "string"}, "path": {"type": "string"}, }, "required": ["pattern"], }, ), ] CAPABILITIES = { "tools": {"listChanged": True}, "resources": {"subscribe": True, "listChanged": True}, "prompts": {"listChanged": True}, "logging": {}, } def create_initialization_options() -> dict: return { "serverInfo": { "name": ServerInfo.name, "version": ServerInfo.version, }, "capabilities": CAPABILITIES, }
Other measured skills in the registry, with their headline benchmark lift.