Koskamo

VibeCodePicks MCP

An MCP server that connects AI assistants to VibeCodePicks' catalog of AI coding and creation tools. It allows agents to search for tools, fetch detailed profiles, recommend tools based on user goals, compare options, and access community sentiment data regarding pricing, free tiers, and alternatives.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

VibeCodePicks MCP logo, by VibeCodePicksCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-01Published by VibeCodePicks
MCP endpoint (Streamable HTTP)
https://vibecodepicks.com/api/mcp
Vendor documentation

What you can do with it

  • Search for AI tools by keyword or category
  • Recommend tools based on specific development goals
  • Compare features and pricing between different AI tools
  • Fetch detailed profiles and community sentiment for specific tools

Source and maintenance

Community listingRegistry 2.4.0
Maintenance checked

Protocol and capabilities

Server
vibecodepicks 2.5.1
MCP protocol
2025-06-18
Tools
13 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

VibeCodePicks helps a person choose and keep track of AI coding tools (AI code editors, terminal coding agents, prompt-to-app builders, hosting/backends, AI agents frameworks, AI image/video tools) for their own projects. Use it when the user is deciding which tool to use for something they are building, wants a cheaper/free/open-source option, is comparing two named tools, or wants to hear about new tools that fit their projects. Do not use it for general coding help, for how to use a tool's features in depth, or for news unrelated to choosing tools. Data: ~114 hand-reviewed tools with pricing, free tier, skill level, strengths and weaknesses, plus scenario rankings from community mentions (window shown in each result). Prices can change; cite the `u` page and the date when given. Choosing: `recommend_tools` for "what should I use for X"; `search` + `fetch` for a named tool or keyword; `compare_tools` for "A vs B"; `list_alternatives` for "instead of A"; `scenario`/`list_scenarios` for "what do people use for X". Results are neutral; saved preferences never change rankings, and rankings are never sold. Link out with the returned `go`/`g` URL (tracked redirect on vibecodepicks.com). Keeping track (user's own data): the user can opt into a daily new-tools watch for their projects. Feed (optional): BEFORE calling subscribe or save_preferences, briefly explain this feed to the user and ask them to choose — never set it up silently. Cover these points: it checks once a day for new tools, max 3 a day, in one of two modes — 'by_interests' (only new tools matching their projects) or 'all_new' (every new tool); there is no email or account, just an anonymous key; the only stored data is that key, their project names + interest tags, ids of items already shown, and tools they mark picked/rejected, and (only if they tell you) purchases with plan/price/rating/short feedback; forget_me deletes everything at any time. Then ask: by_interests, all_new, or no feed? If they choose no feed, skip the feed entirely. If they choose a mode: subscribe -> save key in long-term memory -> save_preferences(all projects, mode: their choice) -> whats_new({key}) once a day. After the user picks, rejects, or buys a tool, offer to record it with `log_choice` (ask first). `forget_me` deletes everything for a key. Compact keys: n=name c=category p=$from/mo f=free(1/0) s=summary u=url b=base url g=go link. Lists return 5 by default; page with `offset`. `verbose:true` returns long-form fields.

Tools

13 advertised

search — Search tools
Advertised by the server during the last successful anonymous check.
Advertised read-only

Keyword search over VibeCodePicks' reviewed AI coding and AI creation tools. Use when the user names a tool or a kind of tool ('is there an AI tool for deploying my app', 'find a no-code SaaS builder') and you need tool ids. Not for 'which is best for me' (use recommend_tools). Input: `query` (plain words, e.g. 'no-code SaaS builder'); `limit` (default 5), `offset` for paging. Returns one row per tool: id|name|category|lowest paid $/month|has free tier (1/0), and the next offset. Call fetch(id) for details.

