Content
# MCP-Artisan v2.0.0
A **secure** Model Context Protocol (MCP) tool with workspace sandbox for AI Agents to find prompts, save HTML, and render HTML to images.
## 🚨 Breaking Changes in v2.0.0
This is a **major version update** with breaking changes. All API parameters have been redesigned for enhanced security and usability.
### Key Changes:
- **Workspace Sandbox**: All operations are now restricted to a specified workspace directory
- **Simplified APIs**: Removed complex path parameters, added intelligent file discovery
- **Enhanced Security**: Built-in path validation prevents directory traversal attacks
- **Smart Organization**: Automatic file organization in `output/` subdirectories
## Installation & Usage
```bash
# Install and run with workspace
npx mcp-artisan /path/to/your/workspace
# Example
npx mcp-artisan ./my-project
```
**Required**: You must specify a workspace directory when starting the server.
## Configuration for AI Environments (Cursor, etc.)
To use MCP-Artisan with AI development environments like Cursor, you need to configure the MCP server command.
1. **Install MCP-Artisan globally or within your project:**
```bash
# Global installation
npm install -g mcp-artisan
# Or local project installation
npm install mcp-artisan
```
2. In your environment's MCP server settings (e.g., in `.cursor-agent/mcp.json` or a similar configuration file), set up the server command as follows:
* **Command**: `npx`
* **Arguments**: `["mcp-artisan", "/path/to/your/project/workspace"]`
Replace `/path/to/your/project/workspace` with the **absolute path** to the folder you want the AI to work in. This folder will be used to find prompts and save output files.
**Example Configuration (`.cursor-agent/mcp.json`):**
```json
{
"mcpServers": {
"my-artisan-tool": {
"command": "npx",
"args": [
"-y",
"mcp-artisan",
"/Users/username/my-ai-project"
]
}
}
}
```
## New API Reference
### listPrompts
Lists available prompt files automatically.
- **Parameters**: None
- **Behavior**: Searches in `workspace/prompts/` first, falls back to workspace root
- **Returns**: Array of prompt filenames
### getPromptContent
Reads prompt file content by filename.
- **Parameters**:
- `promptFileName` (string): Just the filename, no path needed
- **Behavior**: Automatically searches in prompts directory and workspace root
### saveHtml
Saves HTML with automatic organization.
- **Parameters**:
- `htmlContent` (string): Complete HTML content
- `subfolderName` (string, max 20 chars): Descriptive folder name
- `fileName` (string): Filename without .html extension
- **Output**: Saves to `workspace/output/{subfolderName}/{fileName}.html`
### renderImageFromHtml
Renders HTML to image using relative paths.
- **Parameters**:
- `htmlPath` (string): Relative path from workspace (e.g., "output/my-card/index.html")
- `imageType` (optional): 'png' or 'jpeg'
- **Output**: Image saved alongside HTML file
## Migration from v1.x
| v1.x Parameter | v2.x Parameter | Notes |
|---|---|---|
| `promptsPath` | *(removed)* | Auto-discovery in workspace |
| `promptPath` | `promptFileName` | Just filename, no path |
| `outputPath` | `subfolderName` | Auto-organized in output/ |
| `htmlPath` (absolute) | `htmlPath` (relative) | Relative to workspace |
## Security Features
- **Workspace Sandbox**: All file operations restricted to workspace
- **Path Validation**: Prevents directory traversal (../) attacks
- **Input Sanitization**: Validates filenames and folder names
- **Symlink Protection**: Resolves real paths to prevent escapes
## Example Workflow
```bash
# Start server with workspace
npx mcp-artisan ./my-project
# Directory structure will be:
# my-project/
# ├── prompts/ # Your prompt files
# │ ├── card.txt
# │ └── banner.md
# └── output/ # Generated files
# └── my-cards/ # Organized by subfolder
# ├── card.html
# └── card.png
```
## Development
```bash
# Clone and install
git clone <repo>
cd mcp-artisan
npm install
# Build
npm run build
# Development with workspace
npm run dev -- ./test-workspace
```
## License
MIT
## Contributing
Issues and pull requests are welcome. Please ensure all tests pass before submitting.
```
Connection Info
You Might Also Like
everything-claude-code
Complete Claude Code configuration collection - agents, skills, hooks,...
markitdown
MarkItDown-MCP is a lightweight server for converting URIs to Markdown.
firecrawl
Firecrawl MCP Server enables web scraping, crawling, and content extraction.
servers
Model Context Protocol Servers
servers
Model Context Protocol Servers
Time
A Model Context Protocol server for time and timezone conversions.