EasyProject-MCP-Server

hnizdiljan/EasyProject-MCP-Server

3.2

If you are the rightful owner of EasyProject-MCP-Server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

The EasyProject MCP Server is designed to integrate EasyProject API functionalities directly into the Cursor AI editor, providing a seamless project management experience.

Tools
  1. list_projects

    Retrieve a list of all projects with filtering options.

  2. create_issue

    Create a new task within a specified project.

  3. assign_issue

    Assign a task to a specific user.

  4. complete_task

    Mark a task as completed.

  5. generate_project_report

    Generate a detailed report for a specific project.

🚀 EasyProject MCP Server

Model Context Protocol server pro integraci s EasyProject API - umožňuje použití EasyProject nástrojů přímo v Cursor AI editoru.

📋 Obsah

✨ Funkce

Základní funkcionality

  • MCP protokol: Plná implementace Model Context Protocol
  • Správa projektů: Vytváření, aktualizace, mazání a seznam projektů
  • Správa úkolů: Komplexní správa issues včetně přiřazování a označování jako dokončené
  • Správa uživatelů: Seznam uživatelů a analýza pracovního vytížení
  • Časové sledování: Záznam a správa časových záznamů
  • Reporting: Generování sestav projektů a dashboard dat

Pokročilé funkce

  • Caching: In-memory cache s konfigurovatelným TTL
  • Rate limiting: Ochrana před přetížením API
  • Retry logika: Automatické opakování neúspěšných požadavků
  • Strukturované logování: JSON formát pro monitoring
  • Konfigurovatelnost: Rozsáhlé možnosti konfigurace

🚀 Rychlé spuštění

Předpoklady

  • Rust 1.70+
  • Aktivní EasyProject instance
  • API klíč pro EasyProject

Základní spuštění

  1. Klonování repozitáře:
git clone https://github.com/your-org/easyproject-mcp-server.git
cd easyproject-mcp-server
  1. Konfigurace:
cp config.toml.example config.toml
# Upravte config.toml s vašimi údaji
  1. Nastavení environment proměnných:
export EASYPROJECT_API_KEY="your-api-key"
export EASYPROJECT_BASE_URL="https://your-instance.easyproject.com"
  1. Spuštění:
cargo run

📦 Instalace

Pomocí Cargo

cargo install easyproject-mcp-server

Pomocí Docker

docker run -d \
  --name easyproject-mcp \
  -e EASYPROJECT_API_KEY="your-key" \
  -e EASYPROJECT_BASE_URL="https://your-instance.com" \
  easyproject/mcp-server:latest

Sestavení ze zdrojového kódu

git clone https://github.com/your-org/easyproject-mcp-server.git
cd easyproject-mcp-server
cargo build --release

⚙️ Konfigurace

Server používá TOML konfigurační soubor. Příklad kompletní konfigurace:

[server]
name = "EasyProject MCP Server"
version = "1.0.0"
transport = "stdio"  # stdio nebo websocket
websocket_port = 8080

[easyproject]
base_url = "https://your-instance.easyproject.com"
api_version = "v1"
auth_type = "api_key"  # api_key, oauth2, session
api_key = ""  # Doporučujeme nastavit přes ENV
api_key_header = "X-Redmine-API-Key"

[http]
timeout_seconds = 30
max_retries = 3
retry_delay_seconds = 1
user_agent = "EasyProject-MCP-Server/1.0.0"

[rate_limiting]
enabled = true
requests_per_minute = 60
burst_size = 10

[cache]
enabled = true
ttl_seconds = 300
max_entries = 1000
project_ttl = 600
user_ttl = 1800
issue_ttl = 60
time_entry_ttl = 30

[logging]
level = "info"
format = "json"
target = "stdout"

[tools.projects]
enabled = true
include_archived = false
default_limit = 25

[tools.issues]
enabled = true
default_limit = 25
include_attachments = false
include_relations = false

[tools.users]
enabled = true
default_limit = 25

[tools.time_entries]
enabled = true
default_limit = 25

[tools.reports]
enabled = true
cache_ttl = 3600

Environment proměnné

ProměnnáPopisPovinná
EASYPROJECT_API_KEYAPI klíč pro EasyProjectAno
EASYPROJECT_BASE_URLURL EasyProject instanceAno
MCP_LOG_LEVELÚroveň logování (trace, debug, info, warn, error)Ne

🛠️ Dostupné nástroje

Správa projektů

NástrojPopis
list_projectsSeznam všech projektů s filtrováním
get_projectDetail konkrétního projektu
create_projectVytvoření nového projektu
update_projectAktualizace existujícího projektu
delete_projectSmazání projektu

Správa úkolů

