MCP server wrapping the OSSInsight REST API — GitHub repo analytics, collections, trending, search, compare, rankings
Server defines 6 tools with complete input schemas and descriptions. Naming follows verb_noun convention (ossinsight_*). Descriptions are adequate (50-100 chars) but lack actionable context for LLM selection. All parameters have type definitions and descriptions. No output schemas documented. Error handling is basic (retry logic present but no recovery guidance in tool descriptions). Missing tool annotations (readOnlyHint, idempotentHint). Parameter descriptions lack constraints (e.g., enum values for 'period' and 'metric' are stated in description text, not as JSON Schema enums).
List all curated collections.
Compare two GitHub repositories side-by-side.
Rank repositories in a collection by stars/issues/PRs over a time range.
Get GitHub repository metadata: stars, forks, language, license, description.
Search GitHub repos and collections.
Get trending GitHub repos by language and timeframe.
Enum constraints stated in descriptions, not JSON Schema. 'period' accepts 'past_24_hours | past_week | past_month | past_3_months' but lacks enum array in schema. LLMs cannot parse pipe-delimited text reliably.
No output schemas documented. Tool descriptions do not specify what fields are returned or their types. LLMs cannot plan downstream calls or extract required data (e.g., repo IDs for chaining).
Tool descriptions lack actionable context. 'Get GitHub repository metadata' does not explain WHEN to use this vs search_repos, or what fields are returned. Descriptions should answer: What? When? What's returned?
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | <=2025-11-25 | v2 |
No tool annotations (readOnlyHint, idempotentHint). All tools are read-only but lack explicit annotation. Agents cannot distinguish safe-to-retry tools from destructive ones without annotations.
Error handling in tool descriptions is absent. No guidance on what to do if a repo is not found, API rate-limits, or search returns no results. Retry logic exists server-side but is not exposed to LLM.