Atlas / MCP servers / vscarpenter / gsd-task-manager

gsd-task-managerBLOCK

mcp/vscarpenter/gsd-task-manager

Stop juggling, start finishing. GSD Task Manager makes it easy to sort your to-dos into what’s urgent and what’s important, so you can finally get stuff done without burning out. It’s simple, visual, and works entirely offline.

Verdict
BLOCK
Grade
F
Trust score
57 /100
Exposed tools
26 19r · 6w · 1d
Transport
stdio
License
MIT
Stars
26
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

A privacy-first Eisenhower matrix for deciding what to do, schedule, delegate, or eliminate.

Live app: gsd.vinny.dev Current version: 13.9.0 Current product: the v11 single-matrix shell, offline-first local storage, optional PocketBase sync, and the GSD MCP server.

[](https://www.npmjs.com/package/gsd-mcp-server) [](https://www.npmjs.com/package/gsd-mcp-server) [](LICENSE)

What ships in v11

  • A responsive four-quadrant matrix with drag-and-drop movement.
  • Quick Capture, full task editing, search, keyboard navigation, and optional

built-in Smart Views.

  • Due dates, tags, dependency selection, and circular-dependency prevention.
  • Archive, dashboard/review analytics, sync history, settings, and onboarding.
  • Local IndexedDB persistence, JSON import/export, offline PWA support, and

user-controlled update prompts.

  • Optional multi-device PocketBase sync with Google, Apple, or GitHub OAuth and

realtime server-sent events.

  • A separately installed MCP server with 19 task, analytics, and diagnostic

tools, including validated and dry-run-aware writes.

  • Light and dark Inkwell "GSD Editorial" themes with WCAG AA as the

accessibility floor.

Retired v7/v8 surfaces such as selection-mode batch operations, the Quick Settings panel, and smart-view pinning shortcuts are not part of the v11 shell.

Privacy and data custody

Local-only mode is the default. Tasks are stored in the browser's IndexedDB and the core product does not require a backend. Clearing browser data can erase local tasks, so export backups regularly.

Cloud sync is explicitly optional. When enabled, task data is sent to the configured PocketBase server; the hosted configuration use

Read from source at commit eeffc2e9f9eeOBSERVED · 2026-10-08
Advertisement
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code
claude mcp add gsd-mcp-server --env ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY} --env GSD_AUTH_TOKEN=${GSD_AUTH_TOKEN} --env GSD_TASKS_ENC_KEY=${GSD_TASKS_ENC_KEY} --env GSD_WEB_OAUTH_CALLBACK_URL=${GSD_WEB_OAUTH_CALLBACK_URL} -- npx -y [email protected]
claude-desktop
{
  "mcpServers": {
    "gsd-mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ],
      "env": {
        "ANTHROPIC_API_KEY": "${ANTHROPIC_API_KEY}",
        "GSD_AUTH_TOKEN": "${GSD_AUTH_TOKEN}",
        "GSD_TASKS_ENC_KEY": "${GSD_TASKS_ENC_KEY}",
        "GSD_WEB_OAUTH_CALLBACK_URL": "${GSD_WEB_OAUTH_CALLBACK_URL}"
      }
    }
  }
}
03

Exposed tools (26)

19 read · 6 write · 1 destructive. Blast radius: 1 tool can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.

