mcpField
나
나라장터 낙찰정보

나라장터 낙찰정보

ローカル
github.com法務・行政015 週間前に更新

나라장터 낙찰정보 について

data.go.kr の나라장터落札情報 APIをラップするローカル MCP サーバーです。公共調達の結果を調べる利用者向けに、条件検索と、落札者・開札・入札順位・予定価格情報を公告単位でまとめる詳細照会を提供します。

主な機能

  1. 01落札結果と開札記録の検索
  2. 024つの調達区分を並行照会
  3. 03広い日付範囲を分割して照会
  4. 04公告単位で複数の結果種別を統合
  5. 05一部の照会失敗時も取得結果を返却

活用シーン

  1. 01地域と期間で最近の物品落札を検索
  2. 02公告の落札者と入札順位を確認
  3. 03不調・再入札の記録を抽出
  4. 04企業の落札履歴を調査

MCP 対応

ローカル MCP サーバーとして、落札・開札の検索と個別公告の詳細照会を行う3つの読み取り専用ツールをクライアントに公開します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"opendata-kr-narajangteo-opening": {
"command": "npx",
"args": [
"-y",
"@opendata-kr/narajangteo-opening-mcp"
],
"env": {
"DATA_GO_KR_SERVICE_KEY": "<DATA_GO_KR_SERVICE_KEY>",
"DATA_GO_KR_BASE_URL": "<DATA_GO_KR_BASE_URL>"
}
}
}
}
起動コマンドnpx -y @opendata-kr/narajangteo-opening-mcp
設定が必要な環境変数
DATA_GO_KR_SERVICE_KEYシークレット공공데이터포털 data.go.kr Decoding(원본) 인증키
DATA_GO_KR_BASE_URL서비스 경로를 포함한 전체 base URL 오버라이드

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@opendata-kr/narajangteo-opening-mcp0.4.0

ツール

3

掲載時のツール一覧 · 3 週間前に更新

パラメーター型必須説明
biznostringいいえ業者の事業者番号。その業者が落札した案件のみを検索します(参加したものの落札しなかった案件は含みません)
regionstringいいえ参加制限地域名(prtcptLmtRgnNm)
bidKindarrayいいえ業務区分の配列(cnstwk=工事・servc=役務・thng=物品・frgcpt=外資)。未指定の場合、全区分を並行検索し、API リクエストが 4 倍になります。業務区分が分かっている場合は指定し、認証キーの日次トラフィックを節約してください
endDatestringいいえ検索終了日 YYYYMMDD
keywordstringいいえ公告名による部分一致検索(bidNtceNm)
dateTypeenumいいえ日付の基準。posted=公告掲載(デフォルト)、opened=開札posted | opened
industrystringいいえ業種名(indstrytyNm)
maxPagesintegerいいえウィンドウあたりの最大ページ数(デフォルトは 10)
maxPricenumberいいえ추정가격 상한(presmptPrceEnd)
minPricenumberいいえ추정가격 하한(presmptPrceBgn)
pageSizeintegerいいえウィンドウごとのページサイズ(デフォルト 100)
startDatestringいいえ検索開始日 YYYYMMDD
institutionstringいいえ公告機関名
demandInstitutionstringいいえ需要機関名(dminsttNm)
detailProductCodestringいいえ세부품명번호(dtilPrdctClsfcNo)
demandInstitutionCodestringいいえ需要機関コード。終端識別に安定して使用できます

詳細

@opendata-kr/narajangteo-opening-mcp

나라장터 낙찰정보서비스(공공데이터포털 data.go.kr) Open API를 감싼 로컬 MCP 서버.

npm version CI node license

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 인증키:
    1. 공공데이터포털에서 나라장터 낙찰정보서비스(ScsbidInfoService)를 활용신청해 [승인]을 받는다. 인증키는 계정당 하나지만, 각 API는 저마다 활용신청 승인이 있어야 그 API에서 인증된다. 서비스키가 있어도 이 API를 활용신청하지 않으면 인증 오류(코드 30)가 난다.
    2. 마이페이지 → 활용신청 현황 → 개발계정 상세에서 Decoding 서비스키를 복사한다.
    3. 같은 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

ボタンでインストール:

VS Code にインストール

VS Code Insiders にインストール

ボタンではキーを渡せません。インストール後、.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

ボタンでインストール:

narajangteo-opening MCP サーバーを 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

Qoder SettingsでMCP Server → + Addを選び、上記の設定を使用します。

