Skip to main content
Glama
kuraki5336

Lalaleap MCP Server

by kuraki5336

Lalaleap MCP Server

Ermöglicht KI-Tools, direkt über das MCP (Model Context Protocol) mit dem Lalaleap-Projektmanagementsystem zu interagieren.

Nach dem Anschluss kannst du die KI bitten, Anforderungen zu erstellen, Fehler zu prüfen oder Aufgaben zu verwalten – ganz ohne den Browser zu öffnen.


Was ist das?

你(在 Claude Code / Cursor 裡打字)
  ↓  "幫我在彰基專案建一筆需求:病歷查詢 API"
Claude / Cursor(透過 MCP Protocol 呼叫 tool)
  ↓  callTool("create_requirement", { pno, title, priority })
Lalaleap MCP Server(本專案,TypeScript + stdio)
  ↓  POST /require/add → POST /require/edit
Lalaleap 後端 API(Java)
  ↓
回傳結果 → AI 告訴你「需求已建立,編號 1000160」

Kurz gesagt: Es ist eine Übersetzungsschicht zwischen KI und Lalaleap.


Related MCP server: litejira-mcp

Schnellstart (3 Minuten)

Schritt 1: Dein KI-Tool konfigurieren

Du musst nichts manuell klonen; verweise in der MCP-Konfiguration direkt auf das GitHub-Repo, npx zieht und baut alles automatisch.

Claude Code – Bearbeite ~/.claude/settings.json:

{
  "mcpServers": {
    "lalaleap": {
      "command": "npx",
      "args": ["-y", "github:kuraki5336/tpi_lalaleap_mcp"],
      "env": {
        "LALALEAP_API_URL": "https://your-domain.com/ap2/lalaleap",
        "LALALEAP_EMAIL": "你的email@gmail.com",
        "LALALEAP_PASSWORD": "你的密碼",
        "LALALEAP_UNSAFE_SSL": "1"
      }
    }
  }
}

Cursor – Füge in den Einstellungen unter Settings → MCP einen neuen Server hinzu, Felder wie oben.

Voraussetzung: Der Rechner des Benutzers benötigt Zugriff auf das GitHub-Repo (bei privaten Repos ist ein SSH-Key oder Personal Access Token erforderlich).

LALALEAP_UNSAFE_SSL=1 wird benötigt, da das SSL-Zertifikat der Entwicklungsumgebung abgelaufen ist; in der Produktion nicht nötig.

Alternative: Lokale Installation

Falls du nicht jedes Mal über npx ziehen möchtest, kannst du das Repo auch klonen:

git clone https://github.com/kuraki5336/tpi_lalaleap_mcp.git
cd tpi_lalaleap_mcp && npm install

Dann die MCP-Konfiguration auf den lokalen Pfad ändern:

{
  "mcpServers": {
    "lalaleap": {
      "command": "node",
      "args": ["/你的路徑/tpi_lalaleap_mcp/dist/index.js"],
      "env": { ... }
    }
  }
}

Schritt 2: Loslegen

Starte dein KI-Tool neu und du kannst direkt mit der Konversation beginnen.


Authentifizierungsmethoden

Zwei Optionen, wähle eine:

Methode

Umgebungsvariable

Beschreibung

Login mit Benutzername/Passwort

LALALEAP_EMAIL + LALALEAP_PASSWORD

Das Passwort wird per SHA256 verschlüsselt (vom Programm erledigt); du gibst den Klartext ein

API-Token

LALALEAP_API_TOKEN

Verwendbar, sobald das Backend es unterstützt; hat Vorrang vor Benutzername/Passwort

Alle Umgebungsvariablen:

Variable

Erforderlich

Beschreibung

LALALEAP_API_URL

Ja

Basis-URL der API

LALALEAP_EMAIL

Eines davon

E-Mail für Login

LALALEAP_PASSWORD

Eines davon

Passwort für Login

LALALEAP_API_TOKEN

Eines davon

API-Token (hat Vorrang vor Benutzername/Passwort)

LALALEAP_UNSAFE_SSL

Nein

1 = SSL-Validierung überspringen

LALALEAP_READONLY

Nein

1 = schreibgeschützt, alle Schreibvorgänge verboten

LALALEAP_ALLOWED_PROJECTS

Nein

Whitelist für Projekte (durch Komma getrennte pno); nur für diese Projekte sind Schreibvorgänge erlaubt

LALALEAP_WRITE_RATE_LIMIT

Nein

Maximale Anzahl Schreibvorgänge pro Minute (Standard: 10)


Übersicht der verfügbaren Tools

Insgesamt 15 Tools, die KI wählt automatisch basierend auf deiner Anweisung das passende aus.

Projekte

Tool

Aufgabe

Erforderliche Parameter

Optionale Parameter

list_projects

Alle deine Projekte auflisten

get_project_detail

Projektdetails anzeigen

pno

create_project

Neues Projekt erstellen

name

type (0 öffentlich / 1 privat)

Anforderungen

Tool

