MCP server + skills for managers and teams using ClickUp, Slack, and Microsoft Teams. ClickUp Brain shows your tasks. Slack AI shows your messages. Pickle shows if they match.
What it is: An MCP server + (optional) skills for managers and engineering/product/marketing leads. Audits team performance across ClickUp, Slack, and Microsoft Teams. Compares standup commitments to task evidence.
Pickle is LLM-agnostic. The MCP server runs in any MCP-compatible AI client. The slash-command skills are a Claude Code / Claude Desktop convenience layer on top β everything Pickle does is also accessible by calling the MCP tools directly from Cursor, Codex, Cline, Continue, Zed, or your own MCP host.
pickle.adityaarsharma.com β get a free key, paste one config block into Claude/Cursor/Codex/Cline, you're live in 60 seconds. No Node.js, no shell scripts, no maintenance.
This GitHub repo exists for transparency and self-host. The code is here so you can read it, audit it, and run it yourself if you want β but the supported, documented, recommended install path is the hosted Cloud. Self-host is unsupported.
Built by Aditya Sharma Β· No telemetry, no phone-home
Keywords: MCP Β· MCP Server Β· Model Context Protocol Β· Cursor Β· Codex Β· ClickUp AI Β· Slack AI Β· Microsoft Teams Β· Team Management Β· Standup Bot Β· Performance Report Β· Engineering Manager Β· AI Productivity Β· Self-Hosted AI Tool Β· LLM Agent Β· Project Management AI
Pickle ships in two parts:
- The MCP server (the core) β a Node.js MCP server that talks to ClickUp, Slack, and Microsoft Graph. Runs locally. Works in any MCP host.
- The skills (optional, Claude-only) β SKILL.md files that turn the MCP tools into slash commands (
/pickle-clickup,/pickle-slack,/pickle-teams, etc.) inside Claude Code / Claude Desktop.
| Client | MCP support | How you use Pickle |
|---|---|---|
| Claude Code | β | Install skills β slash commands work |
| Claude Desktop | β | Install MCP server β call tools via prompt |
| Cursor | β | Add MCP server in Settings β Pickle tools appear |
| Codex (OpenAI Agent SDK) | β | Register Pickle as an MCP tool source |
| Cline | β | MCP server config β Pickle tools available |
| Continue | β | Add MCP server to ~/.continue/config.json |
| Zed | β | MCP support added in 2025; configure as a context server |
| Goose | β | goose extension add with the Pickle MCP path |
| Anything that speaks MCP | β | Point it at https://pickle.adityaarsharma.com/mcp (remote) or ~/.claude/pickle-mcp/clickup/server.mjs (local) |
The slash-command UX is the fastest path, but everything Pickle does (scanning DMs, building reports, drafting follow-ups) is achievable in any MCP host by calling the tools directly. The skills are convenience, not lock-in.
Your team logs 40 hours on a task. The status still says "in progress." The description is blank. The last comment was three weeks ago.
Your standup says "wrapping it up." Pickle says: there is no evidence of that.
No other tool compares what your team said they'd do against what the tasks actually show. ClickUp Brain summarises tasks. Slack AI summarises threads. Neither checks if the two match. Pickle does.
Every pattern below is something Pickle detects automatically across ClickUp, Slack, and Teams. Each is a real failure mode that looks fine on the dashboard but isn't.
| # | Pattern | What goes wrong | What Pickle does |
|---|---|---|---|
| 1 | Empty hours | 40h logged on a task, description blank, zero context | Flags hours + task β "what did those hours buy?" |
| 2 | Stale "in progress" | "In progress" for 6 weeks, no comment in 3 | Names the task with days-since-last-update |
| 3 | Zombie tasks | Assigned 30+ days, never mentioned in standup or DM | Surfaces with link, age, hours, comment count |
| 4 | Standup copy-paste | Same standup text 3+ days running = no real update | Detects similarity, marks those days zero-evidence |
| 5 | Expired promises | "By Friday" said Monday β Tuesday now β still open | Tracks temporal commits, flags by exact quote |
| 6 | Blocker age | Blocker raised 14 days ago, nobody cleared it | Days-unresolved on every blocker, auto-π΄ at 14d |
| 7 | Effort-output mismatch | 40h+ logged + still open + no comments in window | Critical flag with hours + comment count cited |
| 8 | Ghost mode | Silent in channels for 40%+ of the window | Flags presence gap + checks if DM-active |
| 9 | DM-only completion | "Done" claimed in DM, task card never updated | Partial credit + card hygiene flag |
| 10 | Description quality | "8h development" tells nothing about what shipped | Scores description quality, not just hours |
| 11 | Manager-side blocker | YOU are the bottleneck on someone's work | Tracks tasks awaiting you, flags age |
| 12 | Cross-team handoff in DM | Decision made in group DM never reaches the card | Scans group DMs, links to relevant task |
| 13 | Recurring zombie | Same task stale across 3+ reports = task graveyard | "Recurring zombie" pattern with first-flag date |
| Use case | Replaces | One command |
|---|---|---|
| Performance review prep | 3 hours digging through history | /pickle-clickup 30d β full flag history |
| Returning from vacation β | Wall of 200+ unread messages | /pickle-clickup 7d β ranked 7 items |
| Auto-escalation | Manual pattern matching across weeks | Pickle flags stale tasks and expired promises automatically |
| Cross-platform sweep | Checking ClickUp + Slack + Teams separately | One session, three ecosystems, zero overlap |
Pickle is one product. It reads three platforms β ClickUp, Slack, Microsoft Teams β and keeps each ecosystem isolated (data never crosses between them).
/pickle-clickup 24h # what needs you in ClickUp β last 24h
/pickle-clickup 7d followup # past week + draft follow-ups for stuff you're owed
/pickle-slack 24h # same, from Slack
/pickle-teams 24h # same, from Microsoft Teams (incl. Planner + meetings)
Each command scans every surface in that ecosystem β DMs, channels, group chats, task/card comments, threaded replies, assigned comments, reminders β and gives you a ranked inbox of what needs your action right now.
Every ecosystem now has its own AI: ClickUp Brain inside ClickUp, Slack AI inside Slack, Microsoft Copilot inside Teams. Each does one thing well β summarise what's inside that one tool. None of them can read across the others. None compare what your team said in chat against what the tasks actually show.
That cross-tool synthesis is the entire point of Pickle.
(For a ClickUp user β what does Pickle do that Brain doesn't, inside ClickUp.)
| Capability inside ClickUp | ClickUp Brain | Pickle |
|---|---|---|
| Summarises a task | β | β |
| Generates task descriptions for you | β | β |
| Ranked inbox of comments + mentions across all your tasks | β | β |
| Treats unresolved task comments assigned to you as inbox items | β | β |
| Tracks comments you assigned to others (delegated work) | β | β |
| Flags time entries with empty / "8h development"-style descriptions | β | β |
| Detects zombie tasks (assigned, open 30+ days, no activity) | β | β |
| Compares standup chat messages against task evidence | β | β |
| Tracks blocker age across reports | β | β |
| Detects standup copy-paste (same text 3+ days) | β | β |
| Tracks expired promises ("by Friday") on tasks | β | β |
| Per-person weekly team performance report | β | β |
| Runs on your machine | β (cloud) | β |
Where ClickUp Brain falls short: Brain writes for you β descriptions, summaries, action items. It doesn't audit. It can't tell you that a task has 40 hours logged with empty descriptions, or that the standup said "shipping today" 4 days ago. Pickle audits.
(For a Slack user β what does Pickle do that Slack AI doesn't, inside Slack.)
| Capability inside Slack | Slack AI | Pickle |
|---|---|---|
| Summarises a thread or channel | β | β |
| Daily channel recap | β | β |
| Treats unanswered DMs as actionable inbox items | β | β |
| Tracks @mentions across channels with no reply from you | β | β |
| Tracks what YOU delegated and haven't heard back on (Mode B) | β | β |
| Drafts follow-up messages and waits for your approval | β | β |
| Refuses to send a 3rd nudge to the same person | β | β |
| Scores Slack messages by your role (founder vs dev vs marketer) | β | β |
| Reminds you back inside Slack when the scan finds something | β | β |
| Runs on your machine | β (cloud) | β |
Where Slack AI falls short: Slack AI summarises. It doesn't follow up. A DM where someone's been waiting 4 days for your decision shows up in Pickle's inbox; Slack AI will tell you it exists if you ask, but won't surface it.
(For a Teams user β what does Pickle do that Copilot doesn't, inside Teams.)
| Capability inside Teams | Copilot for Teams | Pickle |
|---|---|---|
| Summarises a meeting | β | meeting action items only |
| Drafts replies in Teams | β | β |
| Reads Planner tasks assigned to you | β | β |
| Treats unanswered 1:1 DMs + group chats as inbox items | β | β |
| Detects Approvals-app messages and adaptive cards as inbox items | partial | β |
| Tracks delegated Planner tasks (you assigned, awaiting completion) | β | β |
| Pulls action items from meeting chat transcripts | partial | β |
| Refuses to send a 3rd follow-up to the same person | β | β |
| Scores by your role (CEO vs dev vs marketer) | β | β |
| Runs on your machine | β (cloud) | β |
Where Copilot for Teams falls short: Copilot helps you write inside a meeting or thread. It doesn't run a daily audit. Action items from yesterday's meeting that nobody followed up on don't surface unless you specifically ask. Pickle surfaces them automatically.
Native AIs (ClickUp Brain, Slack AI, Microsoft Copilot) write for you inside their tool. Pickle audits what's already there and tells you what needs your action β across whichever platforms you use.
No Node.js. No npm. No local server. Just add Pickle's hosted endpoint to your MCP config and you're live in 60 seconds.
Step 1: Get a free Beta key at pickle.adityaarsharma.com Step 2: Paste the Pickle-key-only config block below into your AI host. Restart. Step 3: In chat, ask Pickle: "Pickle, set me up for ClickUp" (or Slack, or Teams). Pickle walks you through grabbing the token from your settings and tells you which header line to add. Tokens stay on your machine β in your local MCP config, never in the public repo.
Claude Code / Claude Desktop β add to ~/.claude.json:
{
"mcpServers": {
"pickle": {
"type": "http",
"url": "https://pickle.adityaarsharma.com/mcp",
"headers": {
"x-pickle-key": "pickle_free_YOUR_KEY"
}
}
}
}Cursor β Settings β MCP β Add new server β paste:
{
"pickle": {
"type": "http",
"url": "https://pickle.adityaarsharma.com/mcp",
"headers": {
"x-pickle-key": "pickle_free_YOUR_KEY"
}
}
}Cline β .clinerules or VSCode MCP settings:
{
"mcpServers": {
"pickle": {
"type": "http",
"url": "https://pickle.adityaarsharma.com/mcp",
"headers": {
"x-pickle-key": "pickle_free_YOUR_KEY"
}
}
}
}Codex / OpenAI Agent SDK β mcp.config.json:
{
"servers": [
{
"name": "pickle",
"type": "http",
"url": "https://pickle.adityaarsharma.com/mcp",
"headers": {
"x-pickle-key": "pickle_free_YOUR_KEY"
}
}
]
}After adding the config, restart your MCP host β then ask Pickle in chat to set up each platform.
If you'd rather run Pickle inside your own network, the code is here. No install script, no helper command β this path is intentionally manual. You should be comfortable with Node.js, reverse proxies, TLS, and process managers before you go this route.
git clone https://github.com/adityaarsharma/pickle.git
cd pickle/server-remote
npm install
node server.mjs
# Then reverse-proxy it to your domain and add the URL to your MCP host.Requirements: Node.js LTS, your own server, your own TLS, your own uptime. Read server-remote/server.mjs before running. No support β community-only.
After Pickle is installed (Beta key only), just ask in chat: "Pickle, set me up for ClickUp". Pickle returns a 30-second walkthrough for getting the token from your settings and gives you the exact header line to paste into your local MCP config. Repeat for Slack and Microsoft Teams when you want to connect those.
Where tokens live:
- Your tokens never go in the public repo, the landing page, or any sample.
- They go in your local MCP host config file (
~/.claude.json, Cursor MCP settings, etc.) β same place yourx-pickle-keylives. - On each request, the token travels in the HTTPS header to Pickle's server, gets used to call the platform API on your behalf, then is discarded. Never stored server-side, never logged.
Slack and Microsoft Teams support is on the Cloud roadmap. ClickUp is live today. Manager Mode (multi-person reports across all 3 platforms) ships with Pro after the Beta closes.
| Source | ClickUp | Slack | Teams |
|---|---|---|---|
| Channels | β | β | β |
| Direct messages (1:1) | β | β | β |
| Group DMs / group chats | β | β | β |
| Meeting chats | β | β | β |
| Task comments + threads | β | β | β |
| Task descriptions | β | β | β |
| Time entries with descriptions | β | β | β |
| Assigned/delegated comments | β | β | β |
| Planner tasks | β | β | β |
| Reminders | β | β | β |
| Approvals (Adaptive Cards) | β | β | β |
Pickle is built stateless. Your ClickUp token travels in the HTTPS request header, gets used to call ClickUp's API on your behalf, and is discarded when the response is sent. The server stores no tokens, no task data, no chat content, no logs. Each request is independent; nothing persists.
The only thing Pickle's server stores is your email + free key β only if you submit one on the landing page β for product updates. Unsubscribe anytime.
The full source of the remote server is in this repo at server-remote/server.mjs β audit it before you connect.
To revoke access instantly:
- ClickUp: Settings β Apps β ClickUp API β Generate a new token (old one dies immediately)
- Pickle: just remove the MCP config block β there's no account to delete
Cloud users get updates automatically β every new pattern, every fix, every new tool. Nothing for you to do.
Self-host users: git pull && npm install && restart the process. No update script β keep it intentionally manual.
Cloud: remove the pickle block from your MCP config. That's it β there's no account, no data, nothing left to delete.
- Auto-send any message without your confirmation
- Post to public channels or group DMs on your behalf
- Send a third follow-up to someone you've already nudged twice
- Upload your tokens, messages, or task data anywhere
Built by Aditya Sharma Β· pickle.adityaarsharma.com