Eureka Labo Task Management MCP Server

Eureka Labo Task Management MCP Server

Enables task management and automated development workflow tracking with Eureka Labo, including creating/updating tasks, starting work sessions, and automatically capturing git changes with diff logging.

Category
Visit Server

README

Eureka Labo MCP Server

Model Context Protocol (MCP) server for Eureka Labo task management with automated git change tracking.

Features

  • 📋 Task Management - List, create, update tasks via MCP
  • 🔄 Work Sessions - Track development work with git integration
  • 📊 Change Logging - Automatically capture and log file changes
  • 🎨 React Diff Support - Generate diffs compatible with react-diff-viewer
  • 🔐 API Key Auth - Secure project-scoped access

Prerequisites

  • Node.js 18+
  • Git repository for workspace
  • Eureka Labo API access with generated API key

Installation

cd /path/to/eurekalabo/mcp-server
npm install

Configuration

1. Generate API Key

  1. Open your project in Eureka Labo UI
  2. Go to Project Settings → API Keys
  3. Click "Create API Key"
  4. Select permissions:
    • read:project
    • read:tasks
    • write:tasks
    • assign:tasks
    • read:members
  5. Copy the key (shown only once!)

Important: The API key is project-scoped, meaning it automatically grants access to the specific project it was created for. The MCP server will automatically detect which project you're working with.

2. Create Environment File

cp .env.example .env

Edit .env:

# Your Eureka Labo API URL (production URL with HTTPS)
EUREKA_API_URL=https://eurekalabo.162-43-92-100.nip.io

# Your project-specific API key (starts with pk_live_)
EUREKA_API_KEY=pk_live_your_personal_api_key_here

# WORKSPACE_PATH is optional - automatically uses Claude Code's current directory
# Only uncomment if you need to override:
# WORKSPACE_PATH=/path/to/your/git/repository

3. Configure Claude Code

Add to ~/.claude/mcp.json:

{
  "mcpServers": {
    "eureka-tasks": {
      "command": "npx",
      "args": [
        "tsx",
        "/Users/yourname/workspace/eurekalabo/mcp-server/src/index.ts"
      ],
      "env": {
        "EUREKA_API_URL": "https://eurekalabo.162-43-92-100.nip.io",
        "EUREKA_API_KEY": "pk_live_..."
      }
    }
  }
}

Note:

  • The MCP server automatically uses the directory where Claude Code is opened. No need to specify WORKSPACE_PATH!
  • The project ID is automatically fetched from your API key on initialization, so you don't need to configure it manually.

Usage

Task Management

# List all tasks
@eureka-tasks list_tasks

# Filter by status
@eureka-tasks list_tasks {"status": "todo"}

# Get specific task
@eureka-tasks get_task {"taskId": "cmXXXXXXXXXXX"}

# Create task
@eureka-tasks create_task {
  "title": "Implement JWT authentication",
  "description": "Add JWT token verification middleware",
  "priority": "high"
}

# Update task
@eureka-tasks update_task {
  "taskId": "cmXXXXXXXXXXX",
  "status": "in_progress"
}

Development Workflow

# 1. Start work on a task (captures git baseline)
@eureka-tasks start_work_on_task {"taskId": "cmXXXXXXXXXXX"}

# 2. Do your development work (edit files)
# Note: コミットは不要です!未コミットの変更も自動的にキャプチャされます。

# 3. Complete work (captures all changes and logs to task)
@eureka-tasks complete_task_work {
  "taskId": "cmXXXXXXXXXXX",
  "summary": "bcryptを使用したJWT認証を実装しました"
}

# This will:
# - Capture all changes from baseline (includes uncommitted changes!)
# - Store full diffs in task metadata (for react-diff-viewer in UI)
# - Update task description with formatted change summary in Japanese
# - Update task status to "done"

重要な変更点:

  • コミット不要: 未コミットの変更も自動的にキャプチャされます
  • リアルタイム変更: working directoryの現在の状態を取得
  • 柔軟性: コミットしてもしなくても、どちらでも動作します

タスク説明フォーマット(完了後):

## 🎯 実装概要

bcryptを使用したJWT認証を実装しました

## 📊 変更統計

- **変更ファイル数**: 3個
- **追加行数**: +243行
- **削除行数**: -12行
- **ブランチ**: `feature/auth`
- **コミット**: `def456g`

## 📁 変更ファイル一覧

✏️ `src/middleware/auth.ts` (+45/-12)
➕ `tests/auth.test.ts` (+78/0)
➕ `docs/auth.md` (+120/0)

---

*詳細な差分はタスクのメタデータに保存されており、UIでreact-diff-viewerを使用して表示できます。*

Utilities

# List project members (for task assignment)
@eureka-tasks list_project_members {"projectId": "cmXXXXXXXXXXX"}

# Upload file attachment
@eureka-tasks upload_task_attachment {
  "taskId": "cmXXXXXXXXXXX",
  "filePath": "/path/to/file.pdf"
}

# Check active work sessions
@eureka-tasks get_active_sessions

# Cancel work session
@eureka-tasks cancel_work_session {"taskId": "cmXXXXXXXXXXX"}

Work Session Flow

Complete Workflow Example

1. 開発者がUIでタスクを作成: "ユーザー認証の追加"

2. Claude Codeが作業を開始:
   Claude> @eureka-tasks start_work_on_task {"taskId": "cm123"}
   Response: ✅ Started work session (baseline: abc123)

3. Claude Codeがファイルを編集:
   - src/middleware/auth.ts
   - tests/auth.test.ts
   - docs/auth.md