Aufgabe

Erforderliche Parameter

Optionale Parameter

create_requirement

Anforderung erstellen

pno, title

describe, priority (hoch/mittel/niedrig), start_date, end_date

list_requirements

Anforderungsliste abrufen

pno

page, limit, keyword

get_requirement_detail

Anforderungsdetails anzeigen

pno, rno

update_requirement

Anforderung ändern

pno, rno

title, status, priority, describe, start_date, end_date

Fehler

Tool

Aufgabe

Erforderliche Parameter

Optionale Parameter

create_bug

Fehler erstellen

pno, title

describe, priority (hoch/mittel/niedrig), serious

list_bugs

Fehlerliste abrufen

pno

page, limit

update_bug

Fehler ändern

pno, rno

title, status, priority, serious, describe

Aufgaben / Sprint / Sonstiges

Tool

Aufgabe

Erforderliche Parameter

Optionale Parameter

create_todo

Aufgabe erstellen

pno, title

content, priority (high/medium/low), due_date, lane_no

list_todos

Aufgaben-Board anzeigen

pno

list_sprints

Sprintliste abrufen

pno

list_project_members

Projektmitglieder abrufen

pno

search_tags

Tags durchsuchen

pno

keyword


MCP-Ressourcen

Neben Tools (die aktiv aufgerufen werden) gibt es auch Ressourcen (die die KI als Kontext lesen kann):

URI

Inhalt

lalaleap://projects

Projektliste

lalaleap://project/{pno}/requirements

Anforderungen eines Projekts

lalaleap://project/{pno}/bugs

Fehler eines Projekts

lalaleap://project/{pno}/sprints

Sprints eines Projekts

lalaleap://project/{pno}/members

Mitglieder eines Projekts


Praxisbeispiel für einen Dialog

你:幫我看一下有哪些專案
AI:→ list_projects
    你有 12 個專案:彰基_測試、ProjectC、...

你:在彰基_測試建一筆需求「病歷查詢 API」,優先度高
AI:→ list_projects(找到 pno)
    → create_requirement(pno, title="病歷查詢 API", priority="高")
    需求已建立,編號 1000160

你:列出這個專案所有需求
AI:→ list_requirements(pno)
    共 5 筆需求:
    1. 病歷查詢 API(高)- 規劃中
    2. 使用者登入(中)- 進行中
    ...

你:建一個 bug「登入頁按鈕在 Safari 沒反應」
AI:→ create_bug(pno, title="登入頁按鈕在 Safari 沒反應")
    缺陷已建立,編號 2000005

你:幫我加一個待辦「寫 API 文件」,截止下週五
AI:→ create_todo(pno, title="寫 API 文件", due_date="2026-03-28")
    待辦已建立

Architektur und Quellcode-Überblick

tpi_tpad_mcp/
├── src/
│   ├── index.ts            # 入口:啟動 MCP Server、註冊 tools & resources
│   ├── config.ts           # 讀取環境變數
│   ├── api-client.ts       # axios HTTP client,處理登入/token/重試
│   ├── resources.ts        # 5 個 MCP Resources 定義
│   ├── test.ts             # API 整合測試(14 個端點)
│   ├── test-mcp.ts         # MCP Protocol E2E 測試(50 個案例)
│   └── tools/
│       ├── projects.ts     # list_projects, get_project_detail, create_project
│       ├── requirements.ts # create/list/get/update requirement
│       ├── bugs.ts         # create_bug, list_bugs
│       ├── todos.ts        # create_todo, list_todos
│       ├── sprints.ts      # list_sprints
│       ├── tags.ts         # search_tags
│       └── members.ts      # list_project_members
├── docs/
│   └── test-report.md      # QA 測試報告
├── package.json
└── tsconfig.json

Wichtige Designentscheidungen

  • Authentifizierung automatisch: Beim Start automatisch anmelden, bei 401 das Token automatisch erneuern, bei Misserfolg erneut anmelden

  • Zweischritt-Erstellung: Beim Erstellen einer Anforderung / eines Fehlers zuerst POST /add, um eine Nummer zu erhalten, dann POST /edit, um Felder zu füllen (wie das Frontend)

  • Keine Abstürze bei Fehlern: Jedes Tool hat try-catch und gibt freundliche chinesische Fehlermeldungen zurück

  • Schreibschutz: WriteGuard-Mechanismus schützt alle Schreibvorgänge (siehe unten)


Sicherheitsschutz (WriteGuard)

KI kann Anweisungen missverstehen und in Massen Müll schreiben. Alle Schreibvorgänge (create / update) haben drei Schutzstufen:

1. Schreibgeschützter Modus

Schreibvorgänge vollständig verboten; die KI kann nur abfragen, nichts erstellen/ändern:

{
  "env": {
    "LALALEAP_READONLY": "1"  // 所有 create/update tool 會被直接阻擋
  }
}

Anwendungsfälle: Demo, neue Teammitglieder, die das KI-Verhalten noch nicht kennen, reine Abfrageszenarien.

