Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .changeset/every-eyes-send.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
"@skeletonlabs/skeleton-mcp": patch
---

chore: init

67 changes: 67 additions & 0 deletions .changeset/pre.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
{
"mode": "pre",
"tag": "next",
"initialVersions": {
"skeleton": "1.0.0",
"@skeletonlabs/skeleton": "3.2.0",
"@skeletonlabs/skeleton-common": "0.0.1",
"@skeletonlabs/skeleton-mcp": "0.0.1",
"@skeletonlabs/skeleton-react": "1.4.0",
"@skeletonlabs/skeleton-svelte": "1.5.1",
"@skeletonlabs/playground-skeleton-react": "0.0.1",
"@skeletonlabs/playground-skeleton-svelte": "0.0.1",
"@skeletonlabs/skeleton.dev": "0.0.1",
"@skeletonlabs/themes.skeleton.dev": "0.0.1"
},
"changesets": [
"all-hands-attend",
"beige-jars-sip",
"better-shrimps-beam",
"calm-rooms-marry",
"chatty-kids-join",
"clear-places-shout",
"dry-coats-return",
"eleven-comics-tease",
"evil-hands-obey",
"five-snakes-love",
"forty-badgers-clap",
"giant-bushes-smash",
"giant-pans-prove",
"good-groups-look",
"great-eagles-glow",
"hot-beers-think",
"humble-birds-rush",
"kind-feet-serve",
"legal-suits-write",
"lemon-ducks-hunt",
"little-files-notice",
"major-trains-enter",
"mean-nights-repeat",
"neat-clubs-agree",
"odd-cooks-make",
"orange-towns-teach",
"plain-areas-enter",
"poor-otters-battle",
"pretty-words-agree",
"purple-tigers-happen",
"quiet-bars-lay",
"quiet-ducks-drop",
"shiny-cups-pick",
"shy-owls-divide",
"silly-bottles-hope",
"slick-breads-wink",
"small-words-drum",
"strong-hotels-care",
"tall-pianos-divide",
"tender-planets-rest",
"tidy-peaches-know",
"tidy-shoes-cough",
"tricky-bags-sleep",
"two-shrimps-wonder",
"violet-signs-dream",
"wet-seas-do",
"wicked-buckets-fall",
"yellow-jokes-walk",
"young-files-hear"
]
}
39 changes: 39 additions & 0 deletions packages/skeleton-mcp/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
{
"name": "@skeletonlabs/skeleton-mcp",
"version": "4.0.0-next.31",
"description": "The MCP server for Skeleton.",
"author": "endigo9740 <[email protected]>",
"repository": {
"type": "git",
"url": "git+https://github.com/skeletonlabs/skeleton.git",
"directory": "packages/skeleton-mcp"
},
"scripts": {
"dev": "tsdown --watch",
"build": "tsdown",
"check": "tsc",
"sync": "pnpm build"
},
"exports": {
".": {
"types": "./dist/index.d.ts",
"import": "./dist/index.js"
}
},
"files": [
"dist",
"!dist/**/*.map"
],
"sideEffects": false,
"dependencies": {
"@modelcontextprotocol/sdk": "catalog:",
"zod": "catalog:"
},
"devDependencies": {
"@types/node": "catalog:",
"tsdown": "catalog:",
"typescript": "catalog:"
},
"license": "MIT",
"type": "module"
}
13 changes: 13 additions & 0 deletions packages/skeleton-mcp/src/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import { server } from '@/mcp-server';
Copy link

Copilot AI Oct 9, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The tools are not imported, so they won't be registered with the server. Add imports for the tool files to ensure they are loaded and registered.

Copilot uses AI. Check for mistakes.

import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';

async function main() {
const transport = new StdioServerTransport();
await server.connect(transport);
console.error('Skeleton MCP Server running on stdio');
}

main().catch((error) => {
console.error('Fatal error in main():', error);
process.exit(1);
});
8 changes: 8 additions & 0 deletions packages/skeleton-mcp/src/mcp-server.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';

export const server = new McpServer({
name: 'skeleton',
version: '1.0.0',
title: 'Skeleton MCP Server',
websiteUrl: 'https://skeleton.dev',
});
15 changes: 15 additions & 0 deletions packages/skeleton-mcp/src/tools/list-components.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import { server } from '@/mcp-server';

server.registerTool(
'list_components',
{
title: 'List Components',
description: 'Lists all components available in Skeleton',
},
async () => {
// TODO: Implement actual logic to list components
return {
content: [],
};
},
);
15 changes: 15 additions & 0 deletions packages/skeleton-mcp/src/tools/list-frameworks.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import { server } from '@/mcp-server';

server.registerTool(
'list_frameworks',
{
title: 'List Frameworks',
description: 'Lists all frameworks available in Skeleton',
},
async () => {
// TODO: Implement actual logic to list frameworks
return {
content: [],
Comment on lines +11 to +12
Copy link

Copilot AI Oct 9, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[nitpick] The tool returns an empty array without any implementation. Consider adding a TODO comment or implementing basic functionality to make the tool useful.

Suggested change
return {
content: [],
// TODO: Replace with dynamic framework listing logic.
return {
content: [
{ name: 'React', description: 'A JavaScript library for building user interfaces.' },
{ name: 'Vue', description: 'The Progressive JavaScript Framework.' },
{ name: 'Angular', description: 'One framework. Mobile & desktop.' },
],

Copilot uses AI. Check for mistakes.

};
},
);
24 changes: 24 additions & 0 deletions packages/skeleton-mcp/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{
"compilerOptions": {
"esModuleInterop": true,
"skipLibCheck": true,
"target": "es2022",
"allowJs": true,
"resolveJsonModule": true,
"moduleDetection": "force",
"isolatedModules": true,
"verbatimModuleSyntax": true,
"strict": true,
"noUncheckedIndexedAccess": true,
"noImplicitOverride": true,
"declaration": true,
"declarationMap": true,
"module": "preserve",
"noEmit": true,
"lib": ["es2022", "dom", "dom.iterable"],
"paths": {
"@/*": ["./src/*"]
}
},
"include": ["src"]
}
Loading