NickRimmer/md-skills-mcp
If you are the rightful owner of md-skills-mcp and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.
The Model Context Protocol (MCP) server facilitates the exposure of tools via a standardized protocol, allowing for seamless integration and execution of tasks defined in Markdown, TypeScript, or PowerShell files.
Markdown Skills MCP Server
Put your tool files in a folder (subfolders allowed) and expose them as MCP tools.
- Markdown: Each
.tool.mdfile becomes a tool whose instructions are templated with{{placeholders}}. - PowerShell: Each
.tool.ps1file has commented frontmatter metadata plus a script body. - TypeScript: Each
.tool.tsfile exports adescription,parameters, andrunToolfunction.
All files must contain
.tool.in the end of their filename before the extension, otherwise they are ignored.
Using the MCP server
Example .vscode/mcp.json entries you can use to launch the server from an MCP-capable client.
Add MCP server
{
"servers": {
"mdSkills": {
"type": "stdio",
"command": "npx",
"args": [
"md-skills-mcp",
"--folder",
".github/my-tools" // <-- your tools folder here, not necessary in ".github" folder
]
}
},
"inputs": []
}
Notes:
The server only reads the folder at startup (no hot-reload). Invalid or malformed Markdown tools are skipped with a console warning.
Supported tools
Tools can be defined via Markdown, TypeScript, or PowerShell files.
Markdown format
- Filename:
[A-Za-z0-9_]+.tool.md(others and hidden files are ignored). - Body: instruction template. Use
{{param_name}}placeholders (names must be[A-Za-z0-9_]+). Optional params missing at call time render as empty strings.
---
description: "Greets a user"
name: "Name to greet"
---
Hello, {{name}}
PowerShell format
- Filename:
[A-Za-z0-9_]+.tool.ps1. pwshmust be available on the PATH; scripts run with-NoLogo -NoProfile -NonInteractive -ExecutionPolicy Bypass.
# ---
# description: Greets a user
# name: Name to greet
# ---
param(
[string]$name,
)
Write-Output "Hello, $name"
TypeScript format
- Filename:
[A-Za-z0-9_]+.tool.ts(others and hidden files are ignored). - Exports from example below are required.
- Dependencies: TypeScript tools can import any packages installed alongside the tool file.
The server transpiles
.tsfiles at load time; no prebuild required.
export const description = "Greets a user";
export const parameters = {
name: "Name to greet",
};
export async function runTool(props: Record<string, unknown>): Promise<unknown> {
const name = String(props.name || 'stranger');
return `Hello, ${name}`;
}