ToolRiskDescription
DelegatereadInterruptions. Hand these off.
EliminatewriteNoise. Stop doing these.
SchedulewriteStrategy, growth. Protect this time.
bulk_update_taskswriteUpdate multiple tasks at once. Supports completing, moving quadrants, adding/removing tags, setting due dates, and deleting. Limited to 50 tasks per operation (10 for deletes) for safety. Destructive deletes default to dryRun=true — pass dryRun=false explicitly to apply.
complete_taskreadMark a task as complete or incomplete. Quick shortcut for updating completion status. Use dryRun=true to preview changes.
create_taskwriteCreate a new task in the user
daily-standupreadDaily task review: today
delete_taskdestructivePermanently delete a task. This action cannot be undone. Deletes default to dryRun=true, so pass dryRun=false explicitly to apply.
focus-modereadGet urgent and important tasks (Q1: Do First) to focus on right now
get_cache_statsreadGet task cache statistics including hit rate, cache size, and TTL configuration. Useful for monitoring MCP server performance and debugging caching behavior.
get_helpreadGet help documentation for this server: the tool list, analytics capabilities, setup, example queries, and troubleshooting. Pass topic to return one section; omit it for all sections.
get_productivity_metricsreadGet comprehensive productivity metrics including completion counts, streaks, rates, quadrant distribution, tag statistics, and due date tracking.
get_quadrant_analysisreadAnalyze task distribution and performance across all four Eisenhower matrix quadrants. Shows completion rates, task counts, and identifies top-performing quadrants.
get_sync_statuswriteCheck PocketBase sync backend health. Returns healthy (boolean), taskCount, authenticated, and the redacted pocketBaseUrl. lastSyncAt is always null: PocketBase is live, so there is no last-sync timestamp. Use validate_config for a full diagnostic and get_task_stats for task counts by status.
get_tag_analyticsreadGet per-tag statistics: usage counts and completion rates for every tag. This is the tagStats section of get_productivity_metrics on its own; call this when only tag data is needed, and get_productivity_metrics when you also need completion counts, streaks, or quadrant distribution.
get_taskreadGet a single task by its ID. Returns the full task object. Fails with
get_task_insightsreadGet a prose summary of key metrics, streaks, upcoming deadlines, quadrant distribution, and top tags, computed from the same data as get_productivity_metrics. Returns text rather than JSON; use get_productivity_metrics when you need numbers to compute with.
get_task_statsreadGet task counts: totalTasks, activeTasks (not completed), completedTasks, plus lastUpdated, oldestTask, and newestTask timestamps. Counts cover every task in the account regardless of quadrant. Use list_tasks when you need the tasks themselves rather than counts.
get_token_statusreadCheck authentication token status including expiration date, days remaining, and warnings. Use this to proactively check if re-authentication is needed. Returns status (healthy/warning/critical/expired), expiration details, and re-authentication instructions if needed.
get_upcoming_deadlinesreadGet tasks grouped by deadline urgency: overdue, due today, and due this week. Useful for prioritizing time-sensitive work.
productivity-reportreadComprehensive productivity report with metrics, streaks, and insights
tag-analysisreadAnalyze task distribution and completion rates by tags/projects
upcoming-deadlinesreadShow all overdue tasks, tasks due today, and tasks due this week
update_taskwriteUpdate an existing task. All fields except ID are optional - only provide fields you want to change. Supports moving between quadrants, updating content, changing due dates, and more. Use dryRun=true to preview changes.
validate_configreadValidate MCP server configuration and diagnose issues. Checks environment variables, PocketBase connectivity, authentication, and sync status. Returns detailed diagnostics.
weekly-reviewreadWeekly productivity analysis: completion stats, trends, and top quadrants
04

Trust audit

BLOCKgrade F · trust 57/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryFAIL
L1Static analysis of the codeWARN
L2Instruction surface (what it tells the agent)FAIL
L3Class-specific surfaceWARN
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (2 observation(s))
Network
declared (8 observation(s))
Shell
none-observed
Dependencies
not all pinned
Secrets in source
none-found

Findings (25)