2. Projekt-Whitelist

Beschränkt die KI auf bestimmte Projekte, um zu verhindern, dass im falschen Projekt gearbeitet wird:

{
  "env": {
    // 只允許對這兩個專案做寫入操作,其他專案的 create/update 會被阻擋
    "LALALEAP_ALLOWED_PROJECTS": "be3fd182-3696-41a6-bce8-7f2e9d88b648,c53f210f-xxxx"
  }
}

Anwendungsfälle: In der Produktion nur Testprojekte freigeben, Teammitglieder arbeiten nur an ihren eigenen Projekten.

3. Schreibratenbegrenzung

Begrenzt die maximale Anzahl Schreibvorgänge pro Minute, um zu verhindern, dass die KI in kurzer Zeit viele Einträge erstellt:

{
  "env": {
    "LALALEAP_WRITE_RATE_LIMIT": "5"  // 每分鐘最多 5 次寫入(預設 10)
  }
}

Wenn das Limit erreicht wird, erhält die KI eine klare Fehlermeldung:

[頻率限制] 過去一分鐘已執行 5 次寫入操作(上限 5 次)。請稍後再試。

Anwendungsfälle: Verhindert, dass die KI in einer Schleife Masseneinträge erstellt oder Anweisungen wie „Erstelle 100 Anforderungen“ missversteht.

Empfohlene Konfigurationen

Szenario

Einstellung

Entwicklung/Test

Keine Begrenzung oder WRITE_RATE_LIMIT=20

Täglicher Gebrauch

ALLOWED_PROJECTS=<deine Projekt-pno> + WRITE_RATE_LIMIT=10

Demo-Präsentation

READONLY=1

Team-Nutzung

ALLOWED_PROJECTS=<Team-Projekte> + WRITE_RATE_LIMIT=5


Entwicklung

# 開發模式(tsx 直接跑,不需編譯)
npm run dev

# 編譯
npm run build

# API 整合測試(直接打 API,14 個端點)
npm test

# MCP Protocol E2E 測試(透過 stdio 模擬真實 MCP 連線,50 個案例)
LALALEAP_UNSAFE_SSL=1 npx tsx src/test-mcp.ts

Ein neues Tool hinzufügen

  1. Erstelle oder bearbeite die entsprechende Datei in src/tools/

  2. Registriere es mit server.tool(name, description, zodSchema, handler)

  3. Wenn es eine neue Datei ist, importiere und rufe die registrierende Funktion in src/index.ts auf

  4. Führe Tests durch

// 範例:新增一個 tool
server.tool(
  'my_new_tool',
  '這個 tool 做什麼',
  {
    pno: z.string().describe('專案編號'),
    someParam: z.string().optional().describe('說明'),
  },
  async ({ pno, someParam }) => {
    try {
      const resp = await api.post('/some/endpoint', { pno, someParam });
      return {
        content: [{ type: 'text', text: JSON.stringify(resp.data, null, 2) }],
      };
    } catch (err) {
      return {
        content: [{ type: 'text', text: formatError(err) }],
        isError: true,
      };
    }
  }
);

Fehlerbehebung

Problem

Lösung

certificate has expired

Setze LALALEAP_UNSAFE_SSL=1

Need to change password (601)

Wird automatisch behandelt (Server wiederholt mit keepCipher='Y')

LALALEAP_API_URL environment variable not set

Prüfe, ob der env-Block in der MCP-Client-Konfiguration gesetzt ist

Keine Verbindung zum Server

Stelle sicher, dass npm run build ausgeführt wurde und dist/index.js existiert

Tool erscheint nicht

Starte das KI-Tool neu und prüfe, ob settings.json korrekt formatiert ist


Technologie-Stack

Komponente

Version

Node.js

18+

TypeScript

5.9

MCP SDK

@modelcontextprotocol/sdk 1.27

HTTP Client

axios 1.13

Schema-Validierung

zod 4.3

Übertragungsart

stdio (Standard-Ein-/Ausgabe)


Testabdeckung

Kategorie

Anzahl

Bestehen

MCP Protocol E2E (inkl. Tools + Ressourcen + Randfälle)

50

100%

API-Integrationstests

14

100%

TypeScript-Typüberprüfung

Null Fehler

Vollständiger Testbericht siehe docs/test-report.md.

Install Server
F
license - not found
A
quality
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    A client-side MCP server that enables AI assistants to interact with the LiteJira issue tracking system for creating, searching, and managing issues via natural language.
    361
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    An MCP server that connects AI assistants to TickTick, enabling project and task management through natural language, including reading projects, finding tasks, creating tasks, and completing work.
    2
    MIT

View all related MCP servers

Related MCP Connectors

  • MCP server for generating rough-draft project plans from natural-language prompts.

  • MCP server for AI dialogue using various LLM models via AceDataCloud

  • MCP Server for Slima - AI Writing IDE for Novel Authors with AI Beta Reader.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/kuraki5336/tpi_lalaleap_mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server