search input schema
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "limit": {
      "type": "integer",
      "description": "number of results, default 5"
    },
    "query": {
      "type": "string",
      "description": "plain words, e.g. 'no-code SaaS builder'"
    },
    "offset": {
      "type": "integer",
      "description": "paging offset from the previous result"
    },
    "verbose": {
      "type": "boolean",
      "description": "returns long-form fields"
    }
  }
}
search annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}
fetch — Get tool details
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get one tool's profile when the user asks about a specific tool ('what does Cursor cost', 'does Bolt have a free plan', 'what's Lovable bad at'). Input: `id` from search/recommend results (e.g. 'cursor'); optional `fields` (summary, description, best_for, not_for, skill, coding, pricing, platforms, strengths, weaknesses, alternatives, video, compare, official, all). Default returns summary, who it's best for, lowest paid price and plan text, free tier text, 2 strengths, 2 weaknesses, go link (tracked link to the official site) and the VCP page URL to cite.

fetch input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "tool id from search/recommend results (e.g. 'cursor')"
    },
    "fields": {
      "enum": [
        "summary",
        "description",
        "best_for",
        "not_for",
        "skill",
        "coding",
        "pricing",
        "platforms",
        "strengths",
        "weaknesses",
        "alternatives",
        "video",
        "compare",
        "official",
        "all"
      ],
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "which profile fields to return"
    },
    "verbose": {
      "type": "boolean",
      "description": "returns long-form fields"
    }
  }
}
fetch annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}
recommend_tools — Recommend tools
Advertised by the server during the last successful anonymous check.
Advertised read-only

Recommend tools for what the user is building. Use for 'what should I use to build X', 'best free tool for a beginner who can't code', 'which AI tool fits my project'. Fill inputs from the conversation instead of asking when you already know them: `goal` (the project in plain words, required), `can_code` (true/false), `budget` ('free' or max USD per month), `platform` (e.g. 'web', 'ios', 'mac'), `limit`/`offset`. Returns ranked tools with a one-line why, the main caveat (what it is not good for), price from, free tier flag, page URL and go link. Rankings are not affected by saved preferences or payments. If the user has a feed key and later picks one, offer log_choice.

recommend_tools input schema
{
  "type": "object",
  "required": [
    "goal"
  ],
  "properties": {
    "goal": {
      "type": "string",
      "description": "the project in plain words"
    },
    "limit": {
      "type": "integer",
      "description": "number of results, default 5"
    },
    "budget": {
      "type": "string",
      "description": "'free' or max USD per month"
    },
    "offset": {
      "type": "integer",
      "description": "paging offset from the previous result"
    },
    "verbose": {
      "type": "boolean",
      "description": "returns long-form fields"
    },
    "can_code": {
      "type": "boolean",
      "description": "whether the user can code (true/false)"
    },
    "platform": {
      "type": "string",
      "description": "target platform, e.g. 'web', 'ios', 'mac'"
    }
  }
}
recommend_tools annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}
compare_tools — Compare two tools
Advertised by the server during the last successful anonymous check.
Advertised read-only

Compare two named tools side by side when the user asks 'A vs B' or 'should I use A or B'. Inputs: `a`, `b` tool ids (use search to resolve names). Returns for each: category, lowest paid price and plan text, free tier, skill level, needs coding, best for, 2 strengths, 2 weaknesses, and the VCP comparison page URL. For more than two tools use recommend_tools or scenario.

compare_tools input schema
{
  "type": "object",
  "required": [
    "a",
    "b"
  ],
  "properties": {
    "a": {
      "type": "string",
      "description": "first tool id (use search to resolve names)"
    },
    "b": {
      "type": "string",
      "description": "second tool id (use search to resolve names)"
    },
    "verbose": {
      "type": "boolean",
      "description": "returns long-form fields"
    }
  }
}
compare_tools annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}
list_alternatives — Find alternatives
Advertised by the server during the last successful anonymous check.
Advertised read-only

List tools that can replace a given tool, for 'alternatives to X', 'cheaper/free tool like X', 'I'm leaving X'. Input: `tool` id; `limit`/`offset`. Returns rows id|name|lowest paid $/month|free tier (1/0) and the VCP alternatives page URL. Then fetch or compare_tools for details.