HIGHInventory / provenance · inv.suspicious_name · CWE-1104
lib/feedback/feedback-payload.ts
feedback-payload.ts
Why it matters. member named after an attack tool
Fix. remove or justify
HIGHPrompt injection · prompt.hide_from_user · CWE-94, CWE-1427
.agents/skills/open-knowledge/references/preview.md:59
**Re-point at the end of a multi-doc workflow; don't claim a doc is on screen unless you put it there.** The one-shot attach (signal 3) opens the preview *once* — later writes do NOT move the pane; it
Why it matters. asks the agent to act without the user's knowledge
HIGHPrompt injection · prompt.override · CWE-94, CWE-1427
coding-standards.md:83
* Never bypass safety checks with shortcuts like `--no-verify`. Do not discard unfamiliar files.
Why it matters. asks the agent to drop prior instructions or safety
Fix. remove the instruction
MEDIUMInventory / provenance · inv.binary · CWE-1104
.agents/skills/verify-frontend-change-workspace/verify-frontend-change.skill
verify-frontend-change.skill
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMInventory / provenance · inv.symlink · CWE-1104
.devin/skills/diagnose
.devin/skills/diagnose
Why it matters. link not followed
MEDIUMInventory / provenance · inv.symlink · CWE-1104
.devin/skills/grill-me
.devin/skills/grill-me
Why it matters. link not followed
MEDIUMInventory / provenance · inv.symlink · CWE-1104
.devin/skills/grill-with-docs
.devin/skills/grill-with-docs
Why it matters. link not followed
MEDIUMInventory / provenance · inv.symlink · CWE-1104
.devin/skills/handoff
.devin/skills/handoff
Why it matters. link not followed
MEDIUMInventory / provenance · inv.symlink · CWE-1104
.devin/skills/improve-codebase-architecture
.devin/skills/improve-codebase-architecture
Why it matters. link not followed
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
.env.example:8
# Default (dev):  http://127.0.0.1:8090
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
.env.example:13
# NEXT_PUBLIC_POCKETBASE_URL=http://127.0.0.1:8090
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
app/layout.tsx:43
"http://127.0.0.1:8090",
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
docker/Caddyfile:105
# the PocketBase port directly — set PB_URL=http://127.0.0.1:8090 on the host,
MEDIUMFilesystem / path · mcp.destructive_tools · CWE-22, CWE-59
delete_task
Why it matters. 1 tool(s) can delete or overwrite
Fix. prefer a read-only mode or scoped tokens; the page states the blast radius
LOWInventory / provenance · inv.hidden_file · CWE-1104
.diagram-design
.diagram-design
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.fallowrc.json
.fallowrc.json
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.gitleaksignore
.gitleaksignore
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.mcp.json.example
.mcp.json.example
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.nojekyll
.nojekyll
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.suspicious_name · CWE-1104
tests/data/feedback-payload.test.ts
feedback-payload.test.ts
Why it matters. member named after an attack tool
Fix. remove or justify
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
tests/tools/console-collector.test.ts:23
new Function(collectorSource)();
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
tests/tools/console-collector.test.ts:41
new Function(collectorSource)();
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWInformation disclosure · disclose.log_secret · CWE-209, CWE-532
tests/data/logger.test.ts:328
logger.info("config", { apikey: "key-value" });
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/mcp-server/src/__tests__/api/client.test.ts:3
import type { GsdConfig } from '../../types.js';
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/mcp-server/src/__tests__/api/client.test.ts:6
vi.mock('../../api/retry.js', async () => {

Gates applied: instruction_override, no_behavioural_pass.

Audited 2026-10-08 · audit v0.4.1 · source sha eeffc2e9f9eefull audit observations/trust-audit/mcp-server/vscarpenter__gsd-task-manager.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-08eeffc2e9f9eeBLOCKF57first audit
06

Questions

What is the gsd-task-manager MCP server?

Stop juggling, start finishing. GSD Task Manager makes it easy to sort your to-dos into what’s urgent and what’s important, so you can finally get stuff done without burning out. It’s simple, visual, and works entirely offline.

What tools does gsd-task-manager expose?

26 in total: 19 read-only, 6 that write, and 1 that can delete or overwrite (delete_task). Every one is listed on this page with its risk.

Is gsd-task-manager safe to connect to an agent?

No — not without reading the findings first. The audit graded it F (57/100) and found 3 critical or high issues in the source. Each one is listed on this page with the file and line it is on. Separately from the audit: 1 of its tools can destroy data, so scope the token you give it to what you actually need.

What credentials does gsd-task-manager need?

It reads ANTHROPIC_API_KEY, GSD_AUTH_TOKEN, GSD_TASKS_ENC_KEY, GSD_WEB_OAUTH_CALLBACK_URL and PB_ADMIN_PASSWORD from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does gsd-task-manager run?

It speaks stdio, so it runs as a local process your client starts. It is published on npm as gsd-mcp-server at 1.3.0.

How current is this page?

The grade is for one exact copy of the source (eeffc2e9f9ee), read on 2026-10-08. The repository is watched and re-audited when it changes.

Advertisement