오픈 소스 linter와 CLI를 사용하여 AI agent를 위한 MCP server 도구 설명의 품질을 점수화합니다.
다른 이름 forecall/forecall-cli, forecall
- 스타
- 0
- Tools
- —
- 다운로드, 30일
- —
- 최신 버전
- —
- 마지막 커밋
- 2026년 10월 18일
- 라이선스
- Apache-2.0
forecall-cli MCP란?
forecall-cli은(는) MCP server입니다. 오픈 소스 linter와 CLI를 사용하여 AI agent를 위한 MCP server 도구 설명의 품질을 점수화합니다.
프로젝트 README에서 생성된 요약
forecall-cli MCP server 정보
forecall-cli의 주요 기능은 AI agent가 MCP server 도구를 얼마나 잘 이해하는지 평가하는 것입니다. 이 오픈 소스 도구는 linter를 사용하여 목적, 사용 문맥, 인자 설명, 반환 값을 포함한 6가지 특정 기준에 따라 도구 설명을 점수화합니다. 이를 통해 개발자는 설명이 너무 짧거나, 제약 사항이 누락되었거나, 예시가 부족하여 agent 오류를 유발할 수 있는 문제들을 식별할 수 있습니다.
개발자는 npx를 통해 forecall 명령어를 사용하여 로컬에서 linter를 실행하고 tools.json 파일을 분석할 수 있습니다. CLI는 개별 도구 점수와 서버 전체의 문제에 대한 상세한 피드백을 제공합니다. 또한 GitHub Actions를 사용하여 CI/CD 파이프라인에 통합할 수 있으며, --fail-under 또는 --min-tool-score 플래그로 설정한 임계값보다 점수가 낮을 경우 빌드를 자동으로 실패하게 만들 수 있습니다. linting 과정 중 데이터가 로컬 머신을 벗어나지 않으므로 프로세스는 비공개로 유지되며, 로컬 사용 시 API key가 필요하지 않습니다.
활용 사례
- 1도구 설명 감사tools.json 파일을 확인하여 AI agent가 서버의 기능을 얼마나 잘 해석할 수 있는지 점검합니다.
- 2누락된 인자 상세 정보 식별AI를 위한 설명, 제약 사항 또는 예시가 부족한 특정 파라미터를 찾아냅니다.
프로젝트의 README를 바탕으로 작성되었습니다. 모든 활용 사례는 해당 내용의 인용문과 대조하여 확인합니다.
forecall-cli MCP 설치 방법
형식 확인: 2026년 11월 10일Cursor에 추가Goose에 추가Claude Code에 forecall-cli MCP 설치
$ claude mcp add forecall-cli -- npx -y forecallCursor에 forecall-cli MCP 설치
~/.cursor/mcp.json
{
"mcpServers": {
"forecall-cli": {
"command": "npx",
"args": [
"-y",
"forecall"
]
}
}
}VS Code에 forecall-cli MCP 설치
.vscode/mcp.json
{
"servers": {
"forecall-cli": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"forecall"
]
}
}
}VS Code CLI에 forecall-cli MCP 설치
$ code --add-mcp '{"name":"forecall-cli","type":"stdio","command":"npx","args":["-y","forecall"]}'Claude Desktop에 forecall-cli MCP 설치
claude_desktop_config.json
{
"mcpServers": {
"forecall-cli": {
"command": "npx",
"args": [
"-y",
"forecall"
]
}
}
}Codex에 forecall-cli MCP 설치
$ codex mcp add forecall-cli -- npx -y forecallCodex config.toml에 forecall-cli MCP 설치
~/.codex/config.toml
[mcp_servers.forecall-cli] command = "npx" args = ["-y", "forecall"]
Gemini CLI에 forecall-cli MCP 설치
$ gemini mcp add -s user forecall-cli npx -- -y forecallGemini settings.json에 forecall-cli MCP 설치
~/.gemini/settings.json
{
"mcpServers": {
"forecall-cli": {
"command": "npx",
"args": [
"-y",
"forecall"
]
}
}
}자동 검사
2026년 11월 15일에 실행됨전체 보고서 →자동 검사를 통과했습니다. 이는 보안 감사가 아닙니다. 코드를 직접 읽고 서버에 필요한 최소한의 권한만 부여하십시오. 검사 방식
- 소스 저장소 연결 및 접근 가능forecall/forecall-cli is public and reachablegithub.com/forecall/forecall-cli ↗통과
- 패키지가 이 저장소를 소스로 명시forecall names forecall/forecall-cli as sourcenpmjs.com/package/forecall ↗통과
- 빌드 출처(Sigstore 증명)Sigstore attestation for forecallnpmjs.com/package/forecall/v/0.8.1#provenance ↗통과
- 오픈 소스 라이선스 (OSI)Apache-2.0spdx.org/licenses/Apache-2.0.html ↗통과
- 최근 1년 내 커밋 또는 릴리스Last commit or release 2026-10-18github.com/forecall/forecall-cli ↗통과
- OpenSSF Scorecard검사되지 않음
- 패키지 이름이 인기 패키지와 유사하지 않음No popular package one edit away from forecall통과
- 패키지 및 해당 종속성에 중요한 보안 권고 없음검사되지 않음
- 모델에 대한 숨겨진 지침 없음0 tool descriptions and the README read; no override phrases, credential paths or hidden characters통과
- 파괴적인 도구에 라벨 표시됨검사되지 않음
- 원격 엔드포인트가 MCP 핸드셰이크에 응답검사되지 않음
README
GitHub에서 보기Forecall CLI
The open-source parts of Forecall: the linter that scores how well an MCP
server's tools are described for the AI agents that read them, and the forecall command that runs
it on your machine and connects your AI clients to the Forecall Failure KB.
npx forecall lint tools.json
Forecall lint · tools.json
Scoring rules v2
Average score 42.5 / 100
Tools 2
Near-identical descriptions 0
Across the server
No server-wide issues.
Tools
6 / 100 search
Purpose 6/20 · When to use 0/20 · Arguments 0/25 · Return value 0/15 · Constraints and side effects 0/10 · Examples 0/10
Major restates_name The description only restates the name (2 words).
Major too_short The description is too short (2 words).
Major no_usage_context Says nothing about when to use it, or when not to.
Major param_no_description Arguments without a description: q.
Minor loose_string_param String arguments with no constraint or example: q.
Minor no_required No `required` list, so every argument is optional.
Minor no_return_info Says nothing about what it returns.
Minor no_constraints No constraints, side effects, auth or rate limits described, and no annotations.
79 / 100 get_forecast
Purpose 17/20 · When to use 20/20 · Arguments 18/25 · Return value 7/15 · Constraints and side effects 7/10 · Examples 10/10
No issues.
{
"tools": [
{
"name": "search",
"description": "Search records.",
"inputSchema": { "type": "object", "properties": { "q": { "type": "string" } } }
},
{
"name": "get_forecast",
"description": "Returns the weather forecast for a city for the next 7 days, with the high and low temperature in Celsius for each day. Use it when the user asks about upcoming weather; for the current conditions, use get_current_weather instead. Example: city \"Tokyo\", days 3.",
"inputSchema": {
"type": "object",
"properties": {
"city": { "type": "string", "description": "The city's name, such as Tokyo." },
"days": { "type": "integer", "minimum": 1, "maximum": 7, "description": "How many days to return, 1 to 7." }
},
"required": ["city"]
},
"annotations": { "readOnlyHint": true }
}
]
}
Each tool is scored out of 100 on six parts, and the server as a whole is checked for too many
tools, near-identical descriptions and shared descriptions. Nothing leaves your machine. --json prints
the report as JSON. --fail-under <n> fails a CI job when the average is below n,
--min-tool-score <n> when any tool is, and --fail-on <severity> on any issue that severe. Get the
JSON from your own server with npx forecall dump, or paste it at
forecall.dev/en/lint for a page you can share.
| Package | npm | What it is |
|---|---|---|
packages/cli |
forecall |
The command: lint, dump, setup and hook |
packages/lint |
@forecall/lint |
The scoring, with no dependencies and no network |
How to use them: forecall.dev/en/docs/cli and each package's README. The Forecall service itself (the website, the dashboard, the API and the Failure KB's server) is not in this repository.
GitHub Action
Score your tools on every pull request, with the score and the findings in the job summary:
- uses: forecall/forecall-cli@v1
with:
file: tools.json # or url: https://… (a public Streamable HTTP server)
# or command: node build/index.js (your server over stdio)
min-tool-score: 40 # optional gates, as in the CLI
fail-on: critical
| Input | What it does |
|---|---|
file |
A tools/list JSON file, as forecall lint reads it |
url |
A public Streamable HTTP server to ask for its tools/list (forecall dump <url>) |
command |
A command that starts your server over stdio (forecall dump -- sh -c <command>) |
fail-under, min-tool-score, fail-on |
The CLI's gates: fail the step below an average, below a tool's score, or on a finding that severe |
lang |
en or ja for the report in the log (the job summary is in English) |
version |
The forecall version from npm (pinned by each release of the action) |
Give exactly one of file, url and command. The outputs are score (the average), tools
and report (the JSON report's path). It needs Node 22 or later on the runner, sends nothing to
Forecall and needs no key.
Development
The versions of Node.js and pnpm are in mise.toml.
mise install
pnpm install
pnpm check # Biome, the type checks and the tests of both packages and the action
pnpm formatformats and fixes what Biome can.pnpm --filter forecall buildwrites the command topackages/cli/dist/forecall.js; run it withnode packages/cli/dist/forecall.js lint <file>.node packages/lint/pack.ts <dir>andnode packages/cli/pack.ts <dir>make the tarballs npm would get, andscripts/try-package.sh <lint|cli> <tarball>installs one and runs it.LINT_VERSIONinpackages/lint/lint.tsis the version of the scoring rules. Any change that can give some input a different score, component, issue code or severity raises it, and updates the expected results inpackages/lint/fixtures/cases.json.
Releases
A pull request that raises a package's version starts the Release workflow when it lands on
main. The workflow stages every version npm does not have yet (@forecall/lint first) with
provenance, and each goes live only when a maintainer approves it on npm with 2FA. Maintainers can
also run the workflow by hand on main and pick one package.
The action is released apart from the packages: a maintainer publishes a GitHub Release v1.x.y
to the Marketplace and moves the v1 tag to it. A release that raises the action's pinned
forecall version says so, since a new rules version can move scores past a gate.
Contributing and security
See CONTRIBUTING.md. Report vulnerabilities privately, as SECURITY.md says, not in a public issue.
License
Apache-2.0. Copyright 2026 Mirai Studio, Inc. See LICENSE.
forecall-cli MCP 질문
forecall-cli MCP를 Claude Code에 추가하려면 어떻게 하나요?
터미널에서 claude mcp add forecall-cli -- npx -y forecall를 실행합니다. 모든 프로젝트에서 사용할 수 있게 하려면 --scope user를 추가합니다.
forecall-cli MCP를 Cursor에 추가하려면 어떻게 하나요?
~/.cursor/mcp.json를 열고 mcpServers 아래에 서버를 추가합니다. 위 설치 섹션에 표시된 Cursor 구성을 사용합니다.
MCP server 도구의 점수를 어떻게 확인할 수 있나요?
npx forecall lint tools.json 명령어를 사용하여 도구 정의 파일에 linter를 실행할 수 있습니다.
데이터가 외부 서버로 전송되나요?
아니요, linter는 데이터가 로컬 머신 외부로 유출되지 않도록 설계되었습니다.
CI/CD 파이프라인에서 사용할 수 있나요?
네, Forecall GitHub Action을 사용하여 모든 pull request에서 도구 점수를 확인하고 품질 게이트를 설정할 수 있습니다.
도구 점수 산정에는 어떤 지표가 사용되나요?
각 도구는 목적, 사용 문맥, 인자(arguments), 반환 값, 제약 사항/부수 효과, 예시를 기준으로 100점 만점으로 점수가 매겨집니다.