Nano Banana Pro
Agent skill for nano-banana-pro
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Sign in to like and favorite skills
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
This is a PowerShell SDK for creating Model Context Protocol (MCP) servers. The SDK enables PowerShell scripts to be exposed as MCP resources, tools, and prompts through a convention-based folder structure.
Key Principle: The SDK uses a folder-based convention where PowerShell scripts placed in specific directories (
tools/, prompts/, resources/) are automatically discovered and exposed via the MCP protocol.
The module follows standard PowerShell module conventions:
MCP.SDK/MCP.SDK.psd1 - Module manifest defining metadata and exportsMCP.SDK/MCP.SDK.psm1 - Root module that loads all classes, private, and public functionsMCP.SDK/Private/ - Internal helper functions (currently exported for development/testing)MCP.SDK/Public/ - Public-facing cmdlets (currently empty; main export is Start-McpServer)Examples/reference-server/ - Example MCP server demonstrating the folder structure# Import the module for testing Import-Module ./MCP.SDK/MCP.SDK.psd1 -Force # Test with the reference server example Start-McpServer -MCPRoot ./Examples/reference-server
# Install locally for testing Import-Module ./MCP.SDK/MCP.SDK.psm1
Invoke-MCPRequest function receives JSON-RPC requests via stdinmethod field, requests are routed to appropriate handlers:
initialize → Get-Initialization (returns server capabilities)ping → Returns empty objecttools/list → Get-ToolList (discovers .ps1 files in tools/ directory)prompts/list → Get-PromptList (discovers .ps1 files in prompts/ directory)resources/list → Get-ResourceList (discovers files in resources/ directory)ConvertTo-JsonRpcResponse to wrap results in JSON-RPC formatThe SDK discovers MCP capabilities by scanning the MCPRoot directory:
Tools: PowerShell scripts in
{MCPRoot}/tools/*.ps1
Get-ToolSignature extracts parameter info from PowerShell help and metadataConvertTo-JsonTypePrompts: PowerShell scripts in
{MCPRoot}/prompts/*.ps1
Get-PromptSignature extracts parameters and help informationResources: Any files in
{MCPRoot}/resources/**/*
file://status/current-incidents).ps1 files: Help synopsis/description becomes resource metadata.md files: First heading (# Title) becomes the resource titleConvertTo-JsonType maps PowerShell types to JSON schema types:
string[]) → {type: "array", items: {type: "string"}}Both
Get-ToolSignature and Get-PromptSignature rely on PowerShell's Get-Help and Get-Command to extract:
To create a new MCP server:
Create a directory structure:
my-server/ ├── tools/ # Executable PowerShell scripts ├── prompts/ # Template scripts with parameters ├── resources/ # Static files or dynamic .ps1 scripts └── instructions.md # Optional: Server usage instructions
Write PowerShell scripts with proper help documentation:
<# .SYNOPSIS Brief description .DESCRIPTION Detailed description .EXAMPLE Example usage #> [CmdletBinding()] param( # Detailed description of the parameter [Parameter(Mandatory)] [ValidateSet('Option1', 'Option2')] [string]$ParamName )
Tools should return structured data (hashtables/objects)
Prompts should return text/markdown
Resources can be static files or .ps1 scripts that generate content
Get-Initialization checks for the presence of files in each directory to determine server capabilities:
tools/ contains .ps1 files → capabilities.tools = {}prompts/ contains .ps1 files → capabilities.prompts = {}resources/ contains files → capabilities.resources = {}Classes/)The
Examples/reference-server demonstrates an incident management system with:
Study these examples to understand the expected script structure and return formats.