프로토타입 · 미리 보기: 공식 레지스트리의 모든 서버를 담고 있으며 30분마다 동기화해요. 리뷰와 계정 기능은 다음 단계에서 열려요.
PopNx MCPAI를 쓰는 사람을 위한 MCP 서버 · 쉬운 말로 설명해요

Kosha Model Discovery

제작자: sriinnu버전 1.13.0i★ –i내 컴퓨터에서 실행
레지스트리 이름io.github.sriinnu/kosha-discovery

설치

개요

제작자가 쓴 설명(영어 원문)

Tells your agent which model to use and what it costs, across 46 providers and local runtimes.

PopNx MCP의 세 기둥

이 세 가지는 절대 하나의 점수로 합치지 않아요. 의견, 측정, 인기는 서로 다른 것이니까요.

할 수 있는 일

이 서버는 아직 쉬운 말로 된 요약을 쓰지 못했어요. 아래는 레지스트리에서 읽어 온 사실이에요.

  • 연결 방식: 내 컴퓨터에서 실행
  • 전송 방식: stdio
  • 카테고리: 기타
  • 입력해야 할 값: ANTHROPIC_API_KEY, OPENAI_API_KEY, GOOGLE_API_KEY, OPENROUTER_API_KEY, XAI_API_KEY, TYPESAFE_API_KEY

설치

쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.

설치하기 전에

  • 기본 점검: 1개 중 1개 통과
  • 내 컴퓨터에서 내 사용자 계정의 권한(파일, 네트워크, 앱)으로 실행돼요.
  • 직접 입력할 값: ANTHROPIC_API_KEY, OPENAI_API_KEY, GOOGLE_API_KEY, OPENROUTER_API_KEY, XAI_API_KEY, TYPESAFE_API_KEY, KOSHA_CACHE_TTL_HOURS

비밀로 표시된 값은 내 계정의 열쇠예요. 절대 다른 사람과 공유하거나 채팅에 붙여 넣지 마세요.

필요한 것

  • npmNode.js 설치(npx 명령어용)

어떤 앱을 쓰세요?

위에서 앱을 고르세요. 기억해 두었다가 다음부터는 버튼에 “…에 설치”라고 표시해요.

Claude Desktop → Settings → Developer → Edit Config를 열고 claude_desktop_config.json에 이 내용을 붙여 넣으세요

{
  "mcpServers": {
    "kosha-discovery": {
      "command": "npx",
      "args": [
        "-y",
        "@sriinnu/kosha-discovery"
      ],
      "env": {
        "ANTHROPIC_API_KEY": "your-value",
        "OPENAI_API_KEY": "your-value",
        "GOOGLE_API_KEY": "your-value",
        "OPENROUTER_API_KEY": "your-value",
        "XAI_API_KEY": "your-value",
        "TYPESAFE_API_KEY": "your-value",
        "KOSHA_CACHE_TTL_HOURS": "your-value"
      }
    }
  }
}

터미널에서 이 명령어를 실행하세요

claude mcp add kosha-discovery --env ANTHROPIC_API_KEY=your-value --env OPENAI_API_KEY=your-value --env GOOGLE_API_KEY=your-value --env OPENROUTER_API_KEY=your-value --env XAI_API_KEY=your-value --env TYPESAFE_API_KEY=your-value --env KOSHA_CACHE_TTL_HOURS=your-value -- npx -y @sriinnu/kosha-discovery

실행하기 전에 빈 값을 채워 주세요.

Cursor에서 열기

또는 설정을 직접 복사하기

프로젝트의 .cursor/mcp.json 또는 ~/.cursor/mcp.json에 붙여 넣으세요

{
  "mcpServers": {
    "kosha-discovery": {
      "command": "npx",
      "args": [
        "-y",
        "@sriinnu/kosha-discovery"
      ],
      "env": {
        "ANTHROPIC_API_KEY": "your-value",
        "OPENAI_API_KEY": "your-value",
        "GOOGLE_API_KEY": "your-value",
        "OPENROUTER_API_KEY": "your-value",
        "XAI_API_KEY": "your-value",
        "TYPESAFE_API_KEY": "your-value",
        "KOSHA_CACHE_TTL_HOURS": "your-value"
      }
    }
  }
}

