나라장터 사전규격 について
data.go.kr の나라장터事前規格 APIをラップするローカル MCP サーバーです。入札公告前に公開される仕様を調べたい調達担当者や事業者向けに、日付・機関・品目・複合条件での検索と意見・回答の取得を提供します。
主な機能
- 01日付または登録番号で事前規格を検索
- 02発注機関・需要機関で絞り込み
- 03品名や品目コードで検索
- 04複数条件を組み合わせて検索
- 05仕様への意見と回答を取得
活用シーン
- 01最近公開された事前規格の検索
- 02特定機関の調達予定を追跡
- 03対象品目の仕様公開情報を検索
- 04仕様に寄せられた意見と回答を確認
MCP 対応
ローカル MCP サーバーとして、事前規格の検索、機関・品目別の絞り込み、複合検索、意見照会を行う5つの読み取り専用ツールを MCP クライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y @opendata-kr/narajangteo-prespec-mcpDATA_GO_KR_SERVICE_KEYシークレット공공데이터포털 data.go.kr Decoding(원본) 인증키DATA_GO_KR_BASE_URL서비스 경로를 포함한 전체 base URL 오버라이드ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
5掲載時のツール一覧 · 3 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| kind | array | いいえ | 業務区分:cnstwk=工事、servc=役務、thng=物品、frgcpt=外国物品。未指定の場合、全区分を並列検索し、API リクエストを 4 件消費します。業務区分が分かる場合は指定し、認証キーの日次トラフィックを節約してください。 |
| page | integer | いいえ | ページ番号(デフォルト:1) |
| endDate | string | いいえ | 検索終了日 YYYYMMDD |
| dateType | enum | いいえ | 期間の基準:regist=登録日時(デフォルト)、change=変更日時regist | change |
| pageSize | integer | いいえ | 1 ページあたりの件数(デフォルト:10) |
| startDate | string | いいえ | 検索開始日 YYYYMMDD |
| specRegistNo | string | いいえ | 事前規格登録番号で単一レコードを検索します(指定時は期間より優先)。 |
詳細
@opendata-kr/narajangteo-prespec-mcp
나라장터 사전규격정보서비스(공공데이터포털 data.go.kr) Open API를 감싼 로컬 MCP 서버.
MCP 클라이언트에서 나라장터 사전규격(발주기관이 입찰공고 전에 규격서를 사전공개하고 의견을 받는 단계)을 자연어로 검색하고 조회한다. 예를 들어 이렇게 물어볼 수 있다.
- "이번 달 올라온 물품 사전규격을 찾아줘"
- "해군군수사령부가 발주한 사전규격을 검색해줘"
- "사전규격등록번호 R26BD00234692의 규격서 의견을 보여줘"
특징
- 20개 오퍼레이션을 5개 도구로 노출: 전체 조회/기관별/품목별/복합검색/규격서의견 유형별로 묶어 사용성을 단순화했다.
- 4개 업무구분 병렬 검색: 공사/용역/물품/외자를 한 번에 조회한다. 업무구분 미지정 시 전 구분을 동시 검색한다.
- 부분 실패 표면화: 일부 구분 조회가 실패해도 나머지 결과를 반환하고, 실패한 구분은 오류 메시지로 드러낸다(조용한 누락 없음).
- data.go.kr 에러코드 한국어화: 인증키 만료, 트래픽 초과 등 결과코드를 조치 가능한 한국어 메시지로 정규화한다.
- 이중 인코딩 방어: Encoding 키를 잘못 넣으면 경고하고, 요청은 한 번만 인코딩한다.
- 타임아웃: API 호출에 타임아웃을 둔다.
준비물
- Node.js 24 이상 (
.nvmrc=lts/krypton). - data.go.kr 인증키:
- 공공데이터포털에서 나라장터 사전규격정보서비스를 활용신청해
[승인]을 받는다. 인증키는 계정당 하나지만, 각 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-prespec": {
"command": "npx",
"args": ["-y", "@opendata-kr/narajangteo-prespec-mcp@latest"],
"env": { "DATA_GO_KR_SERVICE_KEY": "발급받은_Decoding_키" }
}
}
}
メモ
@opendata-kr/narajangteo-prespec-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-prespec -- npx -y @opendata-kr/narajangteo-prespec-mcp@latest
이후 생성된 설정의 env(또는 셸 환경변수)에 DATA_GO_KR_SERVICE_KEY를 추가한다.
Antigravity
Antigravity 문서의 커스텀 MCP 서버 추가 방법을 따라 아래 config를 MCP servers 설정에 넣는다:
{
"mcpServers": {
"narajangteo-prespec": {
"command": "npx",
"args": ["-y", "@opendata-kr/narajangteo-prespec-mcp@latest"],
"env": { "DATA_GO_KR_SERVICE_KEY": "발급받은_Decoding_키" }
}
}
}
Claude Code
Claude Code CLI로 서버를 추가한다 (가이드):
claude mcp add narajangteo-prespec --scope user --env DATA_GO_KR_SERVICE_KEY=발급받은_Decoding_키 -- npx -y @opendata-kr/narajangteo-prespec-mcp@latest
Cline
https://docs.cline.bot/mcp/configuring-mcp-servers 의 안내를 따르고 위 config를 사용한다.Codex
MCP 설정 가이드를 따르고 위 config를 사용한다. Codex CLI로도 추가할 수 있다:codex mcp add narajangteo-prespec --env DATA_GO_KR_SERVICE_KEY=발급받은_Decoding_키 -- npx -y @opendata-kr/narajangteo-prespec-mcp@latest
Windows
~/.codex/config.toml에 cmd /c 래핑으로 추가한다:
[mcp_servers.narajangteo-prespec]
command = "cmd"
args = ["/c", "npx", "-y", "@opendata-kr/narajangteo-prespec-mcp@latest"]
env = { DATA_GO_KR_SERVICE_KEY = "발급받은_Decoding_키" }
Command Code
Command Code CLI로 서버를 추가한다 (MCP 가이드):
cmd mcp add narajangteo-prespec --scope user npx -y @opendata-kr/narajangteo-prespec-mcp@latest
이후 생성된 설정의 env(또는 셸 환경변수)에 DATA_GO_KR_SERVICE_KEY를 추가한다.
Continue
Continue의 MCP 가이드를 따른다. Continue는 mcpServers를 배열로 쓴다:
{
"mcpServers": [
{
"name": "narajangteo-prespec",
"command": "npx",
"args": ["-y", "@opendata-kr/narajangteo-prespec-mcp@latest"],
"env": { "DATA_GO_KR_SERVICE_KEY": "발급받은_Decoding_키" }
}
]
}
Copilot CLI
Copilot CLI를 시작한다:
copilot
MCP 서버 추가 대화를 연다:
/mcp add
다음 필드를 입력하고 CTRL+S로 저장한다:
- Server name:
narajangteo-prespec - Server Type:
[1] Local - Command:
npx -y @opendata-kr/narajangteo-prespec-mcp@latest - Environment variables:
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-prespec","command":"npx","args":["-y","@opendata-kr/narajangteo-prespec-mcp@latest"],"env":{"DATA_GO_KR_SERVICE_KEY":"발급받은_Decoding_키"}}'
Windows(PowerShell):
code --add-mcp '{"""name""":"""narajangteo-prespec""","""command""":"""npx""","""args""":["""-y""","""@opendata-kr/narajangteo-prespec-mcp@latest"""],"""env""":{"""DATA_GO_KR_SERVICE_KEY""":"""발급받은_Decoding_키"""}}'
Cursor
ボタンでインストール:
ボタンにはキーを含められません。インストール後、Cursor の MCP 設定の
envにDATA_GO_KR_SERVICE_KEYを追加します。
手動で追加:
Cursor Settings → MCP → New MCP Serverで上記の設定を使用します。
Factory CLI
Factory CLIでサーバーを追加します(ガイド):
droid mcp add narajangteo-prespec "npx -y @opendata-kr/narajangteo-prespec-mcp@latest"
その後、生成された設定のenv(またはシェル環境変数)にDATA_GO_KR_SERVICE_KEYを追加します。
Gemini CLI
Gemini CLIでサーバーを追加します。
プロジェクトの範囲:
gemini mcp add narajangteo-prespec npx -y @opendata-kr/narajangteo-prespec-mcp@latest
グローバル:
gemini mcp add -s user narajangteo-prespec npx -y @opendata-kr/narajangteo-prespec-mcp@latest
またはMCP ガイドに従い、上記の設定を使用します。~/.gemini/settings.jsonのサーバー定義のenvにDATA_GO_KR_SERVICE_KEYを追加します。
Gemini Code Assist
MCP 設定ガイドに従い、上記の設定を使用します。Grok Build CLI
grok mcp add narajangteo-prespec npx -y @opendata-kr/narajangteo-prespec-mcp@latest
その後、生成された設定のenv(またはシェル環境変数)にDATA_GO_KR_SERVICE_KEYを追加します。その他のオプションについてはドキュメントを参照してください。
JetBrains AI Assistant & Junie
Settings | Tools | AI Assistant | Model Context Protocol (MCP) → Addで上記の設定を使用します。
Junieでも同様に、Settings | Tools | Junie | MCP Settings → Addで上記の設定を使用します。
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-prespec-mcp@latest
ステップ3: 次の設定でStudioAssistにサーバーを追加します:
- 接続 URL:
http://127.0.0.1:8080/mcp - トランスポートの種類:
HTTP
Kiro
Kiro SettingsでConfigure MCP → Open Workspace or User MCP Configを選択し、上記の設定を使用します。
または、Activity Bar → Kiro → MCP Servers → Open MCP Configを選択し、上記の設定を使用します。
Mistral Vibe
~/.vibe/config.tomlに追加します:
[[mcp_servers]]
name = "narajangteo-prespec"
transport = "stdio"
command = "npx"
args = ["-y", "@opendata-kr/narajangteo-prespec-mcp@latest"]
env = { DATA_GO_KR_SERVICE_KEY = "발급받은_Decoding_키" }
OpenCode
opencode.jsonに追加します。ファイルがない場合は、~/.config/opencode/opencode.jsonに作成します(ガイド):
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"narajangteo-prespec": {
"type": "local",
"command": ["npx", "-y", "@opendata-kr/narajangteo-prespec-mcp@latest"],
"environment": { "DATA_GO_KR_SERVICE_KEY": "발급받은_Decoding_키" }
}
}
}
Qoder
**Qoder Settings**で`MCP Server` → `+ Add`を選択し、上記のconfigを使用します。またはMCPガイドに従い、上記のconfigを使用します。
Qoder CLI
Qoder CLIでサーバーを追加します(ガイド)。
プロジェクトスコープ:
qodercli mcp add narajangteo-prespec -- npx @opendata-kr/narajangteo-prespec-mcp@latest
グローバル:
qodercli mcp add -s user narajangteo-prespec -- npx @opendata-kr/narajangteo-prespec-mcp@latest
その後、生成された設定のenv(またはシェル環境変数)にDATA_GO_KR_SERVICE_KEYを追加します。
Warp
Settings | AI | Manage MCP Servers → + AddからMCP サーバーを追加し、上記のconfigを使用します。
Windsurf
MCP設定ガイドに従い、上記のconfigを使用します。Windsurfでは`mcpServers`キーを使用します(`~/.codeium/windsurf/mcp_config.json`)。Zed
~/.config/zed/settings.jsonに追加します(スキーマはZedのバージョンによって異なる場合があるため、Zed公式ドキュメントを確認してください)。
{
"context_servers": {
"narajangteo-prespec": {
"command": { "path": "npx", "args": ["-y", "@opendata-kr/narajangteo-prespec-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-prespec-mcp@latest
http://127.0.0.1:8080/mcpを公開HTTPSで公開するのはユーザーの責任です。(mcp-remoteは逆に、stdioクライアントをリモートサーバーに接続するためのツールなので、ここでは適していません。)
検出可能性
このサーバーはMCPレジストリにio.github.opendata-kr/narajangteo-prespec-mcpとして登録されています。registry.modelcontextprotocol.ioに対応したクライアントで検索・インストールできます。
環境変数
| 環境変数 | 必須 | 秘密 | デフォルト値 | 説明 |
|---|---|---|---|---|
DATA_GO_KR_SERVICE_KEY | はい | はい | (なし) | 公共データポータルの**Decoding(原本)**認証キー |
DATA_GO_KR_BASE_URL | いいえ | いいえ | https://apis.data.go.kr/1230000/ao/HrcspSsstndrdInfoService | サービスパスを含む完全なURLのオーバーライド |
ツール
5つのツールはいずれも読み取り専用の照会です。20の操作を照会方法ごとにまとめています。以下のパラメーターはすべてのツールで共通です。
kind:string[]。業務区分の配列:cnstwk(工事)servc(サービス)thng(物品)frgcpt(外国資本)。未指定の場合は全区分を並列照会します。並列照会ではAPIリクエストを4件消費するため、業務区分が分かっている場合は指定してくださいpage:number。ページ番号(デフォルトは1)pageSize:number。ページあたりの件数(デフォルトは10、最大100)
search_prespecs
事前規格を期間(登録日時/変更日時)または事前規格登録番号で照会します。単純な期間・番号による照会に使用します。
| パラメーター | 型 | 説明 |
|---|---|---|
startDate | string | 照会開始日 YYYYMMDD |
endDate | string | 照会終了日 YYYYMMDD |
dateType | string | 期間の基準:regist(登録日時、デフォルト)change(変更日時) |
specRegistNo | string | 事前規格登録番号による単件照会(指定時は期間より優先) |
search_prespecs_by_institution
発注機関名・実需要機関名で事前規格を照会します。特定機関の発注予定案件を確認する場合に使用します。
| パラメーター | 型 | 説明 |
|---|---|---|
orderInstitution | string | 発注機関名 |
demandInstitution | string | 実需要機関名 |
startDate | string | 照会開始日 YYYYMMDD |
endDate | string | 照会終了日 YYYYMMDD |
search_prespecs_by_product
品名・詳細品名(番号)で事前規格を照会します。関心のある品目の事前規格を探す場合に使用します。
| パラメーター | 型 | 説明 |
|---|---|---|
productName | string | 品名(事業名) |
detailProductCode | string | 詳細品名番号 |
detailProductName | string | 詳細品名 |
startDate | string | 照会開始日 YYYYMMDD |
endDate | string | 照会終了日 YYYYMMDD |
search_prespecs_advanced
발주기관·수요기관·품명·참조번호·SW사업여부 등 복합 조건으로 사전규격을 조회한다. 여러 필터를 동시에 걸 때 쓴다.
| 파라미터 | 타입 | 설명 |
|---|---|---|
startDate | string | 접수 시작일 YYYYMMDD |
endDate | string | 접수 종료일 YYYYMMDD |
specRegistNo | string | 사전규격등록번호로 조회(지정 시 최우선) |
refNo | string | 참조번호로 조회(지정 시 기간보다 우선) |
noticeInstitution | string | 발주기관명 |
demandInstitution | string | 수요기관명 |
productName | string | 품명(사업명) |
detailProductCode | string | 세부품명번호 |
swBusinessYn | string | SW사업 여부(Y/N) |
조회 우선순위는 사전규격등록번호 > 참조번호 > 접수일시 순이다. 세부품명(
detailProductName) 검색은 이 API가 지원하지 않는다. 세부품명으로 찾으려면search_prespecs_by_product를 쓴다.
get_prespec_opinions
특정 사전규격(사전규격등록번호)에 달린 규격서 의견·답변 목록을 조회한다.
| 파라미터 | 타입 | 설명 |
|---|---|---|
specRegistNo | string | 사전규격등록번호 |
startDate | string | 조회 시작일 YYYYMMDD |
endDate | string | 조회 종료일 YYYYMMDD |
모든 도구의 반환은 { query, results }다. results는 업무구분별로 { totalCount, invalidCount, items }를, 실패 시 해당 구분에 { error }를 담는다. invalidCount는 응답 스키마 검증에서 탈락해 items에서 제외된 건수다. 0이 아니면 API 응답 필드가 예고 없이 바뀐 신호이므로 이슈로 알려주면 반영한다.
응답 필드
Prespec (①②③④ 공통)
specRegistNo(사전규격등록번호), productName(품명/사업명), assignedBudget(배정예산액), orderInstitution(발주기관), demandInstitution(실수요기관), registDt(등록일시), changeDt(변경일시), opinionCloseDt(의견등록마감), receiptDt(접수일시), refNo(참조번호), bidNoticeList(관련 입찰공고번호 목록), businessDivision(업무구분), deliveryDays(납품기한일수), deliveryDeadline(납품기한), officialName(담당자), officialTel(담당자 전화), swBusinessYn(SW사업 여부), productDetailList(세부품목 배열: itemSeq·detailProductNo·detailProductName. 공사·용역은 빈 배열).
PrespecOpinion (⑤)
specRegistNo, refNo, opinionNo(의견번호), replyNo(답변번호), opinionTitle(제목), opinionContent(내용), writerCorp(작성업체), writerName(작성자), inputDt(등록일시), writerTel, writerEmail, opinionFileUrls(첨부파일 URL 배열).
개발
nvm use # Node 24
pnpm install
pnpm test # vitest
pnpm typecheck # tsc --noEmit
pnpm build # tsup, dist/ 생성
문제 해결
-
인증 오류(코드 30): Encoding 키를 넣으면 이중 인코딩으로 실패한다. Decoding(원본) 키를 쓴다. 서버가 시작 시 Encoding 키로 보이면 경고 로그를 남긴다.
-
결과코드 메시지: 트래픽 초과, 인증키 만료 등 data.go.kr 결과코드는 한국어 메시지로 정규화되어 반환된다.
-
도구 동작 점검: MCP inspector로 직접 호출해 볼 수 있다.
npx @modelcontextprotocol/inspector npx -y @opendata-kr/narajangteo-prespec-mcp
라이선스
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。