Compare commits

...

11 Commits

Author SHA1 Message Date
Ismail Ali
0da75ff11b mcp server gestartet
Some checks failed
CI / test (3.10) (push) Has been cancelled
CI / test (3.11) (push) Has been cancelled
CI / test (3.12) (push) Has been cancelled
CI / test (3.13) (push) Has been cancelled
CI / security-check (push) Has been cancelled
CI / build-test (push) Has been cancelled
CI / test-docker (push) Has been cancelled
Publish to PyPI / check-tests (push) Has been cancelled
Publish to PyPI / publish-release (push) Has been cancelled
Publish to PyPI / publish (push) Has been cancelled
Code Quality / code-quality (push) Has been cancelled
2025-07-16 19:47:33 +02:00
JM Robles
37ec03275f Merge pull request #11 from montevive/fix/publish-gh
ci: add permissions for creating releases in publish workflow
2025-06-29 23:04:49 +02:00
chema
52c078d479 ci: add permissions for creating releases in publish workflow 2025-06-29 23:03:13 +02:00
JM Robles
00fd8c658e Merge pull request #10 from montevive/release/0.1.2
chore: update version to 0.1.2 in __init__.py
2025-06-29 22:50:13 +02:00
chema
099a283a28 chore: update version to 0.1.2 in __init__.py 2025-06-29 22:49:40 +02:00
JM Robles
ea705f0843 Merge pull request #9 from montevive/fix/cd-publish
ci: add workflow_call trigger to CI configuration
2025-06-29 22:45:33 +02:00
chema
230cf757f9 ci: add workflow_call trigger to CI configuration 2025-06-29 22:44:46 +02:00
JM Robles
316ace9284 Merge pull request #8 from montevive/fix/cd-publish
ci: update publish workflow to check PyPI version using JSON API and …
2025-06-29 22:42:55 +02:00
chema
96800a63be ci: update publish workflow to check PyPI version using JSON API and switch to softprops/action-gh-release for GitHub releases 2025-06-29 22:41:15 +02:00
JM Robles
28129a281e Merge pull request #5 from montevive/dependabot/github_actions/codecov/codecov-action-5
ci(deps): bump codecov/codecov-action from 4 to 5
2025-06-29 21:50:57 +02:00
dependabot[bot]
c3f9ead7c9 ci(deps): bump codecov/codecov-action from 4 to 5
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 4 to 5.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/codecov/codecov-action/compare/v4...v5)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-29 19:37:49 +00:00
6 changed files with 132 additions and 116 deletions

10
.env Normal file
View File

@@ -0,0 +1,10 @@
# ✅ Penpot Login-Daten (von deinem Penpot-Server)
PENPOT_USERNAME=dein_benutzername
PENPOT_PASSWORD=dein_passwort
# ✅ Server-Konfiguration für den MCP Server
PORT=5000
DEBUG=true
# ✅ API URL deiner lokalen Penpot-Instanz
PENPOT_API_URL=http://192.168.10.102:9010/api

View File

@@ -5,6 +5,7 @@ on:
branches: [ main, develop ]
push:
branches: [ main, develop ]
workflow_call:
jobs:
test:
@@ -40,7 +41,7 @@ jobs:
uv run pytest --cov=penpot_mcp tests/ --cov-report=xml --cov-report=term-missing
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
uses: codecov/codecov-action@v5
if: matrix.python-version == '3.12'
with:
file: ./coverage.xml

View File

