Skip to main content
Glama
kuraki5336

Lalaleap MCP Server

by kuraki5336

Lalaleap MCP Server

Use MCP (Model Context Protocol) to let AI tools directly operate the Lalaleap project management system.

Once connected, you can use natural language to ask AI to create requirements, check bugs, and manage todos — no need to switch to the browser.


What is it?

你(在 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」

In one sentence: It is a translation layer between AI and Lalaleap.


Related MCP server: litejira-mcp

Quick Start (3 minutes)

Step 1: Configure Your AI Tool

No need to manually clone; just point to the GitHub repo in the MCP configuration, and npx will automatically pull and build.

Claude Code — Edit ~/.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 — Add a server in Settings → MCP, fields as above.

Prerequisite: The user's machine needs access to the GitHub repo (private repos require SSH key or personal access token).

LALALEAP_UNSAFE_SSL=1 is because the dev environment SSL certificate has expired; not needed in production.

Alternative: Local Installation

If you don't want to pull via npx each time, you can also clone it:

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

Then change the MCP configuration to point to the local path:

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

Step 2: Start Using

Restart your AI tool, and you can start using it directly by chatting.


Authentication Methods

Two methods supported, choose one:

Method

Environment Variables

Description

Password Login

LALALEAP_EMAIL + LALALEAP_PASSWORD

Password SHA256 encryption handled by the program; you provide plaintext

API Token

LALALEAP_API_TOKEN

Available when backend supports it; takes priority over password

All environment variables:

Variable

Required

Description

LALALEAP_API_URL

Yes

API base URL

LALALEAP_EMAIL

One of

Login email

LALALEAP_PASSWORD

One of

Login password

LALALEAP_API_TOKEN

One of

API Token (takes priority over password)

LALALEAP_UNSAFE_SSL

No

1 = Skip SSL verification

LALALEAP_READONLY

No

1 = Read-only mode, disables all write operations

LALALEAP_ALLOWED_PROJECTS

No

Project whitelist (comma-separated pno), only allows writes to these projects

LALALEAP_WRITE_RATE_LIMIT

No

Maximum write operations per minute (default 10)


Available Tools Overview

There are 15 tools in total; AI will automatically choose which to call based on your instructions.

Projects

Tool

What it does

Required Parameters

Optional Parameters

list_projects

List all your projects

get_project_detail

View project details

pno

create_project

Create a new project

name

type (0 public/1 private)

Requirements

Tool

What it does

Required Parameters

Optional Parameters

create_requirement

Create a requirement

pno, title

describe, priority (High/Medium/Low), start_date, end_date

list_requirements

List requirements

pno

page, limit, keyword

get_requirement_detail

View requirement details

pno, rno

update_requirement

Update a requirement

pno, rno

title, status, priority, describe, start_date, end_date

Bugs

Tool

What it does

Required Parameters

Optional Parameters

create_bug

Create a bug

pno, title

describe, priority (High/Medium/Low), serious

list_bugs

List bugs

pno

page, limit

update_bug

Update a bug

pno, rno

title, status, priority, serious, describe

Todos / Sprints / Others

Tool

What it does

Required Parameters

Optional Parameters

create_todo

Create a todo

pno, title

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

list_todos

View todo board

pno

list_sprints

List sprints

pno

list_project_members

List project members

pno

search_tags

Search tags

pno

keyword


MCP Resources

In addition to tools (which need to be called actively), there are also resources (which AI can read as context):

URI

Content

lalaleap://projects

Project list

lalaleap://project/{pno}/requirements

Requirements of a project

lalaleap://project/{pno}/bugs

Bugs of a project

lalaleap://project/{pno}/sprints

Sprints of a project

lalaleap://project/{pno}/members

Members of a project


Example Conversations

你:幫我看一下有哪些專案
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")
    待辦已建立

Architecture & Source Code Tour

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

Key Design

  • Automatic Authentication: Automatically logs in on startup, automatically refreshes token on 401, and re-logs in if refresh fails.

  • Two-step Creation: When creating requirements/bugs, first POST /add to get an ID, then POST /edit to fill in fields (consistent with frontend behavior).

  • No crashes on errors: Each tool has try-catch, returns friendly Chinese error messages.

  • Write Protection: WriteGuard mechanism protects all write operations (see below).


Security Protection (WriteGuard)

AI may misinterpret instructions and cause batch writes of garbage data. All write operations (create / update) have three lines of defense:

1. Read-only Mode

Completely disables writes; AI can only query, not create/modify anything:

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

Use Cases: Demo, when a new team member is unsure about AI behavior, or when only queries are needed.

2. Project Whitelist

Restricts AI to write only in specific projects, preventing operations on the wrong project:

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

Use Cases: In production, only open test projects; team members only operate on projects they are responsible for.

3. Write Rate Limit

Limits the maximum number of writes per minute, preventing AI from creating a large number of items in a short time:

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

When the limit is triggered, AI will receive a clear error message:

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

Use Cases: Prevents AI from looping to create batches, or misinterpreting commands like 'create 100 requirements for me'.

Scenario

Configuration

Development/Testing

No limits, or WRITE_RATE_LIMIT=20

Daily Use

ALLOWED_PROJECTS=your_project_pno + WRITE_RATE_LIMIT=10

Demo Presentation

READONLY=1

Team Shared

ALLOWED_PROJECTS=team_projects + WRITE_RATE_LIMIT=5


Development

# 開發模式(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

Adding a Tool

  1. Add or modify the corresponding file in src/tools/

  2. Register using server.tool(name, description, zodSchema, handler)

  3. If it's a new file, import and call the register function in src/index.ts

  4. Run tests to confirm

// 範例:新增一個 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,
      };
    }
  }
);

Troubleshooting

Issue

Solution

certificate has expired

Set LALALEAP_UNSAFE_SSL=1

Need to change password (601)

Already handled automatically (server retries with keepCipher='Y')

LALALEAP_API_URL environment variable not set

Ensure the env block in the MCP client configuration is included

Cannot connect to server

Ensure npm run build has been run and dist/index.js exists

Tool not appearing

Restart the AI tool, verify settings.json format is correct


Tech Stack

Item

Version

Node.js

18+

TypeScript

5.9

MCP SDK

@modelcontextprotocol/sdk 1.27

HTTP Client

axios 1.13

Schema Validation

zod 4.3

Transport

stdio (standard input/output)


Test Coverage

Category

Count

Pass Rate

MCP Protocol E2E (including tools + resources + edge cases)

50

100%

API Integration Tests

14

100%

TypeScript Type Check

Zero errors

Full test report at 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