브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.

VS Code에서 열기

또는 설정을 직접 복사하기

프로젝트의 .vscode/mcp.json에 붙여 넣으세요

{
  "servers": {
    "kosha-discovery": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@sriinnu/kosha-discovery"
      ],
      "env": {
        "ANTHROPIC_API_KEY": "your-value",
        "OPENAI_API_KEY": "your-value",
        "GOOGLE_API_KEY": "your-value",
        "OPENROUTER_API_KEY": "your-value",
        "XAI_API_KEY": "your-value",
        "TYPESAFE_API_KEY": "your-value",
        "KOSHA_CACHE_TTL_HOURS": "your-value"
      }
    }
  }
}

브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.

이 서버는 내 컴퓨터에서 실행되는데, ChatGPT는 인터넷에 있는 서버에만 연결할 수 있어요. 다른 앱을 고르세요.

선택한 앱은 이 기기의 쿠키에만 저장돼요. 계정은 필요 없어요.

직접 입력할 값

  • ANTHROPIC_API_KEY 비밀 env
    Anthropic API key. Optional — without it, Anthropic models are read from the public models.dev / LiteLLM catalogs instead of the live API.
  • OPENAI_API_KEY 비밀 env
    OpenAI API key. Optional — falls back to the public catalogs when absent.
  • GOOGLE_API_KEY 비밀 env
    Google AI Studio / Gemini API key. Optional.
  • OPENROUTER_API_KEY 비밀 env
    OpenRouter key. Optional for discovery (unauthenticated requests are rate-limited), required to execute through OpenRouter.
  • XAI_API_KEY 비밀 env
    xAI (Grok) API key. Optional.
  • TYPESAFE_API_KEY 비밀 env
    TypeSafe System One (Jev) API key. Optional.
  • KOSHA_CACHE_TTL_HOURS env
    Override the discovery cache TTL. Defaults to 24 hours.

이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.

할 수 있는 일

내 컴퓨터에서 실행돼요. 설치하면 AI 앱에 도구 목록이 나타나요.

기본 점검i

누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 8일 점검

  • ✓ 통과

    제작자와 저장소 일치

    레지스트리 이름이 GitHub 계정 sriinnu 기준으로 확인되었고, 이 계정이 저장소를 소유하고 있어요

  • … 아직 점검 안 함

    계속 관리되고 있음

    아직 GitHub에서 이 저장소를 읽어 오지 않았어요

  • … 아직 점검 안 함

    라이선스 있음

    아직 GitHub에서 이 저장소를 읽어 오지 않았어요

  • – 해당 없음

    엔드포인트 응답

    내 컴퓨터에서 실행되는 서버라 인터넷 엔드포인트가 없어요

  • – 해당 없음

    OAuth로 로그인

    내 컴퓨터에서 실행되며, 대신 로컬 설정을 사용해요

  • … 아직 점검 안 함

    도구 설명에 숨겨진 지시 없음

    내 컴퓨터에서 실행돼요. 도구 목록은 인터넷 엔드포인트가 있는 서버에서만 읽을 수 있어요

기타 카테고리의 다른 서버와 비교i

  • 이 카테고리의 다른 서버 18372개 중 0%보다 스타가 많아요
  • 이 카테고리의 다른 서버 18372개 중 92%보다 최근에 레지스트리에 공개됐어요
  • 기본 점검 결과가 이 카테고리의 다른 서버 18372개 중 100%와 같거나 더 좋아요

레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.

자주 묻는 질문

Kosha Model Discovery, 안전한가요?

해당하는 기본 점검 1개 중 1개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.

어떤 키나 코드가 필요한가요?

입력해야 할 값: ANTHROPIC_API_KEY, OPENAI_API_KEY, GOOGLE_API_KEY, OPENROUTER_API_KEY, XAI_API_KEY, TYPESAFE_API_KEY

내 컴퓨터에서 실행되나요, 클라우드에서 실행되나요?

