나라장터 낙찰정보 について
data.go.kr の나라장터落札情報 APIをラップするローカル MCP サーバーです。公共調達の結果を調べる利用者向けに、条件検索と、落札者・開札・入札順位・予定価格情報を公告単位でまとめる詳細照会を提供します。
主な機能
- 01落札結果と開札記録の検索
- 024つの調達区分を並行照会
- 03広い日付範囲を分割して照会
- 04公告単位で複数の結果種別を統合
- 05一部の照会失敗時も取得結果を返却
活用シーン
- 01地域と期間で最近の物品落札を検索
- 02公告の落札者と入札順位を確認
- 03不調・再入札の記録を抽出
- 04企業の落札履歴を調査
MCP 対応
ローカル MCP サーバーとして、落札・開札の検索と個別公告の詳細照会を行う3つの読み取り専用ツールをクライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y @opendata-kr/narajangteo-opening-mcpDATA_GO_KR_SERVICE_KEYシークレット공공데이터포털 data.go.kr Decoding(원본) 인증키DATA_GO_KR_BASE_URL서비스 경로를 포함한 전체 base URL 오버라이드ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
3掲載時のツール一覧 · 3 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| bizno | string | いいえ | 業者の事業者番号。その業者が落札した案件のみを検索します(参加したものの落札しなかった案件は含みません) |
| region | string | いいえ | 参加制限地域名(prtcptLmtRgnNm) |
| bidKind | array | いいえ | 業務区分の配列(cnstwk=工事・servc=役務・thng=物品・frgcpt=外資)。未指定の場合、全区分を並行検索し、API リクエストが 4 倍になります。業務区分が分かっている場合は指定し、認証キーの日次トラフィックを節約してください |
| endDate | string | いいえ | 検索終了日 YYYYMMDD |
| keyword | string | いいえ | 公告名による部分一致検索(bidNtceNm) |
| dateType | enum | いいえ | 日付の基準。posted=公告掲載(デフォルト)、opened=開札posted | opened |
| industry | string | いいえ | 業種名(indstrytyNm) |
| maxPages | integer | いいえ | ウィンドウあたりの最大ページ数(デフォルトは 10) |
| maxPrice | number | いいえ | 추정가격 상한(presmptPrceEnd) |
| minPrice | number | いいえ | 추정가격 하한(presmptPrceBgn) |
| pageSize | integer | いいえ | ウィンドウごとのページサイズ(デフォルト 100) |
| startDate | string | いいえ | 検索開始日 YYYYMMDD |
| institution | string | いいえ | 公告機関名 |
| demandInstitution | string | いいえ | 需要機関名(dminsttNm) |
| detailProductCode | string | いいえ | 세부품명번호(dtilPrdctClsfcNo) |
| demandInstitutionCode | string | いいえ | 需要機関コード。終端識別に安定して使用できます |
詳細
@opendata-kr/narajangteo-opening-mcp
나라장터 낙찰정보서비스(공공데이터포털 data.go.kr) Open API를 감싼 로컬 MCP 서버.
MCP 클라이언트에서 나라장터 낙찰정보(개찰결과·최종낙찰자·투찰업체별 순위·예비가격·유찰/재입찰)를 자연어로 검색하고 조회한다. 예를 들어 이렇게 물어볼 수 있다.
- "R25BK00965123 공고 개찰결과 보여줘. 낙찰자랑 투찰업체별 순위·금액."
- "인천 지역 물품 낙찰 결과 최근 것 검색해줘."
- "이 공고 유찰됐는지 확인해줘."
특징
- 4계열 데이터를 3개 도구로 노출: 낙찰자(A)·개찰진행(B)·예비가격상세(C)·투찰업체별(D) 오퍼레이션을 검색용 2개(
search_awards·search_openings)와 단건 심층조회 1개(get_bid_result)로 묶어 사용성을 단순화했다. - 4개 업무구분 병렬 검색: 공사/용역/물품/외자를 한 번에 조회한다. 업무구분 미지정 시 전 구분을 동시 검색한다.
- 넓은 기간 자동 분할:
startDate/endDate범위가 넓으면 내부에서 창 단위로 쪼개 순차 조회한다. - 부분 실패 표면화: 일부 구분·집행 조회가 실패해도 나머지 결과를 반환하고, 실패는 오류 메시지로 드러낸다(조용한 누락 없음).
- 복합키 정합:
get_bid_result는 공고번호+차수+분류+재입찰번호로 A/B/C/D를 조인해 집행 단위로 묶는다. - data.go.kr 에러코드 한국어화: 인증키 만료, 트래픽 초과 등 결과코드를 조치 가능한 한국어 메시지로 정규화한다.
- 이중 인코딩 방어: Encoding 키를 잘못 넣으면 경고하고, 요청은 한 번만 인코딩한다.
- 타임아웃: API 호출에 타임아웃을 둔다.
준비물
- Node.js 24 이상 (
.nvmrc=lts/krypton). - data.go.kr 인증키:
- 공공데이터포털에서 나라장터 낙찰정보서비스(
ScsbidInfoService)를 활용신청해[승인]을 받는다. 인증키는 계정당 하나지만, 각 API는 저마다 활용신청 승인이 있어야 그 API에서 인증된다. 서비스키가 있어도 이 API를 활용신청하지 않으면 인증 오류(코드 30)가 난다. - 마이페이지 → 활용신청 현황 → 개발계정 상세에서 Decoding 서비스키를 복사한다.
- 같은
DATA_GO_KR_SERVICE_KEY는 같은 계정으로 활용신청한 다른 data.go.kr API에도 재사용된다.
- 공공데이터포털에서 나라장터 낙찰정보서비스(
ヒント
공공데이터포털이 처음이라면 활용신청부터 인증키 복사까지 그림으로 따라 하는 data.go.kr 인증키 발급 가이드를 참고한다.
서비스키는 반드시 Decoding(원본) 키를 넣는다. Encoding(
%2B등 포함) 키를 넣으면 이중 인코딩으로 인증 오류(코드 30)가 난다.
MCP 클라이언트 설정
MCP 클라이언트에 아래 config를 추가한다:
{
"mcpServers": {
"narajangteo-opening": {
"command": "npx",
"args": ["-y", "@opendata-kr/narajangteo-opening-mcp@latest"],
"env": { "DATA_GO_KR_SERVICE_KEY": "발급받은_Decoding_키" }
}
}
}
メモ
@opendata-kr/narajangteo-opening-mcp@latest를 쓰면 클라이언트가 항상 최신 버전을 받는다.
重要
DATA_GO_KR_SERVICE_KEY(필수, Decoding 원본 키)가 없으면 첫 호출이 인증 오류(코드 30)로 실패한다. 위 config의env에 키를 넣는다. 원클릭 버튼이나 env를 config에 담지 못하는 클라이언트는 설치 후 셸 환경변수로DATA_GO_KR_SERVICE_KEY를 설정한다.
클라이언트별 설정
Amp
https://ampcode.com/manual#mcp 의 안내를 따르고 위 config를 사용한다. CLI로도 추가할 수 있다:amp mcp add narajangteo-opening -- npx -y @opendata-kr/narajangteo-opening-mcp@latest
이후 생성된 설정의 env(또는 셸 환경변수)에 DATA_GO_KR_SERVICE_KEY를 추가한다.
Antigravity
Antigravity 문서의 커스텀 MCP 서버 추가 방법을 따라 아래 config를 MCP servers 설정에 넣는다:
{
"mcpServers": {
"narajangteo-opening": {
"command": "npx",
"args": ["-y", "@opendata-kr/narajangteo-opening-mcp@latest"],
"env": { "DATA_GO_KR_SERVICE_KEY": "발급받은_Decoding_키" }
}
}
}
Claude Code
Claude Code CLI로 서버를 추가한다 (가이드):
claude mcp add narajangteo-opening --scope user --env DATA_GO_KR_SERVICE_KEY=발급받은_Decoding_키 -- npx -y @opendata-kr/narajangteo-opening-mcp@latest
Cline
https://docs.cline.bot/mcp/configuring-mcp-servers 의 안내를 따르고 위 config를 사용한다.Codex
MCP 설정 가이드를 따르고 위 config를 사용한다. Codex CLI로도 추가할 수 있다:codex mcp add narajangteo-opening --env DATA_GO_KR_SERVICE_KEY=발급받은_Decoding_키 -- npx -y @opendata-kr/narajangteo-opening-mcp@latest
Windows
~/.codex/config.toml에 cmd /c 래핑으로 추가한다:
[mcp_servers.narajangteo-opening]
command = "cmd"
args = ["/c", "npx", "-y", "@opendata-kr/narajangteo-opening-mcp@latest"]
env = { DATA_GO_KR_SERVICE_KEY = "발급받은_Decoding_키" }
Command Code
Command Code CLI로 서버를 추가한다 (MCP 가이드):
cmd mcp add narajangteo-opening --scope user npx -y @opendata-kr/narajangteo-opening-mcp@latest
이후 생성된 설정의 env(또는 셸 환경변수)에 DATA_GO_KR_SERVICE_KEY를 추가한다.
Continue
Continue의 MCP 가이드를 따른다. Continue는 mcpServers를 배열로 쓴다:
{
"mcpServers": [
{
"name": "narajangteo-opening",
"command": "npx",
"args": ["-y", "@opendata-kr/narajangteo-opening-mcp@latest"],
"env": { "DATA_GO_KR_SERVICE_KEY": "발급받은_Decoding_키" }
}
]
}
Copilot CLI
Copilot CLI를 시작한다:
copilot
MCP 서버 추가 대화를 연다:
/mcp add
다음 필드를 입력하고 CTRL+S로 저장한다:
- サーバー名:
narajangteo-opening - サーバータイプ:
[1] Local - コマンド:
npx -y @opendata-kr/narajangteo-opening-mcp@latest - 環境変数:
DATA_GO_KR_SERVICE_KEY=발급받은_Decoding_키
Copilot / VS Code
ボタンでインストール:
ボタンではキーを渡せません。インストール後、
.vscode/mcp.json(またはユーザー設定)のenvにDATA_GO_KR_SERVICE_KEYを追加します。
手動で追加:
VS Code のMCP 設定ガイドに従うか、CLIを使用します。
macOS・Linux:
code --add-mcp '{"name":"narajangteo-opening","command":"npx","args":["-y","@opendata-kr/narajangteo-opening-mcp@latest"],"env":{"DATA_GO_KR_SERVICE_KEY":"발급받은_Decoding_키"}}'
Windows(PowerShell):
code --add-mcp '{"""name""":"""narajangteo-opening""","""command""":"""npx""","""args""":["""-y""","""@opendata-kr/narajangteo-opening-mcp@latest"""],"""env""":{"""DATA_GO_KR_SERVICE_KEY""":"""발급받은_Decoding_키"""}}'
Cursor
ボタンでインストール:
ボタンではキーを渡せません。インストール後、CursorのMCP設定で
envにDATA_GO_KR_SERVICE_KEYを追加します。
手動で追加:
Cursor Settings → MCP → New MCP Serverで上記のconfigを使用します。
Factory CLI
Factory CLIでサーバーを追加します(ガイド):
droid mcp add narajangteo-opening "npx -y @opendata-kr/narajangteo-opening-mcp@latest"
その後、生成された設定のenv(またはシェル環境変数)にDATA_GO_KR_SERVICE_KEYを追加します。
Gemini CLI
Gemini CLIでサーバーを追加します。
プロジェクトスコープ:
gemini mcp add narajangteo-opening npx -y @opendata-kr/narajangteo-opening-mcp@latest
グローバル:
gemini mcp add -s user narajangteo-opening npx -y @opendata-kr/narajangteo-opening-mcp@latest
またはMCPガイドに従い、上記のconfigを使用します。~/.gemini/settings.jsonのサーバー定義のenvにDATA_GO_KR_SERVICE_KEYを追加します。
Gemini Code Assist
MCP 設定ガイドに従い、上記のconfigを使用します。Grok Build CLI
grok mcp add narajangteo-opening npx -y @opendata-kr/narajangteo-opening-mcp@latest
その後、生成された設定のenv(またはシェル環境変数)にDATA_GO_KR_SERVICE_KEYを追加します。その他のオプションについてはドキュメントを参照してください。
JetBrains AI Assistant & Junie
Settings | Tools | AI Assistant | Model Context Protocol (MCP) → Addで上記のconfigを使用します。
Junieも同じ方法で、Settings | Tools | Junie | MCP Settings → Addから上記のconfigを使用します。
Katalon Studio
Katalon StudioAssistは、MCPプロキシ経由でstdioサーバーに接続します。
ステップ1: MCP プロキシ設定ガイドに従ってプロキシをインストールします。
ステップ2: プロキシを使ってサーバーを起動します(同じシェルでDATA_GO_KR_SERVICE_KEYをexportした状態):
DATA_GO_KR_SERVICE_KEY=발급받은_Decoding_키 mcp-proxy --transport streamablehttp --port 8080 -- npx -y @opendata-kr/narajangteo-opening-mcp@latest
ステップ3: 次の設定でStudioAssistにサーバーを追加します:
- 接続 URL:
http://127.0.0.1:8080/mcp - トランスポートタイプ:
HTTP
Kiro
Kiro SettingsでConfigure MCP → Open Workspace or User MCP Configを選択し、上記のconfigを使用します。
または、Activity Bar → Kiro → MCP Servers → Open MCP Configから上記のconfigを使用します。
Mistral Vibe
`~/.vibe/config.toml`に追加します:[[mcp_servers]]
name = "narajangteo-opening"
transport = "stdio"
command = "npx"
args = ["-y", "@opendata-kr/narajangteo-opening-mcp@latest"]
env = { DATA_GO_KR_SERVICE_KEY = "발급받은_Decoding_키" }
OpenCode
opencode.jsonに追加します。ファイルがない場合は~/.config/opencode/opencode.jsonに作成します(ガイド):
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"narajangteo-opening": {
"type": "local",
"command": ["npx", "-y", "@opendata-kr/narajangteo-opening-mcp@latest"],
"environment": { "DATA_GO_KR_SERVICE_KEY": "발급받은_Decoding_키" }
}
}
}
Qoder CLI
Qoder CLIでサーバーを追加します(ガイド):
プロジェクトの範囲:
qodercli mcp add narajangteo-opening -- npx @opendata-kr/narajangteo-opening-mcp@latest
グローバル:
qodercli mcp add -s user narajangteo-opening -- npx @opendata-kr/narajangteo-opening-mcp@latest
その後、生成された設定のenv(またはシェル環境変数)にDATA_GO_KR_SERVICE_KEYを追加します。
Warp
Settings | AI | Manage MCP Servers → + AddからMCP サーバーを追加し、上記の設定を使用します。
Windsurf
MCP 設定ガイドに従い、上記の設定を使用します。Windsurfでは`mcpServers`キーを使用します(`~/.codeium/windsurf/mcp_config.json`)。Zed
~/.config/zed/settings.jsonに追加します(スキーマはZedのバージョンによって異なる場合があるため、Zed公式ドキュメントを確認してください):
{
"context_servers": {
"narajangteo-opening": {
"command": { "path": "npx", "args": ["-y", "@opendata-kr/narajangteo-opening-mcp@latest"] },
"env": { "DATA_GO_KR_SERVICE_KEY": "발급받은_Decoding_키" }
}
}
}
ChatGPT · リモート専用クライアント
ChatGPT Developer Modeのようにリモート(HTTPS)MCPのみをサポートするクライアントは、ローカルのstdioサーバーに直接接続できません。stdio→HTTPブリッジ(mcp-proxy)でこのサーバーをHTTPとして起動し、公開HTTPSエンドポイント(リバースプロキシ・トンネル・ホスティング)経由で公開した後、そのURLをコネクターとして登録します。
DATA_GO_KR_SERVICE_KEY=발급받은_Decoding_키 mcp-proxy --transport streamablehttp --port 8080 -- npx -y @opendata-kr/narajangteo-opening-mcp@latest
http://127.0.0.1:8080/mcpを公開HTTPSとして公開するのはユーザーの責任です。(mcp-remoteは反対に、stdioクライアントをリモートサーバーに接続するときに使うツールなので、ここでは適していません。)
検出可能性
このサーバーは、MCP レジストリにio.github.opendata-kr/narajangteo-openingとして登録されています。registry.modelcontextprotocol.ioに対応したクライアントから検索・インストールできます。
環境変数
| 環境変数 | 必須 | 秘密情報 | デフォルト値 | 説明 |
|---|---|---|---|---|
DATA_GO_KR_SERVICE_KEY | はい | はい | (なし) | 公共データポータルの**Decoding(原本)**認証キー |
DATA_GO_KR_BASE_URL | いいえ | いいえ | https://apis.data.go.kr/1230000/as/ScsbidInfoService | サービスパスを含む完全なURLのオーバーライド |
ツール
3つのツールはいずれも読み取り専用の照会です(readOnlyHint)。業務区分(bidKind)の配列:cnstwk(工事)servc(役務)thng(物品)frgcpt(外国資本)。指定がない場合は全区分を並列で照会します(APIリクエストの消費数が区分数に応じて増えるため、区分がわかっている場合は指定してください)。startDate/endDate(YYYYMMDD)はセットで指定します。範囲が広い場合は内部で期間ごとに分割し、順番に照会します。
search_awards
나라장터の落札結果(最終落札者)を、公告名・機関・需要機関(コード)・地域・業種・推定価格・事業者番号・期間で検索します。「誰がいくらで落札したか」、競合他社(事業者番号)の落札履歴、繰り返し事業の一連の追跡に使います。落札者のみを返し、その業者が参加したものの落札できなかった入札は含まれません。特定の公告の開札・入札業者・予定価格の詳細には get_bid_result、開札の進行状況・不落の調査には search_openings を使います。
| パラメーター | 型 | 説明 |
|---|---|---|
bidKind | string[] | 業務区分の配列。未指定の場合は全区分を並列処理します(API リクエストを 4 倍消費) |
keyword | string | 公告名の部分一致検索(bidNtceNm) |
institution | string | 公告機関名(ntceInsttNm) |
demandInstitution | string | 需要機関名(dminsttNm) |
demandInstitutionCode | string | 需要機関コード(dminsttCd)。一連の追跡に安定して使えます |
detailProductCode | string | 詳細品目番号(dtilPrdctClsfcNo) |
region | string | 参加制限地域名(prtcptLmtRgnNm) |
industry | string | 業種名(indstrytyNm) |
minPrice | number | 推定価格の下限(presmptPrceBgn) |
maxPrice | number | 推定価格の上限(presmptPrceEnd) |
bizno | string | 業者の事業者番号。その業者の落札案件のみを検索します(落札できなかった入札は含まれません) |
startDate | string | 検索開始日 YYYYMMDD |
endDate | string | 検索終了日 YYYYMMDD |
dateType | string | 日付の基準:posted(公告掲載、デフォルト)、opened(開札) |
pageSize | number | 1 ページあたりの件数(デフォルト 100、最大 100) |
maxPages | number | 1 ウィンドウあたりの最大ページ数(デフォルト 10、最大 50) |
search_openings
나라장터の開札結果一覧を検索し、進行状況(開札完了/不落/再入札)で絞り込みます。不落・再入札の公告を調査する際に使います。status は API パラメーターではなく、応答を基準とするクライアント側のフィルターのため、応答が遅くなります。機関・業種・期間で絞って使ってください(truncated: true の場合はスキャンが未完了です)。再入札は同じ公告内での再入札であり、再公告ではありません(再公告は入札公告サービスの対象です)。最終落札者の検索には search_awards、単一公告の詳細には get_bid_result を使います。
| パラメーター | 型 | 説明 |
|---|---|---|
bidKind | string[] | 業務区分の配列。未指定の場合は全区分を並列処理します(API リクエストを 4 倍消費) |
keyword | string | 公告名(bidNtceNm) |
institution | string | 公告機関名 |
demandInstitution | string | 需要機関名(dminsttNm) |
region | string | 参加制限地域名(prtcptLmtRgnNm、例:仁川広域市) |
industry | string | 業種名(indstrytyNm) |
status | string | 進行状況フィルター:개찰완료 유찰 재입찰(応答の progrsDivCdNm を基準とするクライアント側フィルター) |
startDate | string | 検索開始日 YYYYMMDD(endDate と合わせて指定) |
endDate | string | 検索終了日 YYYYMMDD(startDate と合わせて指定) |
dateType | string | 日付の基準:posted(公告掲載、デフォルト)、opened(開札) |
pageSize | number | 1 ページあたりの件数(デフォルト 20、開札結果は遅いため少なめを推奨) |
maxPages | number | 1 ウィンドウあたりの最大ページ数(デフォルト 5) |
開札結果の取得には時間がかかります(ライブ環境で 20 件は 0.6 秒、50 件は 9 秒、100 件はタイムアウト)。ページサイズを小さく保ち、検索条件を絞ってください。
get_bid_result
入札公告番号を指定して、その公告の落札者・開札進行状況・予定価格の詳細(調整率)・入札業者ごとの順位/金額/点数を、複合キー(公告番号+回次+分類+再入札番号)で整合性を確認して単件取得します。案件の事後分析や入札価格の参考に使います。複数分類・複数回次の公告は、執行単位の配列に分けて返します。落札方式は推定値です(技術・価格の点数が提供されるのは交渉契約のみで、適格審査では金額・順位のみ)。myBizno を指定すると、自社の入札行に isOurs を表示します。複数の公告を条件で検索する場合は search_awards または search_openings を使います。
| パラメーター | 型 | 説明 |
|---|---|---|
bidNtceNo | string | 入札公告番号(必須) |
bidKind | string | 業務区分。未指定の場合は全区分の A/B/C を検索します(API リクエスト 12 件、指定時は 3 件) |
status | string | D(入札業者別)の状態:completed failing rebid all(デフォルト。完了・不落・再入札を並列処理) |
bidNtceOrd | string | 入札公告回次。特定の執行に絞り込みます |
bidClsfcNo | string | 入札分類番号。特定の執行に絞り込みます |
rbidNo | string | 再入札番号。特定の執行に絞り込みます |
myBizno | string | 自社の事業者番号。一致する入札行に isOurs フラグを設定します |
すべてのツールの戻り値は、search_awards/search_openings が { query, results }(業務区分ごとに { totalCount, invalidCount, items } または失敗時は { error })、get_bid_result が { bidNtceNo, executions, errors, invalidCount, notes } です。invalidCount は応答スキーマの検証に失敗し、items から除外された件数です。0 以外の場合は、API 応答のフィールドが予告なく変更された合図です。イシューとして報告していただければ反映します。
応答フィールド
検索ツール(search_awards・search_openings)は、業務区分ごとの results マップを返します。各区分の値は { totalCount(BeforeFilter), invalidCount, items, truncated, failedWindows } | { error } です。期間を指定すると、暦月の境界で分割したウィンドウを順に検索します。一部のウィンドウが失敗しても、残りの成功分を返し、失敗したウィンドウは failedWindows(ウィンドウ・理由)に格納して、部分的な結果であることを示します。
AwardResult(系列 A、最終落札者)
bidNtceNo(入札公告番号)、bidNtceNm(公告名)、participants(参加業者数)、winner(落札者)、winnerBizno(落札者の事業者番号)、winnerCeo(落札者の代表者)、awardAmount(落札金額)、awardRate(落札率)、realOpeningDt(実際の開札日時)、demandInstitution(需要機関)、finalAwardDate(最終落札日)。
OpeningSummary (계열 B, 개찰진행)
bidNtceNo, bidNtceNm, openingDt(개찰일시), participants(참가업체수), progress(진행상태: 개찰완료/유찰/재입찰), topBidder(1위 업체 { name, bizno, ceo, amount, rate } 또는 null), reservePriceFileExists(예비가격 파일 존재 여부), noticeInstitution(공고기관), demandInstitution(수요기관), failReasonHint(유찰 시 참가업체수 기반 추정 사유, 선택).
PreparPriceDetail (계열 C, 예비가격상세·집행 단위 집약)
planPrice(예정가격), baseAmount(기초금액), saJeongRate(사정률, 숫자 또는 null), totalReserveCount(총 복수예가수), drawn(추첨번호), reserves(복수예가 배열: seq·basePlanPrice).
BidderDetail (계열 D, 투찰업체별)
rank(순위), name(업체명), bizno(사업자번호), ceo(대표자), amount(투찰금액), rate(투찰율), remark(비고), priceScore(가격점수), techScore(기술점수), techRawScore(기술평점), totalScore(합산점수), bidDt(투찰일시), isOurs(자사 여부, myBizno 일치 시 true).
개발
nvm use # Node 24
pnpm install
pnpm test # vitest
pnpm typecheck # tsc --noEmit
pnpm build # tsup, dist/ 생성
문제 해결
-
인증 오류(코드 30): Encoding 키를 넣으면 이중 인코딩으로 실패한다. Decoding(원본) 키를 쓴다. 서버가 시작 시 Encoding 키로 보이면 경고 로그를 남긴다.
-
개찰결과 조회가 느리거나 타임아웃:
search_openings는 응답이 무겁다.pageSize를 기본값(20) 이하로 유지하고 기관·업종·기간으로 조건을 좁힌다.truncated: true가 보이면 스캔이 끝나지 않은 것이다. -
결과코드 메시지: 트래픽 초과, 인증키 만료 등 data.go.kr 결과코드는 한국어 메시지로 정규화되어 반환된다.
-
도구 동작 점검: MCP inspector로 직접 호출해 볼 수 있다.
npx @modelcontextprotocol/inspector npx -y @opendata-kr/narajangteo-opening-mcp
라이선스
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。