NástrojPopis
list_issuesSeznam úkolů s filtrováním
get_issueDetail konkrétního úkolu
create_issueVytvoření nového úkolu
update_issueAktualizace úkolu
assign_issuePřiřazení úkolu uživateli
complete_taskOznačení úkolu jako dokončený

Správa uživatelů

NástrojPopis
list_usersSeznam všech uživatelů
get_userDetail konkrétního uživatele
get_user_workloadPracovní vytížení uživatele

Časové sledování

NástrojPopis
list_time_entriesSeznam časových záznamů
get_time_entryDetail časového záznamu
log_timeZáznam odpracovaného času
update_time_entryAktualizace časového záznamu

Reporting

NástrojPopis
generate_project_reportDetailní sestava projektu
get_dashboard_dataAgregovaná data pro dashboard

📖 Příklady použití

Získání seznamu projektů

{
  "method": "tools/call",
  "params": {
    "name": "list_projects",
    "arguments": {
      "limit": 10,
      "include_archived": false
    }
  }
}

Vytvoření nového úkolu

{
  "method": "tools/call",
  "params": {
    "name": "create_issue",
    "arguments": {
      "project_id": 1,
      "tracker_id": 1,
      "subject": "Nový úkol",
      "description": "Popis úkolu",
      "assigned_to_id": 5,
      "priority_id": 2
    }
  }
}

Přiřazení úkolu

{
  "method": "tools/call",
  "params": {
    "name": "assign_issue",
    "arguments": {
      "id": 123,
      "assigned_to_id": 5
    }
  }
}

Označení úkolu jako dokončený

{
  "method": "tools/call",
  "params": {
    "name": "complete_task",
    "arguments": {
      "id": 123,
      "done_ratio": 100
    }
  }
}

Generování sestavy projektu

{
  "method": "tools/call",
  "params": {
    "name": "generate_project_report",
    "arguments": {
      "project_id": 1,
      "from_date": "2023-01-01",
      "to_date": "2023-12-31",
      "include_time_entries": true,
      "include_issues": true
    }
  }
}

Získání pracovního vytížení

{
  "method": "tools/call",
  "params": {
    "name": "get_user_workload",
    "arguments": {
      "id": 5,
      "from_date": "2023-11-01",
      "to_date": "2023-11-30"
    }
  }
}

🚢 Deployment

Docker

  1. Vytvoření Docker image:
docker build -t easyproject-mcp-server .
  1. Spuštění kontejneru:
docker run -d \
  --name easyproject-mcp \
  -e EASYPROJECT_API_KEY="your-key" \
  -e EASYPROJECT_BASE_URL="https://your-instance.com" \
  -p 8080:8080 \
  easyproject-mcp-server

systemd (Linux)

  1. Kopírování binárky:
sudo cp target/release/easyproject-mcp-server /usr/local/bin/
  1. Vytvoření systemd service:
sudo tee /etc/systemd/system/easyproject-mcp.service > /dev/null <<EOF
[Unit]
Description=EasyProject MCP Server
After=network.target

[Service]
Type=simple
User=easyproject
WorkingDirectory=/opt/easyproject-mcp
ExecStart=/usr/local/bin/easyproject-mcp-server
Restart=always
RestartSec=10
Environment=EASYPROJECT_API_KEY=your-key
Environment=EASYPROJECT_BASE_URL=https://your-instance.com

[Install]
WantedBy=multi-user.target
EOF
  1. Spuštění služby:
sudo systemctl daemon-reload
sudo systemctl enable easyproject-mcp
sudo systemctl start easyproject-mcp

🔧 Vývoj

Sestavení vývojové verze

cargo build

Spuštění testů

# Unit testy
cargo test

# Integration testy
cargo test --test integration_tests

# Všechny testy s výstupem
cargo test -- --nocapture

Spuštění s debug logováním

RUST_LOG=debug cargo run

Linting a formátování

# Formátování kódu
cargo fmt

# Linting
cargo clippy -- -D warnings

# Kontrola bezpečnosti
cargo audit

Generování dokumentace

cargo doc --open

🔍 Troubleshooting

Časté problémy

"Connection refused" chyba
Chyba: Connection refused (os error 61)

Řešení: Zkontrolujte, že:

  • EasyProject instance je dostupná
  • URL v konfiguraci je správná
  • Firewall neblokuje připojení
"Unauthorized" chyba
Chyba: 401 Unauthorized

Řešení: Zkontrolujte, že:

  • API klíč je správný
  • API klíč má dostatečná oprávnění
  • API klíč není expirovaný
"Rate limit exceeded"
Chyba: 429 Too Many Requests

Řešení:

  • Snižte requests_per_minute v konfiguraci
  • Zvýšte retry_delay_seconds
  • Kontaktujte správce EasyProject instance
Cache problémy

Pro vymazání cache restartujte server nebo nastavte cache.enabled = false.

Debug režim

Pro detailní diagnostiku spusťte server s debug logováním:

RUST_LOG=debug ./easyproject-mcp-server

Logování

Server podporuje strukturované logování. Pro analýzu logů můžete použít nástroje jako jq:

./easyproject-mcp-server | jq '.level == "ERROR"'

Health check

Server poskytuje health check endpoint (pokud je spuštěn v WebSocket módu):

curl http://localhost:8080/health

📝 Licence

MIT License. Viz soubor pro detaily.

🤝 Přispívání

  1. Forkněte repozitář
  2. Vytvořte feature branch (git checkout -b feature/amazing-feature)
  3. Commitněte změny (git commit -m 'Add amazing feature')
  4. Pushněte do branch (git push origin feature/amazing-feature)
  5. Otevřete Pull Request

📞 Podpora

🗺️ Roadmap

  • WebSocket real-time notifikace
  • Plugin systém
  • Batch operace
  • Prometheus metrics
  • GraphQL endpoint
  • Webhooks podpora

Vytvořeno s ❤️ pro EasyProject komunitu

⚡ Rychlý Start

1. Deployment

# Použije existující EXE (nejrychlejší)
.\deploy.ps1 -SkipBuild

# Nebo vynutí nový build
.\deploy.ps1 -Force

# Rychlý deployment
.\quick-deploy.ps1

2. Konfigurace Cursor

Zkopírujte deployment/easyproject-mcp-server.exe kamkoliv a nastavte v Cursor:

{
  "mcpServers": {
    "easyproject": {
      "command": "C:\\path\\to\\easyproject-mcp-server.exe",
      "args": [],
      "env": {
        "EASYPROJECT_API_KEY": "your-api-key",
        "EASYPROJECT_BASE_URL": "https://your-instance.easyproject.com"
      }
    }
  }
}

3. Testování

V Cursor můžete použít:

@easyproject list_projects    # Seznam projektů
@easyproject create_issue     # Nový úkol  
@easyproject log_time         # Logování času

🔧 Deployment Skripty

SkriptPoužitíPopis
deploy.ps1Hlavní deploymentInteligentní build + kompletní balíček
quick-deploy.ps1Rychlý deploymentPouze kopírování EXE
setup-build-tools.ps1Setup prostředíInstalace build nástrojů

Troubleshooting Build Problémů

Pokud build selhává s chybou ring crate nebo gcc.exe:

# Rychlé řešení - použije existující EXE
.\deploy.ps1 -SkipBuild

# Oprava build prostředí
.\setup-build-tools.ps1

# Manuální oprava
rustup toolchain install stable-x86_64-pc-windows-msvc
winget install Microsoft.VisualStudio.2022.BuildTools

🎯 Single-File Deployment

EXE soubor (15.29 MB) je kompletně samostatný:

  • ✅ Všechny Rust dependencies zabudované
  • ✅ TLS support (rust-native, bez OpenSSL)
  • ✅ Žádné externí DLL dependencies
  • ✅ Portable - zkopírujte kamkoliv a spusťte

Systémové požadavky:

  • Windows 10/11 x64
  • Visual C++ Redistributable 2019+ (obvykle již nainstalován)

📚 Dokumentace

  • - Kompletní deployment guide
  • - Dokumentace jednotlivých nástrojů
  • - EasyProject API dokumentace

🛠 Vývoj

Build z sources:

git clone https://github.com/your-repo/easyproject-mcp-server
cd easyproject-mcp-server
cargo build --release

Testování:

cargo test
cargo check

Lokální deployment:

cargo build --release
.\quick-deploy.ps1

🔍 Architektura

Projekt dodržuje principy SOLID, KISS a CLEAN Code:

src/
├── main.rs              # Entry point
├── api/
│   ├── client.rs        # HTTP klient pro EasyProject API
│   └── models.rs        # Datové modely
├── tools/               # MCP nástroje
│   ├── project_tools.rs # Správa projektů
│   ├── issue_tools.rs   # Správa úkolů
│   └── time_tools.rs    # Časové záznamy
└── utils/
    └── formatting.rs    # Formátování výstupů

📄 Licence

MIT License - viz soubor.

🤝 Přispívání

  1. Fork projektu
  2. Vytvořte feature branch (git checkout -b feature/amazing-feature)
  3. Commit změny (git commit -m 'Add amazing feature')
  4. Push do branch (git push origin feature/amazing-feature)
  5. Otevřete Pull Request

📞 Podpora


Vyvinuto s ❤️ pro EasyProject komunitu