내 컴퓨터에서 실행돼요. AI 앱이 필요할 때 실행하고, 데이터는 제작자의 서버를 거치지 않아요(서버 자체가 온라인 서비스를 호출하는 경우는 제외).

아직 관리되고 있나요?

GitHub 저장소는 마지막으로 – 변경됐고, 최신 버전(1.13.0)은 3일 전 레지스트리에 올라왔어요.

어떤 앱에서 쓸 수 있나요?

Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. 내 컴퓨터에 Node.js도 있어야 해요.

대신 쓸 수 있는 건 뭐가 있나요?

같은 카테고리에는: Spec Driven Development, Remote Desktop Commander, A1RO — Irish employment tools

대안

같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.

카드 보는 법:★ GitHub 스타i세 기둥: 리뷰 · 점검 · 사용 정도i업데이트 = 최신 버전을 레지스트리에 공개한 날i

Spec Driven Development

제작자: formulahendry

MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.

내 컴퓨터에서 실행★ 440MIT14개월 전 업데이트
설치

Remote Desktop Commander

제작자: desktop-commander

Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.

클라우드에서 실행★ 211그저께 업데이트
설치

Irish temp worker cost, public holiday pay and holidays, and SafeHandle certificate checks.

클라우드에서 실행오늘 업데이트
설치

제작자의 README

README 열기

제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.

kosha-discovery

Tells your agent — or your code — which model to use and what it costs.

Website: kosha.srinivas.dev

kosha discovers models across 46 providers and local runtimes, finds your API keys wherever they already live (env vars, Claude CLI, Codex, gcloud ADC, AWS SSO), fills in pricing and context limits, and answers questions like *the cheapest model with tool use and 128k context that I actually hold a key for*. It ships as a TypeScript library, a CLI, an HTTP API, an OpenAI-compatible proxy with a spend ledger, and an MCP server.

It works with no API keys at all — discovery falls back to the public models.dev and LiteLLM catalogs, so kosha list is useful on a fresh machine.

Install

npm install @sriinnu/kosha-discovery       # library / server

npm install -g @sriinnu/kosha-discovery # global kosha CLI brew install sriinnu/tap/kosha # same CLI and MCP server, via Homebrew

Requires Node.js 22+.

Quick start

Library
import { createKosha } from "@sriinnu/kosha-discovery";

const kosha = await createKosha();

const models = kosha.models(); // ModelCard[] across every provider const cheapest = kosha.cheapestModels({ role: "image" }); // ranked by price, with missingCredentials const sonnet = kosha.model("sonnet"); // alias → canonical ID; undefined if unknown console.log(sonnet?.pricing); // { inputPerMillion: 2, outputPerMillion: 10, cacheReadPerMillion: 0.2, ... }

CLI
kosha discover                       # query every provider; writes ~/.kosha/cache and the manifest

kosha list --provider anthropic # read from the local cache kosha model sonnet # one model, alias-aware kosha routes claude-opus-5-5 # every serving route for a model (direct, OpenRouter, Bedrock, …) kosha cheapest --role embeddings # rank by price for a role kosha doctor --ci --model opus,gpt6 # fail CI if a model you pin is deprecated, retiring, or gone kosha spend --since 2026-09-01 # roll up the proxy's spend ledger kosha refresh # bypass the cache and re-discover kosha serve --port 3000 # HTTP API + proxy; binds 127.0.0.1 (see Proxy below)

Every command takes --json. kosha --help lists the rest.

After each discovery, a stable v1 manifest lands at ~/.kosha/registry.json:

jq '.models[] | select(.pricing.inputPerMillion < 0.1) | .modelId' ~/.kosha/registry.json
GitHub Action

Fail a build when a model your code pins is deprecated, about to be retired, or listed by no provider any more:

- uses: sriinnu/kosha-discovery@v1

with: models: | claude-opus-5-5 gpt-6-sol sonnet

Pin it to a commit SHA rather than a moving tag, as you would any action. The action runs the kosha version it was released with, not latest, so a new npm publish does not change what your CI runs until you move the pin.

It runs kosha doctor --ci --model … against the public catalogs (no provider keys needed), writes a table to the job summary, and annotates each failing model. A reseller retiring one of its routes is reported but does not fail the build while the model's own provider still serves it; deprecation-window (default 30 days) sets how far ahead a sunset counts.

