mcp-capability-declarator
Generate MCP capability declarations from tool and resource inventory with proper versioning and feature flags.
Best use case
mcp-capability-declarator is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Generate MCP capability declarations from tool and resource inventory with proper versioning and feature flags.
Teams using mcp-capability-declarator should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/mcp-capability-declarator/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How mcp-capability-declarator Compares
| Feature / Agent | mcp-capability-declarator | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Generate MCP capability declarations from tool and resource inventory with proper versioning and feature flags.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# MCP Capability Declarator
Generate MCP capability declarations from tool/resource inventory.
## Capabilities
- Generate capability declarations from inventory
- Create initialization options
- Set up feature flags
- Implement capability negotiation
- Document server capabilities
- Generate capability tests
## Usage
Invoke this skill when you need to:
- Declare MCP server capabilities
- Generate initialization options
- Document supported features
- Implement capability negotiation
## Inputs
| 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 |
## Generated Patterns
### TypeScript Capability Declaration
```typescript
import { 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
`;
```
### Python Capability Declaration
```python
from 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,
}
```
## Workflow
1. **Inventory tools** - List all tools
2. **Inventory resources** - List all resources
3. **Define capabilities** - Feature flags
4. **Generate declarations** - Capability objects
5. **Create init options** - Initialization
6. **Document capabilities** - API docs
## Target Processes
- mcp-server-bootstrap
- mcp-tool-implementation
- mcp-tool-documentationRelated Skills
process-capability-calculator
Process capability analysis skill with Cp, Cpk, Pp, Ppk calculations and specification compliance assessment
terminal-capability-detector
Detect terminal capabilities including color support, TTY status, size, and Unicode support for adaptive CLI output.
process-builder
Scaffold new babysitter process definitions following SDK patterns, proper structure, and best practices. Guides the 3-phase workflow from research to implementation.
babysitter
Orchestrate via @babysitter. Use this skill when asked to babysit a run, orchestrate a process or whenever it is called explicitly. (babysit, babysitter, orchestrate, orchestrate a run, workflow, etc.)
yolo
Run Babysitter autonomously with minimal manual interruption.
user-install
Install the user-level Babysitter Codex setup.
team-install
Install the team-pinned Babysitter Codex workspace setup.
retrospect
Summarize or retrospect on a completed Babysitter run.
resume
Resume an existing Babysitter run from Codex.
project-install
Install the Babysitter Codex workspace integration into the current project.
plan
Plan a Babysitter workflow without executing the run.
observe
Observe, inspect, or monitor a Babysitter run.