Migrated from design-system-swarm with fresh git history.
Old project history preserved in /home/overbits/apps/design-system-swarm
Core components:
- MCP Server (Python FastAPI with mcp 1.23.1)
- Claude Plugin (agents, commands, skills, strategies, hooks, core)
- DSS Backend (dss-mvp1 - token translation, Figma sync)
- Admin UI (Node.js/React)
- Server (Node.js/Express)
- Storybook integration (dss-mvp1/.storybook)
Self-contained configuration:
- All paths relative or use DSS_BASE_PATH=/home/overbits/dss
- PYTHONPATH configured for dss-mvp1 and dss-claude-plugin
- .env file with all configuration
- Claude plugin uses ${CLAUDE_PLUGIN_ROOT} for portability
Migration completed: $(date)
🤖 Clean migration with full functionality preserved
56 lines
1.8 KiB
Python
56 lines
1.8 KiB
Python
"""
|
|
DSS MCP Server Plugins
|
|
|
|
This directory contains dynamically loaded plugins for the DSS MCP server.
|
|
|
|
Plugin Contract:
|
|
- Each plugin is a .py file in this directory
|
|
- Must export TOOLS: List[types.Tool] with MCP tool definitions
|
|
- Must have a handler class with execute_tool(name, arguments) method
|
|
- Optional: export PLUGIN_METADATA dict with name, version, author
|
|
|
|
Example Plugin Structure:
|
|
from mcp import types
|
|
|
|
PLUGIN_METADATA = {
|
|
"name": "My Plugin",
|
|
"version": "1.0.0",
|
|
"author": "DSS Team"
|
|
}
|
|
|
|
TOOLS = [
|
|
types.Tool(name="my_tool", description="...", inputSchema={...})
|
|
]
|
|
|
|
class PluginTools:
|
|
async def execute_tool(self, name, arguments):
|
|
if name == "my_tool":
|
|
return {"result": "success"}
|
|
|
|
Developer Workflow:
|
|
1. Copy _template.py to new_plugin.py
|
|
2. Edit TOOLS list and PluginTools class
|
|
3. (Optional) Create requirements.txt if plugin needs dependencies
|
|
4. Run: ../install_plugin_deps.sh (if dependencies added)
|
|
5. Restart MCP server: supervisorctl restart dss-mcp
|
|
6. Plugin tools are immediately available to all clients
|
|
|
|
Dependency Management:
|
|
- If your plugin needs Python packages, create a requirements.txt file
|
|
- Place it in the same directory as your plugin (e.g., plugins/my_plugin/requirements.txt)
|
|
- Run ../install_plugin_deps.sh to install all plugin dependencies
|
|
- Use --check flag to see which plugins have dependencies without installing
|
|
|
|
Example plugin with dependencies:
|
|
plugins/
|
|
├── my_plugin/
|
|
│ ├── __init__.py
|
|
│ ├── tool.py (exports TOOLS and PluginTools)
|
|
│ └── requirements.txt (jinja2>=3.1.2, httpx>=0.25.0)
|
|
└── _template.py
|
|
|
|
See _template.py for a complete example.
|
|
"""
|
|
|
|
__all__ = [] # Plugins are auto-discovered, not explicitly exported
|