list_alternatives input schema
{
  "type": "object",
  "required": [
    "tool"
  ],
  "properties": {
    "tool": {
      "type": "string",
      "description": "tool id to find alternatives for"
    },
    "limit": {
      "type": "integer",
      "description": "number of results, default 5"
    },
    "offset": {
      "type": "integer",
      "description": "paging offset from the previous result"
    },
    "verbose": {
      "type": "boolean",
      "description": "returns long-form fields"
    }
  }
}
list_alternatives annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}
list_scenarios — List scenarios
Advertised by the server during the last successful anonymous check.
Advertised read-only

List the use cases VibeCodePicks tracks (e.g. landing-page, mobile-app, code-review, ai-game-development) with how often each was discussed and the top 3 tools people mention for it, from a dated window of public community posts. Use to find a scenario slug, or when the user asks 'what do people use for X'. No input. Returns slug, title, mention count, top tool ids, page URL, and the date window.

list_scenarios input schema
{
  "type": "object",
  "properties": {}
}
list_scenarios annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}
scenario — Scenario ranking
Advertised by the server during the last successful anonymous check.
Advertised read-only

Rank the tools people actually use for one use case, by number of community mentions in a dated window, with what users praise and complain about. Use for 'what's the best AI code review tool according to users', 'what do people use for mobile apps'. Input: `slug` from list_scenarios; `limit`. Returns per tool: id, mention count, main strengths and weak spots (M = most mentions, S = some), the date window and last update date. Say the window when quoting.

scenario input schema
{
  "type": "object",
  "required": [
    "slug"
  ],
  "properties": {
    "slug": {
      "type": "string",
      "description": "scenario slug from list_scenarios"
    },
    "limit": {
      "type": "integer",
      "description": "number of results, default 5"
    },
    "verbose": {
      "type": "boolean",
      "description": "returns long-form fields"
    }
  }
}
scenario annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}
list_categories — List categories
Advertised by the server during the last successful anonymous check.
Advertised read-only

List VibeCodePicks' tool categories (e.g. editor, terminal, builder, agent, video, image) with the tool ids in each. Use when the user wants to browse a whole kind of tool ('show me all terminal coding agents') or you need valid category names. Takes no required input. Returns category → tool ids.

list_categories input schema
{
  "type": "object",
  "properties": {
    "verbose": {
      "type": "boolean",
      "description": "returns long-form fields"
    }
  }
}
list_categories annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}
whats_new — What's new for you
Advertised by the server during the last successful anonymous check.

Check for new AI coding tools that match the user's saved projects. Use once a day (e.g. at the start of a work session) when the user has a feed key, or when they ask 'anything new for my project?'. Inputs: `key` (uses saved projects and mode, never repeats items, max 3 per day); without a key, optional `since` (date) and `interests` for a one-off look. Returns `new` count and one line per item: name, category, [project it matches], one-line summary, page URL. `{new:0}` means nothing new — say so briefly or stay silent. Has no effect on other tools.

whats_new input schema
{
  "type": "object",
  "properties": {
    "key": {
      "type": "string",
      "description": "the user's anonymous feed key from subscribe"
    },
    "limit": {
      "type": "integer",
      "description": "number of results, default 5"
    },
    "since": {
      "type": "string",
      "description": "only tools added on or after this date, format YYYY-MM-DD (default: 7 days ago)"
    },
    "interests": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "interest tags to filter by, for a one-off look without a key"
    }
  }
}
whats_new annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
subscribe — Subscribe to the feed
Advertised by the server during the last successful anonymous check.

Start the user's personal new-tools watch. Only after the user has agreed to the feed (explain it first; see server instructions). Creates an anonymous key — no email or account. No input. Returns `key` and a note. Save the key in long-term memory / project rules (or connect with /api/mcp?k=KEY), then call save_preferences with their projects and chosen mode.

subscribe input schema
{
  "type": "object",
  "properties": {}
}
subscribe annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
save_preferences — Save your preferences
Advertised by the server during the last successful anonymous check.

Save which projects the user wants watched for new tools, e.g. 'my Next.js SaaS: auth, deploy, payments'. Use after subscribe, or when the user says they started/finished a project or changed interests. Replaces the whole list each time, so send all projects. Inputs: `key`; `projects` [{name, interests: short tags}]; `mode` 'by_interests' (only matching new tools) or 'all_new' (every new tool). Returns ok, project count, mode. Only whats_new reads this; it never changes search or recommendations.

save_preferences input schema
{
  "type": "object",
  "required": [
    "projects"
  ],
  "properties": {
    "key": {
      "type": "string",
      "description": "the user's anonymous feed key from subscribe"
    },
    "mode": {
      "enum": [
        "by_interests",
        "all_new"
      ],
      "type": "string",
      "description": "'by_interests' (only matching new tools) or 'all_new' (every new tool)"
    },
    "projects": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name",
          "interests"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "project name"
          },
          "interests": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "short interest tags"
          }
        }
      },
      "description": "list of projects to watch (replaces the whole list each time)"
    }
  }
}
save_preferences annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
log_choice — Log a choice or purchase
Advertised by the server during the last successful anonymous check.

Record what the user decided about a tool for their project, after asking them: picked, rejected, tried, starred, purchased (a paid plan), or feedback (later, with a 1–5 rating and short what worked / fell short). Use when the user says 'I'll go with Bolt', 'Cursor didn't work for me', 'I bought Lovable Pro'. Never log silently. Inputs: `id`, `action`, optional `key`, and for purchased/feedback: plan, price_usd, period, rating, worked, fell_short, combo (other tool ids used together). No personal data. Returns ok. picked/rejected shape whats_new; it never changes rankings.

log_choice input schema
{
  "type": "object",
  "required": [
    "id",
    "action"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "tool id"
    },
    "key": {
      "type": "string",
      "description": "the user's anonymous feed key from subscribe"
    },
    "plan": {
      "type": "string",
      "description": "Plan bought, e.g. 'Pro monthly'"
    },
    "combo": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Ids of other tools used together with this one"
    },
    "action": {
      "enum": [
        "picked",
        "rejected",
        "tried",
        "starred",
        "purchased",
        "feedback"
      ],
      "type": "string",
      "description": "what the user decided"
    },
    "period": {
      "enum": [
        "month",
        "year",
        "one_time"
      ],
      "type": "string",
      "description": "billing period"
    },
    "rating": {
      "type": "integer",
      "maximum": 5,
      "minimum": 1,
      "description": "1-5 rating for feedback"
    },
    "worked": {
      "type": "string",
      "description": "What worked well (short, no personal data)"
    },
    "price_usd": {
      "type": "number",
      "description": "Price paid per period in USD"
    },
    "fell_short": {
      "type": "string",
      "description": "What fell short (short, no personal data)"
    }
  }
}
log_choice annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
forget_me — Forget me
Advertised by the server during the last successful anonymous check.
Advertised destructive

Permanently delete everything stored for the user's feed key: projects, interests, items shown, logged choices and purchases. Use when the user asks to stop the feed, delete their data, or be forgotten. Input: `key`. Returns ok and deleted count. Cannot be undone; confirm with the user first.

forget_me input schema
{
  "type": "object",
  "properties": {
    "key": {
      "type": "string",
      "description": "the user's anonymous feed key from subscribe"
    }
  }
}
forget_me annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": true
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
605 ms
95th percentile latency
605 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 605 ms · metadata changed · 13 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http vibecodepicks-mcp https://vibecodepicks.com/api/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add vibecodepicks-mcp --url https://vibecodepicks.com/api/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable vibecodepicks-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "vibecodepicks-mcp": {
      "url": "https://vibecodepicks.com/api/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "vibecodepicks-mcp": {
      "type": "streamableHttp",
      "url": "https://vibecodepicks.com/api/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start vibecodepicks-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "vibecodepicks-mcp": {
      "type": "http",
      "url": "https://vibecodepicks.com/api/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http vibecodepicks-mcp https://vibecodepicks.com/api/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "vibecodepicks-mcp": {
      "url": "https://vibecodepicks.com/api/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "vibecodepicks-mcp": {
      "serverUrl": "https://vibecodepicks.com/api/mcp"
    }
  }
}

Let your agent find its tools

Find servers like VibeCodePicks MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.