Public snapshot

A weekly discovery run publishes a full snapshot — every provider, model, price and limit kosha can see without your keys — at a stable URL:

curl -sL https://github.com/sriinnu/kosha-discovery/releases/download/snapshot-latest/kosha-latest.json \

| jq '.modelCount, .providerCount'

It is a release asset rather than a file in the repository: at ~2.8 MB growing with every provider added, committing it weekly would put roughly 150 MB of already-stale data a year into a repo people are meant to clone. Dated snapshot-YYYY-MM-DD pre-releases keep a short trail for diffing, pruned to the two most recent, and an older one is only removed once a newer one exists.

Each snapshot's release notes list what changed since the previous one — new models, repricings, new deprecations, removals. The same diff runs locally with pnpm snapshot:diff old.json new.json.

HTTP API
GET  /api/models?provider=&originProvider=&mode=&capability=

GET /api/models/:idOrAlias GET /api/models/:idOrAlias/routes GET /api/models/cheapest?role=… GET /api/capabilities GET /api/providers[/:id] GET /api/roles GET /api/resolve/:alias GET /api/discovery-errors GET /api/discovery[/delta|/watch|/cheapest|/binding] (stable v1 contract) POST /api/refresh GET /health GET /metrics GET /proxy/v1/models POST /proxy/v1/chat/completions

Parameters and response shapes: docs/api.md.

Proxy

kosha serve also exposes an OpenAI-compatible endpoint at /proxy/v1. Point any OpenAI SDK at it; the proxy resolves the model or alias, picks a provider you hold credentials for, injects the upstream key, forwards the request, and writes a row to the spend ledger.

kosha serve   # start on :3000
import OpenAI from "openai";

const client = new OpenAI({ baseURL: "http://localhost:3000/proxy/v1", apiKey: "not-used", // kosha resolves credentials from env });

// Use any canonical model ID or alias const res = await client.chat.completions.create({ model: "sonnet", messages: [{ role: "user", content: "hello" }], });

// Let kosha pick the cheapest model you have a key for const cheap = await client.chat.completions.create({ model: "kosha:cheapest", messages: [{ role: "user", content: "hello" }], });

// Cheapest model with tool_use and at least 128k context const routed = await client.chat.completions.create({ model: "kosha:cheapest[tool_use,128k]", messages: [{ role: "user", content: "hello" }], });

`kosha:cheapest` filter syntax (comma-separated, combinable):

FilterExampleMeaning
capabilitytool_use, visionmodel must have this tag
k128k, 200kminimum context window
provider: provider:groqpin to a specific provider

kosha:fastest, kosha:reliable, and kosha:balanced take the same filters and rank on observed latency and circuit-breaker state instead of price.

Every response carries x-kosha-model, x-kosha-provider, x-kosha-requested, x-kosha-attempt-chain, and x-kosha-estimated-cost-usd; non-streaming responses add x-kosha-actual-cost-usd when the upstream returned a usage block.

What the proxy can forward:

Upstream wire formatProvidersSupport
OpenAI-compatibleOpenAI, Ollama, OpenRouter, Vercel, Groq, Together, Fireworks, DeepInfra, …passthrough, streaming included
Anthropic MessagesAnthropictranslated: streaming, tools, image_url, response_format, reasoning_effort; audio input and non-function tools fail over to an OpenAI-compatible route for the same model
Cloud SDKsGoogle, Bedrock, Vertexdiscovery only, not proxied yet
Non-chat / other wireTypeSafe, Thinking Machinesdiscovery only — TypeSafe's System One endpoint is not a chat API, and Tinker's Anthropic-wire path differs from Anthropic's own

Defaults that matter before you expose it: the server binds 127.0.0.1. Pass --host 0.0.0.0 (or KOSHA_HOST) to listen on a network interface, and set KOSHA_PROXY_TOKEN so /proxy/* and POST /api/refresh require Authorization: Bearer or x-kosha-token. KOSHA_MONTHLY_BUDGET_USD caps spend per calendar month. Reference: docs/api.md, docs/operations.md.

MCP server

kosha-mcp serves the registry over the Model Context Protocol on stdio, so an agent can call kosha_query_models, kosha_cheapest_model, kosha_ranked_routes, kosha_model_detail, kosha_model_routes, kosha_resolve_alias, kosha_provider_health, and kosha_context_strategy without an HTTP server.

claude mcp add kosha -- kosha-mcp

It is published to the MCP registry as io.github.sriinnu/kosha-discovery, so clients that read the registry can install it without a manual command. The manifest is server.json.

Every provider key is optional. With no credentials at all the server still answers from the public models.dev and LiteLLM catalogs plus a curated offline list, so it is useful on a fresh machine.

Tools and protocol details: docs/mcp.md.

Supported providers

46 providers. Each has a descriptor in src/provider-catalog.ts; most OpenAI-compatible ones are driven from GENERIC_OPENAI_PROVIDERS in src/discovery/generic-openai.ts rather than a hand-written class.

ProviderDiscoveryCredential sources
AnthropicGET /v1/models (context, output cap, capabilities read from the API)ANTHROPIC_API_KEY, Claude CLI, Codex CLI
OpenAIGET /v1/modelsOPENAI_API_KEY
GoogleGET /v1beta/modelsGOOGLE_API_KEY, GEMINI_API_KEY, Gemini CLI, gcloud
AWS BedrockSDK → CLI → public catalog → static listAWS_ACCESS_KEY_ID, ~/.aws/credentials, SSO, IAM
Vertex AIAPI → gcloud → public catalog → static listGOOGLE_APPLICATION_CREDENTIALS, ADC
Ollama, llama.cpp, LM Studio, vLLMlocal HTTP APInone
OpenRouterAPIOPENROUTER_API_KEY (optional; unauthenticated is rate-limited)
Vercel AI GatewayGET /v1/modelsAI_GATEWAY_API_KEY, VERCEL_OIDC_TOKEN (discovery works without; execution needs one)
NVIDIA, Together, Fireworks, Groq, Cerebras, Cohere, DeepInfra, PerplexityOpenAI-compatible API _API_KEY
DeepSeek, Mistral, Moonshot (Kimi), GLM (Zhipu), Z.AI, MiniMaxOpenAI-compatible API _API_KEY
xAI (Grok)GET /v1/models; Grok Imagine split into image / videoXAI_API_KEY
TypeSafe (System One / Jev)GET /v1/models — returns judgment models, not chatTYPESAFE_API_KEY, JEV_API_KEY
Thinking Machines (Inkling)Anthropic-wire endpoint, no model list — public catalog onlyTINKER_API_KEY
Alibaba Model Studio (Qwen), Volcengine Ark (Doubao), Inception (Mercury), AI21 (Jamba), Upstage (Solar), StepFun, Meta (Muse Spark)OpenAI-compatible APIDASHSCOPE_API_KEY, ARK_API_KEY, INCEPTION_API_KEY, AI21_API_KEY, UPSTAGE_API_KEY, STEPFUN_API_KEY, META_MODEL_API_KEY
Baseten, Nebius Token Factory, Novita AI, SiliconFlow, Hugging Face, Ollama CloudOpenAI-compatible API _API_KEY, HF_TOKEN
Regional pairs

Several providers run separate hosts for international and mainland-China traffic, with separate keys and separate price sheets — Qwen 2.5 72B is $1.40/M input internationally against $0.574/M in China. Merging them would make a model's price depend on which host answered last, so each region is its own provider:

InternationalChinaDiffers in
moonshot (api.moonshot.ai)moonshot-cn (api.moonshot.cn)host, key
minimax (api.minimax.io)minimax-cn (api.minimaxi.com)host, key
alibaba (dashscope-intl)alibaba-cn (dashscope)host, key, pricing
siliconflow (.com)siliconflow-cn (.cn)host, key, pricing

| stepfun (api.stepfun.ai) | stepfun-cn (api.stepfun.com) | host, key, prici

앞부분만 보여 드려요. 나머지는 저장소에서 읽어 보세요

PopNx에게 묻기