Mcp.TaskAndResearch
1.2.8
dotnet tool install --global Mcp.TaskAndResearch --version 1.2.8
dotnet new tool-manifest
dotnet tool install --local Mcp.TaskAndResearch --version 1.2.8
#tool dotnet:?package=Mcp.TaskAndResearch&version=1.2.8
nuke :add-package Mcp.TaskAndResearch --version 1.2.8
MCP Task and Research Server
π¦ A .NET port of mcp-shrimp-task-manager β Intelligent task management for AI-powered development.
A powerful Model Context Protocol (MCP) server that provides advanced task management and research capabilities for AI assistants. This server enables structured task planning, dependency management, and guided research workflows β with an optional Blazor Server UI dashboard.
π Quick Start
1. Install
dotnet tool install -g Mcp.TaskAndResearch
2. Configure VS Code
Create or edit .vscode/mcp.json in your project:
{
"servers": {
"task-and-research": {
"type": "stdio",
"command": "mcp-task-and-research",
"env": {
"DATA_DIR": "${workspaceFolder}/.mcp-tasks",
"TASK_MANAGER_UI": "true",
"TASK_MANAGER_UI_AUTO_OPEN": "true"
}
}
}
}
π‘ Important: Always set
DATA_DIRto a project-specific path to keep tasks isolated between projects. Use${workspaceFolder}if your environment supports it, or absolute paths otherwise.
3. Start Using
- Reload VS Code (Ctrl+Shift+P β "Developer: Reload Window")
- Browser opens automatically to the Tasks UI
- Use MCP tools via Copilot/Claude:
plan_task,execute_task,verify_task, etc.
Update to latest version:
dotnet tool update -g Mcp.TaskAndResearch
π‘ What is This?
MCP Task and Research Server transforms how AI agents approach software development. Instead of losing context or repeating work, it provides:
- π§ Persistent Memory: Tasks and progress persist across sessions
- π Structured Workflows: Guided processes for planning, execution, and verification
- π Smart Decomposition: Automatically breaks complex tasks into manageable subtasks
- π― Context Preservation: Never lose your place, even with token limits
- π Dependency Tracking: Automatic management of task relationships
β¨ Core Features
π Task Management
| Feature | Description |
|---|---|
| Intelligent Planning | Deep analysis of requirements before implementation |
| Task Decomposition | Break down large projects into atomic, testable units |
| Dependency Resolution | Automatic resolution by task name or ID |
| Progress Monitoring | Real-time status tracking and updates |
| Verification & Scoring | Score task completion against criteria |
| Task History | Automatic snapshots and backups |
π¬ Research Mode
- Guided Research: Systematic exploration of technologies and solutions
- State Management: Track research progress across sessions
- Next Steps Planning: Define and follow research directions
π Project Rules
- Project Standards: Define and maintain coding standards across your project
- Consistency: Ensure AI assistants follow your conventions
π€ Thinking Tools
- Process Thought: Structured thinking with branching and revision support
- Chain-of-Thought: Encourages reflection and style consistency
πΎ Memory & Data Management
- Task Snapshots: Automatic preservation of task state when
clear_all_tasksruns (completed tasks are stored inDATA_DIR/memory) - Memory Store: Dedicated memory management for context storage
- Automatic Backups: Completed tasks are written to timestamped JSON under
DATA_DIR/memorybefore a clear; pending tasks are dropped during clear - Per-Project Isolation: Set
DATA_DIRto a project-scoped path (e.g.,.mcp-tasks) and launch from the workspace root; withoutDATA_DIR, data is stored in the user-level default directory and shared across projects
π Data Migration
Seamlessly migrate between JSON and LiteDB storage formats:
- Import from JSON: Import tasks and history from legacy
tasks.jsonandmemory/*.jsonfiles into the LiteDB database - Export to JSON: Export current database tasks back to JSON format for backup, sharing, or compatibility
- Duplicate Protection: Import automatically skips duplicate task IDs
- Two Ways to Migrate:
- MCP Tools: Use
import_legacy_tasksandexport_tasks_to_jsontools via AI assistants - UI: Click "Import from JSON" or "Export to JSON" buttons in Settings β Data Migration
- MCP Tools: Use
MCP Tool Usage:
You: "use import_legacy_tasks to migrate my old task data"
# Imports from DATA_DIR/tasks.json and DATA_DIR/memory/*.json
You: "use export_tasks_to_json to backup my tasks"
# Exports to DATA_DIR/tasks.json and DATA_DIR/memory/
Migration Scenarios:
- Upgrading from v1.x: Import legacy JSON files to preserve history
- Backup Before Changes: Export to JSON before major operations
- Team Sharing: Export tasks, share JSON files, team imports
- Cross-Environment: Export from one machine, import on another
π₯οΈ Blazor UI Dashboard
When TASK_MANAGER_UI=true:
- Tasks View: DataGrid with sorting, filtering, search, status indicators
- Task Details: Dialog for viewing/editing tasks, dependencies, related files
- History View: Browse all task activity including archived tasks
- Settings View: Configure preferences, theme, language
- Dark/Light Theme: Toggle with persistent preference
- Keyboard Shortcuts:
Ctrl+N,Ctrl+F,Ctrl+S,Ctrl+R,Esc,? - Real-time Updates: Tasks sync instantly between MCP and UI
π― Common Use Cases
<details> <summary><b>Feature Development</b></summary>
You: "plan task: add user authentication with JWT"
# Agent analyzes codebase, creates subtasks with dependencies
You: "execute task"
# Implements authentication step by step, tracking progress
</details>
<details> <summary><b>Bug Fixing</b></summary>
You: "plan task: fix memory leak in data processing"
# Agent researches issue, creates fix plan with verification criteria
You: "execute all pending tasks"
# Executes all fix tasks, verifying each one
</details>
<details> <summary><b>Research & Learning</b></summary>
You: "research: compare Blazor vs React for this project"
# Systematic analysis with pros/cons, saved to memory
You: "plan task: migrate component to chosen framework"
# Creates migration plan based on research findings
</details>
<details> <summary><b>Project Setup</b></summary>
You: "init project rules"
# Establishes coding standards and conventions
You: "plan task: set up CI/CD pipeline"
# Creates structured plan following your project rules
</details>
π οΈ Available MCP Tools
Task Management Tools
| Tool | Description |
|---|---|
plan_task |
Analyze requirements and create a structured task plan |
split_tasks |
Break down complex tasks into smaller subtasks |
list_tasks |
List all tasks with optional status filter |
execute_task |
Execute a specific task by ID |
verify_task |
Verify task completion with scoring |
update_task |
Update task details, dependencies, or files |
delete_task |
Remove a task by ID |
clear_all_tasks |
Archive and clear all tasks |
query_task |
Search tasks by keyword or ID |
get_task_detail |
Get full details for a specific task |
Research & Thinking Tools
| Tool | Description |
|---|---|
research_mode |
Enter guided research mode for a topic |
process_thought |
Record structured thinking steps |
analyze_task |
Deep analysis of task requirements and approach |
reflect_task |
Critical review of analysis results for optimization |
Project & Utility Tools
| Tool | Description |
|---|---|
init_project_rules |
Initialize project coding standards |
get_server_info |
Returns basic server metadata |
play_beep |
Play an audible beep notification (Windows only) |
import_legacy_tasks |
Import tasks from legacy JSON files into database |
export_tasks_to_json |
Export database tasks to JSON format |
π οΈ Advanced Installation Options
For most users, the Quick Start above is all you need. For advanced scenarios:
Clone & Build (For Development)
git clone https://github.com/d-german/mcp-task-and-research.git
cd mcp-task-and-research
dotnet publish src/Mcp.TaskAndResearch/Mcp.TaskAndResearch.csproj -c Release -o ./publish
Then configure with the published DLL path instead of the command name.
β οΈ Data Storage & Project Isolation
TL;DR: Always set DATA_DIR to a project-specific path to keep tasks isolated between projects.
Why This Matters
Without DATA_DIR, all projects share one global task list, which causes:
- Tasks from different projects mixed together
- Wrong task execution (agent picks tasks from other projects)
- Broken dependencies across unrelated projects
Understanding Path Resolution
MCP clients handle path resolution differently based on their capabilities and how they set the working directory:
β Environments Where Relative Paths Work
- Some MCP clients set the working directory to the project/workspace folder when spawning servers
- In these environments, relative paths like
.mcp-taskswork perfectly fine - The path resolves correctly to
<project-root>/.mcp-tasks - Benefit: Simple, portable configuration across projects
{
"env": {
"DATA_DIR": ".mcp-tasks"
}
}
β Environments with Variable Substitution (e.g., VS Code)
- Support variables like
${workspaceFolder}in configuration - Variables are resolved to absolute paths before being passed to the MCP server
- Benefit: Explicit control with portability
{
"env": {
"DATA_DIR": "${workspaceFolder}/.mcp-tasks"
}
}
β οΈ Environments Where Relative Paths Fail
- Some clients don't set a working directory when spawning MCP server processes
- Relative paths resolve based on where the host application was launched (unpredictable)
- On Windows: May resolve to
C:\Windows\System32\.mcp-tasks - On macOS/Linux: May resolve to
/or other system directories - Required: Use absolute paths
{
"env": {
"DATA_DIR": "/Users/username/myproject/.mcp-tasks"
}
}
Local vs Global Configuration
Local Configuration Support (e.g., VS Code with .vscode/mcp.json)
- Some environments allow per-project MCP configuration files
- Configuration overrides global settings for that specific project
- Enables project-specific paths and environment variables
Global Configuration Only
- Other environments only honor global configuration files
- All projects use the same MCP server configuration
- Must use absolute paths specific to each project if you want isolation
π‘ How to determine what works in your environment:
- Start with a simple relative path:
"DATA_DIR": ".mcp-tasks" - Create a task and check where the
.mcp-tasksfolder was created - If it appears in your project root: β Relative paths work
- If it appears elsewhere (system directories): Use
${workspaceFolder}/.mcp-tasksor absolute paths
β οΈ Check your MCP client's documentation for:
- Variable substitution support (e.g.,
${workspaceFolder}) - Local configuration file support (e.g.,
.vscode/mcp.json) - Working directory behavior for spawned processes
Best Practices
Priority order (try these in order):
- Simple relative path (if your client supports proper working directory):
{
"env": {
"DATA_DIR": ".mcp-tasks"
}
}
- Variable substitution (if your client supports it):
{
"env": {
"DATA_DIR": "${workspaceFolder}/.mcp-tasks"
}
}
- Absolute path (always works, but less portable):
{
"env": {
"DATA_DIR": "C:/projects/my-project/.mcp-tasks"
}
}
General guidelines:
- Use
.mcp-tasksfolder convention for consistency - Add to
.gitignorefor private tasks (or commit for team sharing) - One
DATA_DIRper project ensures complete isolation - Test your configuration by checking where files are actually created
- If files appear in system directories, escalate to option 2 or 3
Environment Variables
Core Settings
| Variable | Default | Description |
|---|---|---|
DATA_DIR |
.mcp-tasks |
Folder for task data storage. Use ${workspaceFolder}/.mcp-tasks (if supported) or absolute paths for reliability |
TASK_MANAGER_UI |
false |
Enable Blazor web dashboard (auto-selects available port starting at 9998) |
TASK_MANAGER_UI_AUTO_OPEN |
false |
Auto-open browser when server starts |
Audio Notification Settings
| Variable | Default | Description |
|---|---|---|
ENABLE_COMPLETION_BEEP |
false |
Enable audible beep notifications via play_beep tool |
BEEP_FREQUENCY |
2500 |
Beep frequency in Hz (range: 37-32767) |
BEEP_DURATION |
1000 |
Beep duration in milliseconds (range: 100-5000) |
Note: The
play_beeptool only works on Windows. It's useful for getting notified when an AI agent completes a long-running task.
π History & Task Archival
When you clear the task list (via clear_all_tasks MCP tool or UI), completed tasks are automatically saved to snapshot files in the memory/ folder. The History View displays:
- Active tasks: Current tasks from
tasks.json - Archived tasks: Previously cleared tasks from all snapshot files
This means you never lose visibility into past work - cleared tasks remain viewable in History indefinitely.
Architecture
How It Works
βββββββββββββββββββ ββββββββββββββββββββ
β MCP Client ββββββΆβ MCP Server β
β (Copilot/Claude)β β (stdio) β
βββββββββββββββββββ ββββββββββ¬ββββββββββ
β
ββββββββββΌββββββββββ
β Shared DI β
β Container β
ββββββββββ¬ββββββββββ
β
ββββββββββββββββββββΌβββββββββββββββββββ
β β β
ββββββββββΌβββββββββ ββββββββΌββββββββ βββββββββΌββββββββ
β TaskRepository β βMemoryRepositoryβ β RulesStore β
β (LiteDB/ACID) β β (LiteDB) β β (conventions)β
ββββββββββ¬βββββββββ ββββββββββββββββ βββββββββββββββββ
β
ββββββββββΌβββββββββ
β Blazor UI β (optional, auto-port)
β (MudBlazor) β
βββββββββββββββββββ
- Shared Services: UI and MCP share the same data stores via DI
- Real-time Sync: Changes via MCP tools appear instantly in UI and vice versa
- Conditional Hosting: UI only starts when
TASK_MANAGER_UI=true
Project Structure
src/Mcp.TaskAndResearch/
βββ Config/ # Configuration and path resolution
βββ Data/ # TaskStore, MemoryStore, data models
βββ Prompts/ # Prompt template builders
βββ Server/ # MCP server configuration
βββ Tools/ # MCP tool implementations
βββ UI/ # Blazor UI (when enabled)
β βββ Components/ # Razor components
β βββ Services/ # UI services
β βββ Theme/ # MudBlazor theme
βββ wwwroot/ # Static assets
Development
Prerequisites
- .NET SDK
- VS Code with GitHub Copilot or Claude extension
Build from Source
# Clone the repository
git clone https://github.com/your-repo/mcp-task-and-research.git
cd mcp-task-and-research
# Build (debug)
dotnet build
# Run tests
dotnet test
# Publish release build
dotnet publish src/Mcp.TaskAndResearch/Mcp.TaskAndResearch.csproj -c Release -o ./publish
Rebuilding After Updates
When you pull updates from the repository:
cd mcp-task-and-research
git pull
dotnet publish src/Mcp.TaskAndResearch/Mcp.TaskAndResearch.csproj -c Release -o ./publish
Note: You must stop the MCP server before republishing (reload VS Code or close it), otherwise the DLL will be locked.
Run Standalone (Development)
For development without an MCP client:
# MCP server only (no UI)
dotnet run --project src/Mcp.TaskAndResearch
# With UI enabled
set TASK_MANAGER_UI=true && dotnet run --project src/Mcp.TaskAndResearch
# Then open http://localhost:9998
Using dotnet run vs Published DLL
| Method | Command | Best For |
|---|---|---|
dotnet run |
dotnet run --project path/to/csproj |
Development, debugging |
| Published DLL | dotnet path/to/Mcp.TaskAndResearch.dll |
Production, multi-project use |
For production use, always use the published DLL - it's faster to start and doesn't require recompilation.
Known Limitations
- JSON File Storage: Tasks are persisted to
DATA_DIR/tasks.json- changes from both UI and MCP tools are saved immediately - Single Project: Currently reads from one
DATA_DIR; no multi-project switching in UI - No Authentication: UI has no auth; use for local development only
- SignalR Reconnection: Brief stale data possible during connection recovery
π License
MIT License - See LICENSE file for details.
π Credits
- Original Concept: mcp-shrimp-task-manager by cjo4m06
- .NET Port: d-german
<p align="center"> <a href="https://github.com/d-german/mcp-task-and-research">GitHub</a> β’ <a href="https://www.nuget.org/packages/Mcp.TaskAndResearch">NuGet</a> β’ <a href="https://github.com/d-german/mcp-task-and-research/issues">Issues</a> </p>
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
This package has no dependencies.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.2.8 | 105 | 1/27/2026 |
| 1.2.1 | 95 | 1/26/2026 |
| 1.1.0 | 89 | 1/26/2026 |
| 1.0.23 | 96 | 1/21/2026 |
| 1.0.22 | 90 | 1/16/2026 |
| 1.0.21 | 92 | 1/16/2026 |
| 1.0.12 | 96 | 1/13/2026 |
| 1.0.11 | 93 | 1/13/2026 |
| 1.0.10 | 93 | 1/13/2026 |
| 1.0.9 | 93 | 1/12/2026 |
| 1.0.8 | 87 | 1/12/2026 |
| 1.0.7 | 92 | 1/12/2026 |
| 1.0.6 | 90 | 1/12/2026 |
| 1.0.5 | 87 | 1/12/2026 |
| 1.0.3 | 87 | 1/12/2026 |
| 1.0.2 | 93 | 1/12/2026 |
| 1.0.1 | 97 | 1/12/2026 |
| 1.0.0 | 94 | 1/12/2026 |
| 1.0.0-beta1 | 89 | 1/12/2026 |