Scorecard MCP
What it does
MCP server providing access to the Scorecard API to evaluate and optimize LLM systems.
- Connects 컴퓨터 또는 클라우드
- Account or key Cloud: Sign in to the service when you connect (OAuth) · Local: Needs SCORECARD_API_KEY
- Category 검색 및 AI 기억
설치
쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.
검사 5/5 통과 · 내가 묻는 내용은 제작자 서버(mcp.scorecard.io)를 거쳐요
먼저: 어떤 AI를 쓰시나요?
쓰는 앱을 고르면 아래에 단계가 나옵니다.
Claude에 연결할 수 있어요 · 약 2분
키 필요 없음, 설치 필요 없음 · claude.ai나 데스크톱 앱에서 한 번 설정하면 채팅에서 쓸 수 있어요 · 무료 계정은 1개까지 · Team/Enterprise는 소유자(Owner)가 추가
Claude의 Connectors 페이지 열기
CustomizeConnectors
“+ Add” → “Add custom connector”를 누르고 이 2칸 채우기
여기서 복사해 Claude의 같은 이름 칸에 붙여 넣고 Continue를 누르세요
Name · 이름Scorecard MCPRemote MCP server URL · 주소https://mcp.scorecard.io/mcpAuthentication은 Claude가 찾은 그대로 두고 Add를 누르세요
채팅에서 켜기
+ConnectorsScorecard MCP
해 보기
Scorecard MCP을 써서 나에게 무엇을 해 줄 수 있는지 알려 주고, 하나 해 봐✓ Claude가 Scorecard MCP을 쓰고 있다고 하거나 답에 Scorecard MCP 도구 이름이 나오면 연결된 거예요
메뉴 이름은 2026년 11월 11일에 Anthropic 도움말에서 확인 · 앱 버전에 따라 화면이 조금 다를 수 있어요
ChatGPT는 기업용 요금제에서만 연결돼요
웹의 ChatGPT Business, Enterprise, Edu에서 워크스페이스 관리자나 소유자가 추가해요 · Free, Plus, Pro를 쓰면: 내 ChatGPT 요금제로는 아직 MCP를 직접 연결할 수 없어요
웹 ChatGPT에서 MCP 추가 페이지 열기
Plugins+Add custom MCP server
이름과 주소 입력
이름을 넣고 Connection에 주소를 붙여 넣은 뒤 경고에 체크하고 Create as a plugin을 누르세요
Name · 이름Scorecard MCPConnection · 주소https://mcp.scorecard.io/mcp채팅에서 Scorecard MCP 고르기
새 채팅을 열고 입력 전에 플러그인 목록에서 Scorecard MCP을 고르세요
해 보기
Scorecard MCP을 써서 나에게 무엇을 해 줄 수 있는지 알려 주고, 하나 해 봐✓ ChatGPT가 Scorecard MCP을 쓰고 있다고 하거나 답에 Scorecard MCP 도구 이름이 나오면 연결된 거예요
메뉴 이름은 2026년 11월 11일에 OpenAI 도움말에서 확인 · 앱 버전에 따라 화면이 조금 다를 수 있어요
Claude Code에 연결할 수 있어요 · 약 2분
키 필요 없음, 설치 필요 없음
터미널 열기
Mac: Command+스페이스를 누르고 Terminal 입력 · Windows: PowerShell 열기
이 명령을 붙여 넣고 Enter
claude mcp add --transport http --scope user scorecard https://mcp.scorecard.io/mcpClaude Code에서 /mcp 입력
Scorecard MCP이 목록에 있고 연결됨으로 보이면 돼요
해 보기
Scorecard MCP을 써서 나에게 무엇을 해 줄 수 있는지 알려 주고, 하나 해 봐✓ Claude Code가 Scorecard MCP을 쓰고 있다고 하거나 답에 Scorecard MCP 도구 이름이 나오면 연결된 거예요
메뉴 이름은 2026년 11월 11일에 Anthropic 도움말에서 확인 · 앱 버전에 따라 화면이 조금 다를 수 있어요
Cursor에 연결할 수 있어요 · 약 2분
키 필요 없음, 설치 필요 없음
Cursor에서 AI 채팅을 Agent 모드로 열기
해 보기
Scorecard MCP을 써서 나에게 무엇을 해 줄 수 있는지 알려 주고, 하나 해 봐✓ Cursor가 Scorecard MCP을 쓰고 있다고 하거나 답에 Scorecard MCP 도구 이름이 나오면 연결된 거예요
메뉴 이름은 2026년 11월 11일에 Cursor 도움말에서 확인 · 앱 버전에 따라 화면이 조금 다를 수 있어요
VS Code에 연결할 수 있어요 · 약 2분
키 필요 없음, 설치 필요 없음
VS Code에서 AI 채팅을 Agent 모드로 열기
해 보기
Scorecard MCP을 써서 나에게 무엇을 해 줄 수 있는지 알려 주고, 하나 해 봐✓ VS Code가 Scorecard MCP을 쓰고 있다고 하거나 답에 Scorecard MCP 도구 이름이 나오면 연결된 거예요
메뉴 이름은 2026년 11월 11일에 VS Code 도움말에서 확인 · 앱 버전에 따라 화면이 조금 다를 수 있어요
Windsurf, Zed, Gemini CLI 같은 다른 MCP 앱은 추가 방법이 저마다 달라요. 앱 목록에서 확인하세요
웹으로 연결하는 앱용 주소
https://mcp.scorecard.io/mcpJSON 설정은 아래 “개발자용”에 있어요
개발자용: 터미널 명령과 JSON 설정
웹으로 연결
Claude Code
claude mcp add --transport http --scope user scorecard https://mcp.scorecard.io/mcpCursor (~/.cursor/mcp.json)
{
"mcpServers": {
"scorecard": {
"url": "https://mcp.scorecard.io/mcp"
}
}
}VS Code (mcp.json)
{
"servers": {
"scorecard": {
"type": "http",
"url": "https://mcp.scorecard.io/mcp"
}
}
}컴퓨터에 설치
Claude Code
claude mcp add --scope user scorecard --env SCORECARD_API_KEY=your-value -- npx -y scorecard-ai-mcpClaude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"scorecard": {
"command": "npx",
"args": [
"-y",
"scorecard-ai-mcp"
],
"env": {
"SCORECARD_API_KEY": "your-value"
}
}
}
}Cursor (~/.cursor/mcp.json)
{
"mcpServers": {
"scorecard": {
"command": "npx",
"args": [
"-y",
"scorecard-ai-mcp"
],
"env": {
"SCORECARD_API_KEY": "your-value"
}
}
}
}VS Code (mcp.json)
{
"servers": {
"scorecard": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"scorecard-ai-mcp"
],
"env": {
"SCORECARD_API_KEY": "your-value"
}
}
}
}직접 입력할 값
SCORECARD_API_KEY비밀 필수 envScorecard API key for authentication. Get your API key from https://app.scorecard.io/settings
이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.
한눈에 보기
어떤 앱에서 쓸 수 있나요
이 서버의 연결 방식과 각 앱의 공식 문서를 바탕으로 했어요. 2026년 11월 10일 확인.
인터넷으로 연결하는 앱
ClaudeChatGPTGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatOpen WebUIRaycast
내 컴퓨터에서 실행하는 앱
ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast
할 수 있는 일
서버가 도구 목록을 보여 주기 전에 로그인을 요구해요.
기본 점검i
누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 13일 점검
- ✓ 통과
제작자와 저장소 일치
레지스트리 이름이 도메인 scorecard.io 기준으로 확인되었어요(레지스트리가 도메인 소유를 확인해요)
- ✓ 통과
계속 관리되고 있음
코드 마지막 변경: 그저께
- ✓ 통과
라이선스 있음
Apache-2.0 사용
- ✓ 통과
엔드포인트 응답
205ms 만에 응답(HTTP 401)
- ✓ 통과
OAuth로 로그인
OAuth 로그인을 지원한다고 밝혀서, AI 앱이 로그인 화면으로 안내해 줘요
- … 아직 점검 안 함
도구 설명에 숨겨진 지시 없음
아직 점검하지 않았어요. 엔드포인트를 점검할 때 도구 목록을 읽어요
토론
질문하고, 팁을 나누고, 안 되는 점을 알려 주세요. "도움이 됨"이 많은 순서예요.
사용자 리뷰
아직 리뷰가 없어요
검색 및 AI 기억 카테고리의 다른 서버와 비교i
- 이 카테고리의 다른 서버 6016개 중 0%보다 스타가 많아요
- 이 카테고리의 다른 서버 6016개 중 0%보다 최근에 레지스트리에 공개됐어요
- 기본 점검 결과가 이 카테고리의 다른 서버 6016개 중 100%와 같거나 더 좋아요
레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.
자주 묻는 질문
Scorecard MCP, 안전한가요?
해당하는 기본 점검 5개 중 5개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.
어떤 키나 코드가 필요한가요?
입력해야 할 값: SCORECARD_API_KEY
내 컴퓨터에서 실행되나요, 클라우드에서 실행되나요?
둘 다 가능해요. 내 컴퓨터에 설치해도 되고, 클라우드 버전에 연결해도 돼요.
아직 관리되고 있나요?
GitHub 저장소는 마지막으로 그저께 변경됐고, 최신 버전(2.1.1)은 14개월 전 레지스트리에 올라왔어요.
어떤 앱에서 쓸 수 있나요?
Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. URL로 연결되므로 원격 MCP를 지원하는 앱에서도 쓸 수 있어요. 예: ChatGPT Business 이상.
대신 쓸 수 있는 건 뭐가 있나요?
같은 카테고리에는: Context7, Codebase Memory, Ruflo
같은 카테고리의 다른 것
같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.
카드 보는 법:↓ 주간 다운로드i★ GitHub 스타i세 기둥: 리뷰 · 점검 · 사용 정도i업데이트 = 최신 버전을 레지스트리에 공개한 날i
Codebase Memory
Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.
제작자의 README
README 열기
제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.
Scorecard TypeScript API Library
[)](https://npmjs.org/package/scorecard-ai)
This library provides convenient access to the Scorecard REST API from server-side TypeScript or JavaScript.
The REST API documentation can be found on docs.scorecard.io. The full API of this library can be found in api.md.
It is generated with Stainless.
MCP Server
Use the Scorecard MCP Server to enable AI assistants to interact with this API, allowing them to explore endpoints, make test requests, and use documentation to help integrate this SDK into your application.
Note: You may need to set environment variables in your MCP client.
Installation
npm install scorecard-ai
Usage
The full API of this library can be found in api.md.
import Scorecard from 'scorecard-ai';
const client = new Scorecard({ apiKey: process.env['SCORECARD_API_KEY'], // This is the default and can be omitted environment: 'staging', // or 'production' | 'local'; defaults to 'production' });
const run = await client.runs.create('314', { metricIds: ['789', '101'], testsetId: '246' });
console.log(run.id);
Request & Response types
This library includes TypeScript definitions for all request params and response fields. You may import and use them like so:
import Scorecard from 'scorecard-ai';
const client = new Scorecard({ apiKey: process.env['SCORECARD_API_KEY'], // This is the default and can be omitted environment: 'staging', // or 'production' | 'local'; defaults to 'production' });
const testset: Scorecard.Testset = await client.testsets.get('246');
Documentation for each method, request param, and response field are available in docstrings and will appear on hover in most modern editors.
Handling errors
When the library is unable to connect to the API, or if the API returns a non-success status code (i.e., 4xx or 5xx response), a subclass of APIError will be thrown:
const testset = await client.testsets.get('246').catch(async (err) => {
if (err instanceof Scorecard.APIError) { console.log(err.status); // 400 console.log(err.name); // BadRequestError console.log(err.headers); // {server: 'nginx', ...} } else { throw err; } });
Error codes are as follows:
| Status Code | Error Type |
|---|---|
| 400 | BadRequestError |
| 401 | AuthenticationError |
| 403 | PermissionDeniedError |
| 404 | NotFoundError |
| 422 | UnprocessableEntityError |
| 429 | RateLimitError |
| >=500 | InternalServerError |
| N/A | APIConnectionError |
Retries
Certain errors will be automatically retried 2 times by default, with a short exponential backoff. Connection errors (for example, due to a network connectivity problem), 408 Request Timeout, 409 Conflict, 429 Rate Limit, and >=500 Internal errors will all be retried by default.
You can use the maxRetries option to configure or disable this:
// Configure the default for all requests:
const client = new Scorecard({ maxRetries: 0, // default is 2 });
// Or, configure per-request: await client.testsets.get('246', { maxRetries: 5, });
Timeouts
Requests time out after 1 minute by default. You can configure this with a timeout option:
// Configure the default for all requests:
const client = new Scorecard({ timeout: 20 * 1000, // 20 seconds (default is 1 minute) });
// Override per-request: await client.testsets.get('246', { timeout: 5 * 1000, });
On timeout, an APIConnectionTimeoutError is thrown.
Note that requests which time out will be retried twice by default.
Auto-pagination
List methods in the Scorecard API are paginated. You can use the for await … of syntax to iterate through items across all pages:
async function fetchAllTestcases(params) {
const allTestcases = []; // Automatically fetches more pages as needed. for await (const testcase of client.testcases.list('246', { limit: 30 })) { allTestcases.push(testcase); } return allTestcases; }
Alternatively, you can request a single page at a time:
let page = await client.testcases.list('246', { limit: 30 });
for (const testcase of page.data) { console.log(testcase); }
// Convenience methods are provided for manually paginating: while (page.hasNextPage()) { page = await page.getNextPage(); // ... }
Advanced Usage
Accessing raw Response data (e.g., headers)
The "raw" Response returned by fetch() can be accessed through the .asResponse() method on the APIPromise type that all methods return. This method returns as soon as the headers for a successful response are received and does not consume the response body, so you are free to write custom parsing or streaming logic.
You can also use the .withResponse() method to get the raw Response along with the parsed data. Unlike .asResponse() this method consumes the body, returning once it is parsed.
const client = new Scorecard();
const response = await client.testsets.get('246').asResponse(); console.log(response.headers.get('X-My-Header')); console.log(response.statusText); // access the underlying Response object
const { data: testset, response: raw } = await client.testsets.get('246').withResponse(); console.log(raw.headers.get('X-My-Header')); console.log(testset.id);
Logging
[!IMPORTANT]
All log messages are intended for debugging only. The format and content of log messages
may change between releases.
Log levels
The log level can be configured in two ways:
- Via the
SCORECARD_LOGenvironment variable - Using the
logLevelclient option (overrides the environment variable if set)
import Scorecard from 'scorecard-ai';
const client = new Scorecard({ logLevel: 'debug', // Show all log messages });
Available log levels, from most to least verbose:
'debug'- Show debug messages, info, warnings, and errors'info'- Show info messages, warnings, and errors'warn'- Show warnings and errors (default)'error'- Show only errors'off'- Disable all logging
At the 'debug' level, all HTTP requests and responses are logged, including headers and bodies. Some authentication-related headers are redacted, but sensitive data in request and response bodies may still be visible.
Custom logger
By default, this library logs to globalThis.console. You can also provide a custom logger. Most logging libraries are supported, including pino, winston, bunyan, consola, signale, and @std/log. If your logger doesn't work, please open an issue.
When providing a custom logger, the logLevel option still controls which messages are emitted, messages below the configured level will not be sent to your logger.
import Scorecard from 'scorecard-ai';
import pino from 'pino';
const logger = pino();
const client = new Scorecard({ logger: logger.child({ name: 'Scorecard' }), logLevel: 'debug', // Send all messages to pino, allowing it to filter });
Making custom/undocumented requests
This library is typed for convenient access to the documented API. If you need to access undocumented endpoints, params, or response properties, the library can still be used.
Undocumented endpoints
To make requests to undocumented endpoints, you can use client.get, client.post, and other HTTP verbs. Options on the client, such as retries, will be respected when making these requests.
await client.post('/some/path', {
body: { some_prop: 'foo' }, query: { some_query_arg: 'bar' }, });
Undocumented request params
To make requests using undocumented parameters, you may use // @ts-expect-error on the undocumented parameter. This library doesn't validate at runtime that the request matches the type, so any extra values you send will be sent as-is.
client.runs.create({
// ... // @ts-expect-error baz is not yet public baz: 'undocumented option', });
For requests with the GET verb, any extra params will be in the query, all other requests will send the extra param in the body.
If you want to explicitly send an extra argument, you can do so with the query, body, and headers request options.
Undocumented response properties
To access undocumented response properties, you may access the response object with // @ts-expect-error on the response object, or cast the response object to the requisite type. Like the request params, we do not validate or strip extra properties from the response from the API.
Customizing the fetch client
By default, this library expects a global fetch function is defined.
If you want to use a different fetch function, you can either polyfill the global:
import fetch from 'my-fetch';
globalThis.fetch = fetch;
Or pass it to the client:
import Scorecard from 'scorecard-ai';
import fetch from 'my-fetch';
const client = new Scorecard({ fetch });
Fetch options
If you want to set custom fetch options without overriding the fetch function, you can provide a fetchOptions object when instantiating the client or making a request. (Request-specific options override client options.)
import Scorecard from 'scorecard-ai';
const client = new Scorecard({ fetchOptions: { // RequestInit options }, });
Configuring proxies
To modify proxy behavior, you can provide custom fetchOptions that add runtime-specific proxy options to requests:
Node [docs]
im