الملفات
GitPasha-MCP-Server/README.md

502 أسطر
12 KiB
Markdown

# 🎯 Overview
#### GitPasha MCP Server is a Model Context Protocol (`MCP`) server that enables Claude Desktop to interact with GitPasha repositories. It provides a comprehensive set of tools for repository management, issue tracking, and pull request operations.
### Key Capabilities:
- 🔐 Secure API authentication
- 📦 Repository `CRUD` operations
- 🐛 Issue management
- 🔀 Pull request creation
- 📝 README file generation
- 🌐 Both local (`stdio`) and cloud (`SSE`) deployment
---
# ✨ Features
- ✅ Repository Management: Create, update, delete repositories
- ✅ Issue Tracking: List, create, update issues with labels and assignees
- ✅ Pull Requests: Open pull requests between branches
- ✅ Auto-suggestions: Smart repository descriptions
- ✅ Flexible Deployment: Local stdio or cloud SSE transport
- ✅ Docker Ready: Containerized for easy cloud deployment
- ✅ Comprehensive Logging: Detailed activity logs for debugging
---
# 📁 Project Structure
```bash
gitpasha-mcp/
├── 📄 main.py # Server entry point
├── 📄 Dockerfile # Docker configuration
├── 📄 requirements.txt # Python dependencies
├── 📄 .env # Environment variables (create from .env.example)
├── 📄 .env.example # Environment template
├── 📄 .gitignore # Git ignore rules
├── 📄 .dockerignore # Docker ignore rules
├── 📄 README.md # This file
├── 📂 api/ # API layer - Direct GitPasha API calls
│ ├── __init__.py
│ ├── 📂 repos/ # Repository operations
│ │ ├── __init__.py
│ │ ├── create.py # Create repository
│ │ ├── update.py # Update repository
│ │ └── delete.py # Delete repository
│ ├── 📂 issues/ # Issue operations
│ │ ├── __init__.py
│ │ ├── list.py # List issues
│ │ ├── create.py # Create issue
│ │ └── update.py # Update issue
│ ├── 📂 pulls/ # Pull request operations
│ │ ├── __init__.py
│ │ └── open.py # Open pull request
│ └── 📂 files/ # File operations
│ ├── __init__.py
│ └── create_readme.py # Create README
├── 📂 tools/ # Tools layer - MCP tool wrappers
│ ├── __init__.py
│ ├── repo_create.py # Repository creation tool
│ ├── repo_update.py # Repository update tool
│ ├── repo_delete.py # Repository deletion tool
│ ├── issue_list.py # Issue listing tool
│ ├── issue_create.py # Issue creation tool
│ ├── issue_update.py # Issue update tool
│ └── pr_open.py # Pull request tool
├── 📂 helpers/ # Helper utilities
│ ├── __init__.py
│ ├── logger.py # Logging configuration
│ ├── headers.py # API authentication headers
│ ├── http_client.py # HTTP client with logging
│ ├── error_formatter.py # Error message formatting
│ └── descriptions.py # Repository description suggestions
└── 📂 logs/ # Application logs (auto-created)
└── gitpasha.log
```
---
# 🔧 Installation
### Prerequisites:
- Python 3.12+ installed
- Git installed
- GitPasha account with API access
- Docker (optional, for cloud deployment)
##### Step 1: Clone the Repository
```bash
git clone https://github.com/YOUR_USERNAME/gitpasha-mcp.git
cd gitpasha-mcp
```
##### Step 2: Create Virtual Environment
```bash
# Windows
python -m venv .venv
.venv\Scripts\activate
# macOS/Linux
python3 -m venv .venv
source .venv/bin/activate
```
##### Step 3: Install Dependencies
```bash
pip install -r requirements.txt
```
---
# ⚙️ Configuration
##### Step 1: Create Environment File
```bash
# Copy the example file
cp .env.example .env
```
##### Step 2: Configure `.env`
**Edit `.env` with your credentials:**
```bash
# GitPasha API Configuration
GITPASHA_API_KEY=your_api_key_here
GITPASHA_BASE_URL=https://app.gitpasha.com/api/v1
GITPASHA__USERNAME=your_username
# Logging Configuration
LOG_LEVEL=DEBUG
LOG_FILE=logs/gitpasha.log
# Server Configuration (for cloud deployment)
MCP_TRANSPORT=stdio # Use 'stdio' for local, 'sse' for cloud
HOST=0.0.0.0
PORT=8000
```
##### Step 3: Get Your API Key
1. Visit: https://app.gitpasha.com/settings
2. Navigate to API Keys section
3. Generate a new API key
4. Copy and paste into .env
##### Step 4: Create Logs Directory
```bash
mkdir logs
```
---
# 🚀 Running the Server
### Local Development (stdio - for Claude Desktop)
```bash
# Set transport to stdio in .env
MCP_TRANSPORT=stdio
# Run the server
python main.py
```
### You should see:
```bash
INFO | Starting MCP server | BASE_URL=https://app.gitpasha.com/api/v1 | Transport=stdio
```
### Cloud Deployment (SSE - for remote access)
```bash
# Set transport to sse in .env
MCP_TRANSPORT=sse
# Run the server
python main.py
```
You should see:
```bash
INFO | Starting SSE server on 0.0.0.0:8000
INFO | Uvicorn running on http://0.0.0.0:8000
```
---
# 🔍 Testing with Inspector
#### The MCP Inspector is a debugging tool for testing your MCP server.
##### Step 1: Start the Inspector
```bash
npx @modelcontextprotocol/inspector
```
##### Output:
```bash
🚀 MCP Inspector is up and running at:
http://localhost:6274/?MCP_PROXY_AUTH_TOKEN=...
```
##### Step 2: Configure Connection
- For Local (`stdio`):
- In the Inspector UI:
- Transport: `stdio`
- Command: `.venv\Scripts\python.exe` (Windows) or `.venv/bin/python` (macOS/Linux)
- Args: `main.py`
- For Cloud (`SSE`):
- In the Inspector UI:
- Transport: `sse`
- URL: `http://localhost:8000/sse`
##### Step 3: Test Tools
**Once connected, you'll see all available tools. Try testing:**
###### Create Repository:
```json
{
"name": "test-repo",
"description": "Test repository from inspector",
"private": false
}
```
###### List Issues:
```json
{
"repo": "test-repo",
"state": "open"
}
```
---
# 🖥️ Claude Desktop Integration
##### Step 1: Locate Config File
**Windows:**
```bash
%APPDATA%\Claude\claude_desktop_config.json
```
**macOS:**
```bash
~/Library/Application Support/Claude/claude_desktop_config.json
```
**Linux:**
```bash
~/.config/Claude/claude_desktop_config.json
```
##### Step 2: Add Server Configuration
**For Local Development (stdio):**
```json
{
"mcpServers": {
"gitpasha": {
"command": "python",
"args": [
"C:\\Users\\YOUR_USERNAME\\path\\to\\gitpasha-mcp\\main.py"
],
"env": {
"MCP_TRANSPORT": "stdio"
}
}
}
}
```
**For Cloud/Remote (SSE):**
```json
{
"mcpServers": {
"gitpasha": {
"url": "https://your-app.ghaymah.systems/sse",
"transport": "sse"
}
}
}
```
##### Step 3: Restart Claude Desktop
**Close and reopen Claude Desktop completely.**
##### Step 4: Verify Connection
**In Claude Desktop, look for the 🔌 hammer icon indicating MCP servers are connected. You should see `"gitpasha"` listed.**
---
# ☁️ Deployment
### Docker Deployment
**Build Image**
```bash
docker build -t gitpasha-mcp:latest .
```
```bash
docker run -p 8000:8000 --env-file .env gitpasha-mcp:latest
```
**Push to Docker Hub**
```bash
# Login
docker login
# Tag
docker tag gitpasha-mcp:latest YOUR_DOCKERHUB_USERNAME/gitpasha-mcp:latest
# Push
docker push YOUR_DOCKERHUB_USERNAME/gitpasha-mcp:latest
```
### Ghaymah Cloud Deployment
1. Visit: https://deploy.ghaymah.systems/
2. Choose: **Deploy from Docker Hub** or **Deploy from GitHub**
3. Configure Environment Variables:
```bash
GITPASHA_API_KEY=your_api_key
GITPASHA__USERNAME=your_username
GITPASHA_BASE_URL=https://app.gitpasha.com/api/v1
MCP_TRANSPORT=sse
HOST=0.0.0.0
PORT=8000
```
4. Deploy and get your URL!
---
# 🛠️ Available Tools
### 1. `repo_create_tool`
**Create a new repository**
*Parameters:*
- `name` (required): Repository name
- `description` (optional): Repository description
- `private` (optional): Make repository private (default: false)
- `create_readme` (optional): Create README file (default: true)
- `readme_content` (optional): Custom README content
##### Example:
```bash
Create a new repository called "my-api-project"
```
### 2. `repo_update_tool`
**Update repository settings**
*Parameters:*
- `repo` (required): Repository name (e.g., "test-repo" or "username/test-repo")
- `name` (optional): New repository name
- `description` (optional): New description
- `private` (optional): Change privacy setting
##### Example:
```bash
Update repository "test-repo" to have description "Production API"
```
### 3. `repo_delete_tool`
**Delete a repository**
##### Example:
- `repo` (required): Repository name
*Example:*
```bash
Delete repository "old-test-repo"
```
### 4. `issue_list_tool`
**List repository issues**
*Parameters:*
- `repo` (required): Repository name
- `state` (optional): "open", "closed", or "all" (default: "open")
##### Example:
```bash
Show me all open issues in "my-project"
```
5. `issue_create_tool`
**Create a new issue**
*Parameters:*
- `repo` (required): Repository name
- `title` (required): Issue title
- `body` (optional): Issue description
- `labels_csv` (optional): Comma-separated labels
- `assignees_csv` (optional): Comma-separated usernames
##### Example:
```bash
Create an issue in "my-project" titled "Fix login bug" with label "bug"
```
### 6. `issue_update_tool`
**Update an existing issue**
*Parameters:*
- `repo` (required): Repository name
- `issue` (required): Issue number
- `title` (optional): New title
- `body` (optional): New description
- `state` (optional): "open" or "closed"
- `labels_csv` (optional): Update labels
- `assignees_csv` (optional): Update assignees
- `comment` (optional): Add comment to issue
##### Example:
```bash
Close issue #5 in "my-project" and add comment "Fixed in PR #10"
```
7. `pr_open_tool`
**Open a pull request**
*Parameters:*
- `repo` (required): Repository name
- `title` (required): PR title
- `head` (required): Source branch
- `base` (required): Target branch
- `body` (optional): PR description
##### Example:
```bash
Open a pull request in "my-project" from "feature-branch" to "main"
```
---
# 💡 Usage Examples
### Example 1: Create and Initialize Project
```bash
Create a new repository called "awesome-api" with description "RESTful API for awesome app"
```
Claude will:
1. Create the repository
2. Generate a README file
3. Return the repository URL
### Example 2: Manage Issues
```bash
List all open issues in my-project
```
Then:
```bash
Create a new issue in my-project titled "Add authentication" with labels "enhancement,security"
```
Then:
```bash
Update issue #3 in my-project, close it and add comment "Implemented in v2.0"
```
### Example 3: Repository Workflow
```bash
Update repository "test-api" to be private and change description to "Internal API"
```
---
# 🐛 Troubleshooting
#### Issue: "GITPASHA__USERNAME not set in .env"
#### Solution: Add your username to `.env`:
```bash
GITPASHA__USERNAME=your_username
```
#### Issue: "Invalid or expired API key"
#### Solution:
1. Verify API key in `.env`
2. Generate new key from https://app.gitpasha.com/settings
3. Ensure no extra spaces in `.env` file
#### Issue: "404 page not found"
#### Solution: Make sure repository name includes username:
- Correct: `"test-repo"` (username added automatically)
- Correct: `"username/test-repo"`
#### Issue: Claude Desktop not connecting
#### Solution:
1. Check `claude_desktop_config.json` syntax
2. Verify file paths use correct slashes
3. Restart Claude Desktop completely
4. Check logs: `logs/gitpasha.log`
#### Issue: SSE connection fails
#### Solution:
1. Verify server is running on `0.0.0.0:8000`
2. Check firewall settings
3. Test with:
```bash
curl http://localhost:8000/sse
```
---
# 💬 contact with me:
#### mail: mohamedelawakey@gmail.com
#### whatsapp/phone : +201127247680
---