またはMCP ガイドに従い、上記の設定を使用します。

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を追加します。

Visual Studio

ボタンでインストール:

Visual Studio にインストール

ボタンにはキーを含められません。インストール後、サーバー設定の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 を使います。

パラメーター型説明
bidKindstring[]業務区分の配列。未指定の場合は全区分を並列処理します(API リクエストを 4 倍消費)
keywordstring公告名の部分一致検索(bidNtceNm)
institutionstring公告機関名(ntceInsttNm)
demandInstitutionstring需要機関名(dminsttNm)
demandInstitutionCodestring需要機関コード(dminsttCd)。一連の追跡に安定して使えます
detailProductCodestring詳細品目番号(dtilPrdctClsfcNo)
regionstring参加制限地域名(prtcptLmtRgnNm)
industrystring業種名(indstrytyNm)
minPricenumber推定価格の下限(presmptPrceBgn)
maxPricenumber推定価格の上限(presmptPrceEnd)
biznostring業者の事業者番号。その業者の落札案件のみを検索します(落札できなかった入札は含まれません)
startDatestring検索開始日 YYYYMMDD
endDatestring検索終了日 YYYYMMDD
dateTypestring日付の基準:posted(公告掲載、デフォルト)、opened(開札)
pageSizenumber1 ページあたりの件数(デフォルト 100、最大 100)
maxPagesnumber1 ウィンドウあたりの最大ページ数(デフォルト 10、最大 50)
search_openings

나라장터の開札結果一覧を検索し、進行状況(開札完了/不落/再入札)で絞り込みます。不落・再入札の公告を調査する際に使います。status は API パラメーターではなく、応答を基準とするクライアント側のフィルターのため、応答が遅くなります。機関・業種・期間で絞って使ってください(truncated: true の場合はスキャンが未完了です)。再入札は同じ公告内での再入札であり、再公告ではありません(再公告は入札公告サービスの対象です)。最終落札者の検索には search_awards、単一公告の詳細には get_bid_result を使います。

パラメーター型説明
bidKindstring[]業務区分の配列。未指定の場合は全区分を並列処理します(API リクエストを 4 倍消費)
keywordstring公告名(bidNtceNm)
institutionstring公告機関名
demandInstitutionstring需要機関名(dminsttNm)
regionstring参加制限地域名(prtcptLmtRgnNm、例:仁川広域市)
industrystring業種名(indstrytyNm)
statusstring進行状況フィルター:개찰완료 유찰 재입찰(応答の progrsDivCdNm を基準とするクライアント側フィルター)
startDatestring検索開始日 YYYYMMDD(endDate と合わせて指定)
endDatestring検索終了日 YYYYMMDD(startDate と合わせて指定)
dateTypestring日付の基準:posted(公告掲載、デフォルト)、opened(開札)
pageSizenumber1 ページあたりの件数(デフォルト 20、開札結果は遅いため少なめを推奨)
maxPagesnumber1 ウィンドウあたりの最大ページ数(デフォルト 5)

開札結果の取得には時間がかかります(ライブ環境で 20 件は 0.6 秒、50 件は 9 秒、100 件はタイムアウト)。ページサイズを小さく保ち、検索条件を絞ってください。

get_bid_result

入札公告番号を指定して、その公告の落札者・開札進行状況・予定価格の詳細(調整率)・入札業者ごとの順位/金額/点数を、複合キー(公告番号+回次+分類+再入札番号)で整合性を確認して単件取得します。案件の事後分析や入札価格の参考に使います。複数分類・複数回次の公告は、執行単位の配列に分けて返します。落札方式は推定値です(技術・価格の点数が提供されるのは交渉契約のみで、適格審査では金額・順位のみ)。myBizno を指定すると、自社の入札行に isOurs を表示します。複数の公告を条件で検索する場合は search_awards または search_openings を使います。

パラメーター型説明
bidNtceNostring入札公告番号(必須)
bidKindstring業務区分。未指定の場合は全区分の A/B/C を検索します(API リクエスト 12 件、指定時は 3 件)
statusstringD(入札業者別)の状態:completed failing rebid all(デフォルト。完了・不落・再入札を並列処理)
bidNtceOrdstring入札公告回次。特定の執行に絞り込みます
bidClsfcNostring入札分類番号。特定の執行に絞り込みます
rbidNostring再入札番号。特定の執行に絞り込みます
myBiznostring自社の事業者番号。一致する入札行に 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
    

라이선스

MIT

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。