4. コミットは不要!(オプション)
   # 未コミットの変更も自動的にキャプチャされます
   # コミットしたい場合はしてもOK:
   git add .
   git commit -m "Add JWT authentication"

5. Claude Codeが作業を完了:
   Claude> @eureka-tasks complete_task_work {
     "taskId": "cm123",
     "summary": "包括的なテストを含むJWT認証を実装しました"
   }

   Response: ✅ 作業セッションを完了しました
     - ファイル変更: 3個
     - 追加: +243行
     - 削除: -12行

   タスク説明とメタデータを更新しました。

6. Eureka Labo UIで表示:
   - タスクステータス: "完了"
   - タスク説明: 日本語の概要 + ファイル一覧 + 統計
   - タスクメタデータ: react-diff-viewer用の完全な差分
     • oldValue: 変更前のファイル全体
     • newValue: 変更後のファイル全体(working directoryから取得)
     • unifiedDiff: git unified diff形式
   - 変更ログ: シンタックスハイライト付きの並列差分表示

Change Log Format

Changes are stored in relational tables WorkSession and WorkSessionChange:

-- WorkSession table
CREATE TABLE "WorkSession" (
  "id" TEXT PRIMARY KEY,
  "taskId" TEXT REFERENCES "Task"(id) ON DELETE CASCADE,
  "sessionId" TEXT UNIQUE,
  "startedAt" TIMESTAMP NOT NULL,
  "completedAt" TIMESTAMP,
  "summary" TEXT,
  "gitBaseline" TEXT NOT NULL,
  "gitFinal" TEXT NOT NULL,
  "branch" TEXT NOT NULL,
  "statistics" JSONB NOT NULL,  -- { filesChanged, linesAdded, linesRemoved }
  "createdAt" TIMESTAMP DEFAULT NOW(),
  "updatedAt" TIMESTAMP DEFAULT NOW()
);

-- WorkSessionChange table
CREATE TABLE "WorkSessionChange" (
  "id" TEXT PRIMARY KEY,
  "workSessionId" TEXT REFERENCES "WorkSession"(id) ON DELETE CASCADE,
  "file" TEXT NOT NULL,
  "changeType" TEXT NOT NULL,  -- 'added' | 'modified' | 'deleted'
  "linesAdded" INTEGER NOT NULL,
  "linesRemoved" INTEGER NOT NULL,
  "language" TEXT NOT NULL,
  "oldValue" TEXT NOT NULL,  -- Full old file content
  "newValue" TEXT NOT NULL,  -- Full new file content
  "unifiedDiff" TEXT NOT NULL,  -- Git unified diff
  "createdAt" TIMESTAMP DEFAULT NOW()
);

Example Data:

// WorkSession record
{
  "id": "cm123abc456",
  "taskId": "cmXXXXXXXXXXX",
  "sessionId": "session_1738051200000",
  "startedAt": "2025-01-28T10:00:00Z",
  "completedAt": "2025-01-28T10:45:00Z",
  "summary": "Implemented JWT authentication",
  "gitBaseline": "abc123def",
  "gitFinal": "def456ghi",
  "branch": "feature/auth",
  "statistics": {
    "filesChanged": 3,
    "linesAdded": 243,
    "linesRemoved": 12
  },
  "changes": [
    // WorkSessionChange records (joined)
    {
      "id": "cmCHG001",
      "workSessionId": "cm123abc456",
      "file": "src/middleware/auth.ts",
      "changeType": "modified",
      "linesAdded": 45,
      "linesRemoved": 12,
      "language": "typescript",
      "oldValue": "// full old file content",
      "newValue": "// full new file content",
      "unifiedDiff": "@@ -10,5 +10,8 @@ ..."
    }
  ]
}

Supported Languages

Automatic syntax highlighting for:

  • TypeScript/JavaScript (.ts, .tsx, .js, .jsx)
  • Python (.py)
  • Go (.go)
  • Rust (.rs)
  • Java (.java)
  • C/C++ (.c, .cpp, .h, .hpp)
  • Ruby (.rb)
  • PHP (.php)
  • And 20+ more languages

Troubleshooting

"Workspace is not a git repository"

cd /path/to/your/project
git init
git add .
git commit -m "Initial commit"

"変更が検出されませんでした"

# 以下を確認:
# 1. ファイルが実際に編集されているか
# 2. 正しいディレクトリで作業しているか(gitリポジトリ内)
# 3. start_work_on_task を実行してからファイルを編集したか

# デバッグ:
git status              # 変更されたファイルを確認
git diff                # 差分を確認

"Authentication failed"

  1. Check API key is correct in .env
  2. Verify key hasn't expired in Eureka Labo UI
  3. Ensure key has required permissions

"No active work session found"

complete_task_workを実行する前に、必ずstart_work_on_taskを実行してください。

# 正しい順序:
@eureka-tasks start_work_on_task {"taskId": "..."}   # 1. 開始
# ファイル編集                                        # 2. 作業
@eureka-tasks complete_task_work {"taskId": "...", "summary": "..."} # 3. 完了

Development

# Run in development mode
npm run dev

# Build for production
npm run build

# Start production build
npm start

Architecture

mcp-server/
├── src/
│   ├── index.ts              # MCP server entry point
│   ├── config.ts             # Environment configuration
│   ├── api/
│   │   └── client.ts         # Eureka API wrapper
│   ├── tools/
│   │   ├── task-tools.ts     # Task CRUD operations
│   │   └── work-session.ts   # Work session management
│   └── tracking/
│       └── git-tracker.ts    # Git diff capture
├── package.json
├── tsconfig.json
└── .env

License

MIT

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured