Koskamo

vibestreak MCP

An MCP server that provides access to vibestreak's AI coding heatmap and leaderboard data. It allows agents to retrieve public leaderboards, user profiles, daily activity summaries, and personal streak information via streamable HTTP endpoints.

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.

vibestreak MCP logo, by Kingsbridge Consultancy LLCCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-01Published by Kingsbridge Consultancy LLC
MCP endpoint (Streamable HTTP)
https://vibestreak.dev/mcp
Vendor documentation

What you can do with it

  • Retrieve public AI coding leaderboards
  • Fetch user profile heatmap data
  • Check daily AI coding activity
  • Access personal streak information

Source and maintenance

Community listingRegistry 0.3.5

Protocol and capabilities

Server
vibestreak 1.0.0
MCP protocol
2025-06-18
Tools
4 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.

vibestreak ranks AI-assisted developers on consistency (active days), streaks and commits shipped with an AI co-author, not on spend. Handles are GitHub usernames. Days and streaks are in each person's own timezone. Counts are self-reported by the vibestreak CLI; "verified" means GitHub's public contribution calendars back up the shipped days.

Tools

4 advertised

get_leaderboard — vibestreak leaderboard
Advertised by the server during the last successful anonymous check.
Advertised read-only

The vibestreak leaderboard of AI-assisted developers, ranked by consistency (active days), commits shipped with an AI co-author, current streak, or tokens. Optionally a date range, one or more AI tools, or only GitHub-verified profiles. Use `you` to include a particular person's rank.

get_leaderboard input schema
{
  "type": "object",
  "properties": {
    "to": {
      "type": "string",
      "description": "End of a custom range (YYYY-MM-DD)."
    },
    "you": {
      "type": "string",
      "description": "A handle whose row to include wherever it ranks."
    },
    "from": {
      "type": "string",
      "description": "Start of a custom range (YYYY-MM-DD); needs `to`; replaces period."
    },
    "tool": {
      "enum": [
        "claude",
        "codex",
        "cursor",
        "gemini",
        "antigravity",
        "copilot",
        "opencode"
      ],
      "type": "string",
      "description": "Only this AI coding tool (claude = Claude Code). Default: all tools."
    },
    "limit": {
      "type": "integer",
      "maximum": 50,
      "minimum": 1,
      "description": "How many rows. Default 10."
    },
    "tools": {
      "type": "array",
      "items": {
        "enum": [
          "claude",
          "codex",
          "cursor",
          "gemini",
          "antigravity",
          "copilot",
          "opencode"
        ],
        "type": "string"
      },
      "description": "Several AI tools at once: a day counts if any of them was used. Default: all tools."
    },
    "metric": {
      "enum": [
        "consistency",
        "shipped",
        "streak",
        "tokens"
      ],
      "type": "string",
      "description": "What ranks people. Default consistency."
    },
    "period": {
      "enum": [
        "today",
        "7d",
        "30d",
        "90d",
        "all"
      ],
      "type": "string",
      "description": "The window: today, the last 7/30/90 days in each person's own timezone, or all time. Default 30d."
    },
    "verified": {
      "type": "boolean",
      "description": "Only profiles whose shipped days GitHub's public calendars back up."
    }
  }
}
get_leaderboard annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_profile — vibestreak profile
Advertised by the server during the last successful anonymous check.
Advertised read-only

A developer's public vibestreak profile: current and longest streak, streak level, whether they were active today, totals (active days, commits shipped with AI, messages, tokens), their AI tools, and a text heatmap of recent weeks.

get_profile input schema
{
  "type": "object",
  "required": [
    "handle"
  ],
  "properties": {
    "tool": {
      "enum": [
        "claude",
        "codex",
        "cursor",
        "gemini",
        "antigravity",
        "copilot",
        "opencode"
      ],
      "type": "string",
      "description": "Only this AI coding tool (claude = Claude Code). Default: all tools."
    },
    "weeks": {
      "type": "integer",
      "maximum": 53,
      "minimum": 4,
      "description": "Heatmap weeks. Default 20."
    },
    "handle": {
      "type": "string",
      "description": "The vibestreak handle (their GitHub username), with or without @."
    }
  }
}
get_profile annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_my_profile — My vibestreak profile
Advertised by the server during the last successful anonymous check.
Advertised read-only

The profile of the person this connection belongs to (it needs their vibestreak CLI token as `Authorization: Bearer …`), even if their profile is hidden: streak, whether today is done or the streak ends at midnight, the days to their next level, totals and a heatmap.

get_my_profile input schema
{
  "type": "object",
  "properties": {
    "tool": {
      "enum": [
        "claude",
        "codex",
        "cursor",
        "gemini",
        "antigravity",
        "copilot",
        "opencode"
      ],
      "type": "string",
      "description": "Only this AI coding tool (claude = Claude Code). Default: all tools."
    },
    "weeks": {
      "type": "integer",
      "maximum": 53,
      "minimum": 4,
      "description": "Heatmap weeks. Default 20."
    }
  }
}
get_my_profile annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_today — Coding with AI today
Advertised by the server during the last successful anonymous check.
Advertised read-only

Who on vibestreak has coded with AI today (each in their own timezone), with their streaks, and whose streak ends at midnight unless they code today.

get_today input schema
{
  "type": "object",
  "properties": {}
}
get_today annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

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
391 ms
95th percentile latency
391 ms

Maintenance history

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

  • · probe · passed · 391 ms · metadata changed · 4 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 vibestreak-mcp https://vibestreak.dev/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 vibestreak-mcp --url https://vibestreak.dev/mcp

Cursor

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

Cline

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

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start vibestreak-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "vibestreak-mcp": {
      "type": "http",
      "url": "https://vibestreak.dev/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 vibestreak-mcp https://vibestreak.dev/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": {
    "vibestreak-mcp": {
      "url": "https://vibestreak.dev/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": {
    "vibestreak-mcp": {
      "serverUrl": "https://vibestreak.dev/mcp"
    }
  }
}

Let your agent find its tools

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