@@ -20,6 +20,8 @@ jobs:
needs: check-tests
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main' && github.event_name == 'push'
permissions:
contents: write # Required for creating releases
steps:
- uses: actions/checkout@v4
@@ -47,8 +49,9 @@ jobs:
CURRENT_VERSION=$(python -c "import penpot_mcp; print(penpot_mcp.__version__)")
echo "current_version=$CURRENT_VERSION" >> $GITHUB_OUTPUT
# Check if this version already exists on PyPI
if pip index versions penpot-mcp | grep -q "$CURRENT_VERSION"; then
# Check if this version already exists on PyPI using the JSON API
HTTP_STATUS=$(curl -s -o /dev/null -w "%{http_code}" "https://pypi.org/pypi/penpot-mcp/$CURRENT_VERSION/json")
if [ "$HTTP_STATUS" = "200" ]; then
echo "version_exists=true" >> $GITHUB_OUTPUT
echo "Version $CURRENT_VERSION already exists on PyPI"
else
@@ -119,12 +122,10 @@ jobs:
- name: Create GitHub Release
if: steps.version-check.outputs.version_exists == 'false'
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
uses: softprops/action-gh-release@v2
with:
tag_name: v${{ steps.version-check.outputs.current_version }}
release_name: Release v${{ steps.version-check.outputs.current_version }}
name: Release v${{ steps.version-check.outputs.current_version }}
body: |
## Changes in v${{ steps.version-check.outputs.current_version }}
@@ -141,20 +142,10 @@ jobs:
See commit history for detailed changes.
**Full Changelog**: https://github.com/montevive/penpot-mcp/compare/v${{ steps.version-check.outputs.current_version }}...HEAD
files: dist/*
draft: false
prerelease: false
- name: Upload Release Assets
if: steps.version-check.outputs.version_exists == 'false'
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create-release.outputs.upload_url }}
asset_path: dist/
asset_name: penpot-mcp-${{ steps.version-check.outputs.current_version }}-dist.zip
asset_content_type: application/zip
- name: Notify on success
if: steps.version-check.outputs.version_exists == 'false'
run: |

2
.gitignore vendored
View File

@@ -30,7 +30,7 @@ env/
.python-version
# Environment variables
.env
#.env
# IDE files
.idea/

View File

@@ -1,5 +1,6 @@
# Penpot MCP Server 🎨🤖
<!-- git test -->
<p align="center">
<img src="images/penpot-mcp.png" alt="Penpot MCP Logo" width="400"/>
</p>
@@ -47,6 +48,7 @@ Check out our demo video to see Penpot MCP in action:
## ✨ Features
### 🔌 Core Capabilities
- **MCP Protocol Implementation**: Full compliance with Model Context Protocol standards
- **Real-time Design Access**: Direct integration with Penpot's API for live design data
- **Component Analysis**: AI-powered analysis of design components and layouts
@@ -54,12 +56,14 @@ Check out our demo video to see Penpot MCP in action:
- **Design Validation**: Automated design system compliance checking
### 🛠️ Developer Tools
- **Command-line Utilities**: Powerful CLI tools for design file analysis and validation
- **Python SDK**: Comprehensive Python library for custom integrations
- **REST API**: HTTP endpoints for web application integration
- **Extensible Architecture**: Plugin system for custom AI workflows
### 🎨 AI Integration Features
- **Claude Desktop & Cursor Integration**: Native support for Claude AI assistant in both Claude Desktop and Cursor IDE
- **Design Context Sharing**: Provide design context to AI models for better responses
- **Visual Component Recognition**: AI can "see" and understand design components
@@ -69,18 +73,21 @@ Check out our demo video to see Penpot MCP in action:
## 💡 Use Cases
### For Designers
- **Design Review Automation**: Get instant AI feedback on accessibility, usability, and design principles
- **Component Documentation**: Automatically generate documentation for design systems
- **Design Consistency Checks**: Ensure brand guidelines compliance across projects
- **Asset Organization**: AI-powered tagging and categorization of design components
### For Developers
- **Design-to-Code Workflows**: Bridge the gap between design and development with AI assistance
- **API Integration**: Programmatic access to design data for custom tools and workflows
- **Automated Testing**: Generate visual regression tests from design specifications
- **Design System Sync**: Keep design tokens and code components in sync
### For Product Teams
- **Design Analytics**: Track design system adoption and component usage
- **Collaboration Enhancement**: AI-powered design reviews and feedback collection
- **Workflow Optimization**: Automate repetitive design operations and approvals
@@ -152,6 +159,7 @@ DEBUG=true
```
> **⚠️ CloudFlare Protection Notice**: The Penpot cloud site (penpot.app) uses CloudFlare protection that may occasionally block API requests. If you encounter authentication errors or blocked requests:
>
> 1. Open your web browser and navigate to [https://design.penpot.app](https://design.penpot.app)
> 2. Log in to your Penpot account
> 3. Complete any CloudFlare human verification challenges if prompted
@@ -246,6 +254,7 @@ penpot-client
## MCP Resources & Tools
### Resources
- `server://info` - Server status and information
- `penpot://schema` - Penpot API schema as JSON
- `penpot://tree-schema` - Penpot object tree schema as JSON
@@ -253,6 +262,7 @@ penpot-client
- `penpot://cached-files` - List of cached Penpot files
### Tools
- `list_projects` - List all Penpot projects
- `get_project_files` - Get files for a specific project
- `get_file` - Retrieve a Penpot file by its ID and cache it
@@ -291,6 +301,7 @@ Add the following configuration to your Claude Desktop config file (`~/Library/A
Cursor IDE supports MCP servers through its AI integration features. To configure Penpot MCP with Cursor:
1. **Install the MCP server** (if not already installed):
```bash
pip install penpot-mcp
```
@@ -314,6 +325,7 @@ Cursor IDE supports MCP servers through its AI integration features. To configur
```
3. **Alternative: Use environment variables** by creating a `.env` file in your project root:
```bash
PENPOT_API_URL=https://design.penpot.app/api
PENPOT_USERNAME=your_penpot_username
@@ -321,6 +333,7 @@ Cursor IDE supports MCP servers through its AI integration features. To configur
```
4. **Start the MCP server** in your project:
```bash
# In your project directory
penpot-mcp
@@ -335,6 +348,7 @@ Cursor IDE supports MCP servers through its AI integration features. To configur
### Key Integration Features
Both Claude Desktop and Cursor integration provide:
- **Direct access** to Penpot projects and files
- **Visual component analysis** with AI-powered insights
- **Design export capabilities** for assets and components

View File

@@ -1,5 +1,5 @@
"""Penpot MCP Server - Model Context Protocol server for Penpot."""
__version__ = "0.1.1"
__version__ = "0.1.2"
__author__ = "Montevive AI Team"
__email__ = "info@montevive.ai"