RepoTrending MCP
A read-only MCP server that allows AI assistants to query GitHub trending data, including repos gaining stars by window (today, week, month), specific repo details, and search capabilities. It uses the same ranking logic as the main site, requires no authentication, and runs on Cloudflare Workers.
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.
https://mcp.repotrending.com/mcpWhat you can do with it
- Find top repos by stars gained today, this week or this month
- Check stars, forks, and rank for a specific repository
- Search tracked repos by words in name, description, or topics
- View how stars gained is counted and which repos are tracked
Source and maintenance
Protocol and capabilities
- Server
- repotrending 0.1.0
- MCP protocol
- 2025-06-18
- Tools
- 5 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": false
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
5 advertised
get_trending — Trending GitHub repos
Top GitHub repos by stars gained today (last 24 hours), this week (7 days) or this month (30 days), or by total stars (window "all"). Optional language or topic filter. Use list_filters for valid names.
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"default": 10,
"maximum": 25,
"minimum": 1,
"description": "How many repos to return (1 to 25)."
},
"topic": {
"type": "string",
"pattern": "^[A-Za-z0-9-]{1,40}$",
"description": "GitHub topic, for example \"mcp\"."
},
"window": {
"enum": [
"today",
"week",
"month",
"all"
],
"type": "string",
"default": "week",
"description": "today = last 24 hours, week = 7 days, month = 30 days, all = total stars."
},
"language": {
"type": "string",
"maxLength": 30,
"description": "Programming language, for example \"Rust\"."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"data_date",
"collecting_since",
"source",
"method_url",
"window",
"language",
"topic",
"window_status",
"repos_in_filter",
"count",
"truncated",
"note",
"text_note",
"repos"
],
"properties": {
"note": {
"type": "string"
},
"count": {
"type": "integer"
},
"repos": {
"type": "array",
"items": {
"type": "object",
"required": [
"rank",
"repo",
"url",
"stars",
"stars_gained",
"partial",
"language",
"description"
],
"properties": {
"url": {
"type": "string"
},
"rank": {
"type": "integer"
},
"repo": {
"type": "string"
},
"stars": {
"type": "integer"
},
"partial": {
"type": "boolean"
},
"language": {
"type": "string"
},
"description": {
"type": "string"
},
"stars_gained": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
}
}
}
},
"topic": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"source": {
"type": "string"
},
"window": {
"type": "string"
},
"language": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"data_date": {
"type": "string",
"description": "Day of the latest snapshot, YYYY-MM-DD."
},
"text_note": {
"type": "string"
},
"truncated": {
"type": "boolean"
},
"method_url": {
"type": "string",
"description": "Page that explains how the numbers are made."
},
"window_status": {
"type": "object",
"required": [
"ready",
"ready_on",
"days_collected",
"days_needed"
],
"properties": {
"ready": {
"type": "boolean"
},
"ready_on": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"days_needed": {
"type": "integer"
},
"days_collected": {
"type": "integer"
}
}
},
"repos_in_filter": {
"type": "integer"
},
"collecting_since": {
"type": "string",
"description": "First day of collected data, YYYY-MM-DD."
}
}
}{
"title": "Trending GitHub repos",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_repo — One GitHub repo
Details of one tracked repo by owner/name: stars, forks, language, license, topics, star counts of the last days, gains and ranks per window.
{
"type": "object",
"required": [
"repo"
],
"properties": {
"repo": {
"type": "string",
"pattern": "^[A-Za-z0-9_.-]{1,100}/[A-Za-z0-9_.-]{1,100}$",
"maxLength": 201,
"minLength": 3,
"description": "Repo as owner/name."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"data_date",
"collecting_since",
"source",
"method_url",
"repo",
"url",
"github_url",
"description",
"language",
"license",
"topics",
"created_at",
"forks",
"stars",
"first_seen",
"stars_by_day",
"stars_gained",
"rank",
"note",
"text_note"
],
"properties": {
"url": {
"type": "string"
},
"note": {
"type": "string"
},
"rank": {
"type": "object",
"required": [
"today",
"week",
"month",
"all"
],
"properties": {
"all": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"week": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"month": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"today": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
}
}
},
"repo": {
"type": "string"
},
"forks": {
"type": "integer"
},
"stars": {
"type": "integer"
},
"source": {
"type": "string"
},
"topics": {
"type": "array",
"items": {
"type": "string"
}
},
"license": {
"type": "string"
},
"language": {
"type": "string"
},
"data_date": {
"type": "string",
"description": "Day of the latest snapshot, YYYY-MM-DD."
},
"text_note": {
"type": "string"
},
"created_at": {
"type": "string"
},
"first_seen": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"github_url": {
"type": "string"
},
"method_url": {
"type": "string",
"description": "Page that explains how the numbers are made."
},
"description": {
"type": "string"
},
"stars_by_day": {
"type": "array",
"items": {
"type": "integer"
},
"description": "Total stars at each daily snapshot, oldest first (up to 31)."
},
"stars_gained": {
"type": "object",
"required": [
"today",
"week",
"month"
],
"properties": {
"week": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"month": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"today": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
}
}
},
"collecting_since": {
"type": "string",
"description": "First day of collected data, YYYY-MM-DD."
}
}
}{
"title": "One GitHub repo",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}search_repos — Search tracked repos
Find tracked repos by words in the name, description, topics or language. Every word must match. Results are ordered by relevance, then stars.
{
"type": "object",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"default": 10,
"maximum": 25,
"minimum": 1,
"description": "How many repos to return (1 to 25)."
},
"query": {
"type": "string",
"maxLength": 80,
"minLength": 2,
"description": "Words to look for, for example \"vector database\"."
},
"language": {
"type": "string",
"maxLength": 30,
"description": "Only repos in this language."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"data_date",
"collecting_since",
"source",
"method_url",
"language",
"matches",
"count",
"truncated",
"text_note",
"repos"
],
"properties": {
"count": {
"type": "integer"
},
"repos": {
"type": "array",
"items": {
"type": "object",
"required": [
"repo",
"url",
"stars",
"language",
"topics",
"description"
],
"properties": {
"url": {
"type": "string"
},
"repo": {
"type": "string"
},
"stars": {
"type": "integer"
},
"topics": {
"type": "array",
"items": {
"type": "string"
}
},
"language": {
"type": "string"
},
"description": {
"type": "string"
}
}
}
},
"source": {
"type": "string"
},
"matches": {
"type": "integer"
},
"language": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"data_date": {
"type": "string",
"description": "Day of the latest snapshot, YYYY-MM-DD."
},
"text_note": {
"type": "string"
},
"truncated": {
"type": "boolean"
},
"method_url": {
"type": "string",
"description": "Page that explains how the numbers are made."
},
"collecting_since": {
"type": "string",
"description": "First day of collected data, YYYY-MM-DD."
}
}
}{
"title": "Search tracked repos",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}list_filters — Languages and topics
List the languages or the GitHub topics that get_trending and search_repos accept, with how many tracked repos each has. Most repos first.
{
"type": "object",
"required": [
"kind"
],
"properties": {
"kind": {
"enum": [
"language",
"topic"
],
"type": "string",
"description": "Which list to return."
},
"limit": {
"type": "integer",
"default": 30,
"maximum": 100,
"minimum": 1,
"description": "How many names to return (1 to 100)."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"data_date",
"collecting_since",
"source",
"method_url",
"kind",
"total",
"count",
"truncated",
"items"
],
"properties": {
"kind": {
"type": "string"
},
"count": {
"type": "integer"
},
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"repos",
"page"
],
"properties": {
"name": {
"type": "string"
},
"page": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"repos": {
"type": "integer"
}
}
}
},
"total": {
"type": "integer"
},
"source": {
"type": "string"
},
"data_date": {
"type": "string",
"description": "Day of the latest snapshot, YYYY-MM-DD."
},
"truncated": {
"type": "boolean"
},
"method_url": {
"type": "string",
"description": "Page that explains how the numbers are made."
},
"collecting_since": {
"type": "string",
"description": "First day of collected data, YYYY-MM-DD."
}
}
}{
"title": "Languages and topics",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}how_we_rank — How the rankings are made
Plain explanation of how RepoTrending counts stars gained, which repos it tracks, what it leaves out and how much data each window has so far.
{
"type": "object",
"properties": {},
"additionalProperties": false
}{
"type": "object",
"required": [
"data_date",
"collecting_since",
"source",
"method_url",
"summary",
"limits",
"repos_tracked",
"repos_available",
"windows"
],
"properties": {
"limits": {
"type": "array",
"items": {
"type": "string"
}
},
"source": {
"type": "string"
},
"summary": {
"type": "array",
"items": {
"type": "string"
}
},
"windows": {
"type": "object",
"required": [
"today",
"week",
"month"
],
"properties": {
"week": {
"type": "object",
"required": [
"ready",
"ready_on",
"days_collected",
"days_needed"
],
"properties": {
"ready": {
"type": "boolean"
},
"ready_on": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"days_needed": {
"type": "integer"
},
"days_collected": {
"type": "integer"
}
}
},
"month": {
"type": "object",
"required": [
"ready",
"ready_on",
"days_collected",
"days_needed"
],
"properties": {
"ready": {
"type": "boolean"
},
"ready_on": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"days_needed": {
"type": "integer"
},
"days_collected": {
"type": "integer"
}
}
},
"today": {
"type": "object",
"required": [
"ready",
"ready_on",
"days_collected",
"days_needed"
],
"properties": {
"ready": {
"type": "boolean"
},
"ready_on": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"days_needed": {
"type": "integer"
},
"days_collected": {
"type": "integer"
}
}
}
}
},
"data_date": {
"type": "string",
"description": "Day of the latest snapshot, YYYY-MM-DD."
},
"method_url": {
"type": "string",
"description": "Page that explains how the numbers are made."
},
"repos_tracked": {
"type": "integer"
},
"repos_available": {
"type": "integer"
},
"collecting_since": {
"type": "string",
"description": "First day of collected data, YYYY-MM-DD."
}
}
}{
"title": "How the rankings are made",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
Not advertised
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
- 258 ms
- 95th percentile latency
- 258 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 258 ms · metadata changed · 5 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http repotrending-mcp https://mcp.repotrending.com/mcpCodex
codex mcp add repotrending-mcp --url https://mcp.repotrending.com/mcpCursor
{
"mcpServers": {
"repotrending-mcp": {
"url": "https://mcp.repotrending.com/mcp"
}
}
}Cline
{
"mcpServers": {
"repotrending-mcp": {
"type": "streamableHttp",
"url": "https://mcp.repotrending.com/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"repotrending-mcp": {
"type": "http",
"url": "https://mcp.repotrending.com/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http repotrending-mcp https://mcp.repotrending.com/mcpClaude Desktop
{
"mcpServers": {
"repotrending-mcp": {
"url": "https://mcp.repotrending.com/mcp"
}
}
}Windsurf
{
"mcpServers": {
"repotrending-mcp": {
"serverUrl": "https://mcp.repotrending.com/mcp"
}
}
}Let your agent find its tools
Find servers like RepoTrending MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.