kcsc-design-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@kcsc-design-mcpKDS 14 31 10 의 압축부재 폭두께비 표 보여줘"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
kcsc-design-mcp
MCP server that brings the full text of national construction standards (KDS, KCS, etc.) straight into the AI chat window.
It connects to the Korea Construction Standards Center (KCSC) OpenAPI as-is. Enter your own API key and it works in any MCP-capable tool: Claude Desktop, Claude Code, Cursor, and others.
"KDS 14 31 10 의 압축부재 폭두께비 표 보여줘"
→ 표 4.2-2 를 마크다운 표 그대로 인용⚠️ What this tool does not do
It does not do structural calculations for you.
Equations and symbols (λr, Fcr, etc.) do not come as text because the KCSC originals are images. This tool marks those spots as
〔그림 N〕and never invents equations.If you need the equation, use
kcsc_formulato fetch the image as-is. That is the real equation from the real standard. If you calculate without looking at the image, the equation is not from the source — it is from the AI's memory — and it may be right or wrong, but you cannot tell which just by looking at the output. → In that case, verify the citations withkcsc_auditand disclose that fact.The Excel files it creates are blank templates. It does not insert calculation formulas — the originals are images, so the formulas cannot be known, and putting an unknown formula into it is the start of an accident.
The bundled decision trees are not verified design documents. They are only review sequences and supporting clause references, and wherever KDS does not fix a value, a value adopted by the organization that made the tree is planted. You must replace it with your own organization's criteria; the responsibility for that decision lies with the engineer who uses it.
The final decision belongs to the engineer. A single wrong bridge load is a matter of a human life.
Related MCP server: KJH Law MCP
Installation
You first need an access key — apply for the OpenAPI at the Korea Construction Standards Center, https://kcsc.re.kr.
Claude Desktop / Claude Code
Put the following block into claude_desktop_config.json (or .mcp.json).
{
"mcpServers": {
"kcsc": {
"command": "uvx",
"args": ["kcsc-design-mcp"],
"env": { "KCSC_API_KEY": "발급받은_키" }
}
}
}If you do not have uvx, install uv first. There is no individual installation step.
Configuration locations — Claude Desktop (Windows): %APPDATA%\Claude\claude_desktop_config.json, Claude Code: the project's .mcp.json. After adding it and restarting the app, the 14 tools will be registered.
Using it directly from source
pip install -e .
KCSC_API_KEY=발급받은_키 python -m kcsc_mcpTools
Original text
Tool | What it does |
| Finds standards by name (about 3,570) |
| Table of contents — hierarchical clause numbers |
| Section text (tables kept) |
| ★The section's equations as images, untouched |
| Find sections in the body that contain the word |
| Machine-verifies citations in a calculation answer (see below) |
| Version/update date (check for updates) |
Design aids — decision trees
Tool | What it does |
| List of available trees (member, cross-section, design method, validation status) |
| ★Tree link map — which way the links go and what is still missing |
| Design flow together with the supporting clause text for each step |
| Creates a blank section-check Excel → file path |
| Validates tree — confirms actual clause numbers exist via the API |
| YAML skeleton for a new member |
| Stamps the confirmation time on a settled tree ( |
Codes are all accepted in the forms KDS 14 31 10, 14 31 10, 143110.
kcsc_grep and kcsc_version accept multiple codes separated by commas — since grep fetches an entire document and scans it, it accepts up to 10 at a time.
kcsc_formula — equations as intact images
Equations in the raw KCSC documents are GIF images. There is no alt text and no MathML, so the equations do not exist as text. The API key does not matter here — the key only grants access.
Actually though, the images themselves are sharp. So this tool returns the figure as is.
kcsc_formula('KDS 14 31 10', '4.2.3')
→ 텍스트 1개 + 이미지 17개
〔그림 2〕 Pn = Fcr·Ag (4.2-1)
〔그림 6〕 Fcr = [0.658^(Fy/Fe)]·Fy (4.2-2)
〔그림 9〕 Fcr = 0.877·Fe (4.2-3)
〔그림 11〕 Fe = π²E/(KL/r)² (4.2-4)The numbers correspond to the 〔그림 N〕 markers in the kcsc_read body. While reading the text, you can pull only the equations you need.
The cost is practically trivial — roughly 27–216 vision tokens per 열절. However, some sections contain as many as 70 images, so by default only the first 40 are sent (adjustable with max_images).
※ Reading an image is also recognition, so a subscript can be misread. But the designer can also see the same image to compare — an equation filled in from memory has no compare target at all.
kcsc_audit — machine verification of citations in computed answers
Rather than blocking calculations, it makes the answer traceable. Give it an entire calculation answer and it pulls out and checks each reference — standard, clause, equation number, and table number — one by one.
## 인용 검증 — 6건 중 6건 확인 · 0건 실패
| 종류 | 기준 | 인용 | 확인 |
| 조항 | KDS 143110 | 4.3.2.1.1.4 | ✅ 강축 휨을 받는 기타 H형강… ⚠️수식이미지 |
| 식 | KDS 143110 | 4.3-11 | ✅ 4.3.2.1.1.4 절에 있음 |
| 표 | KDS 143105 | 표 3.4-1 | ✅ 3.4.1 절에 있음 |
★4.3.2.1.1.4 절의 식은 원문이 이미지입니다. 도구가 읽지 못했습니다.
→ 이 계산에 쓰인 식·계수는 원문에서 온 것이 아니라 모델이 채운 것입니다.Why it is needed — it actually happened. An H-section bending-review answer for an unusual H-beam (H-shaped cross) cited KDS 14 31 10 4.3.2.1.1.4 and took? — hmm, let me restart the English of the story:
Why — this really happened. An irregular H-beam bending-capacity review answer cited KDS 14 31 10 4.3.2.1.1.4, giving φMn = 83.8 kN·m, and when rechecked, every piece was correct. But that clause's original source contained no equations as text at all. The equation and its coefficient used in the answer were not obtained by reading the standard; the AI recalled them from memory.
It happened to be correct this time. The problem is that you — by looking at the output — cannot tell whether it is right or not.
What it cannot verify (must be read together):
Whether the equation content is correct — it cannot be, because the source is an image
Whether the clause applies to this member, this condition — that is a design judgment
Whether the arithmetic is correct
The only thing it confirms is the fact that, "the given number actually exists in the text at that place." If you read any more than that into the tool, the tool becomes a new kind of false reassurance.
Decision tree — 35 trees come with it
Design sequences are not embedded in code; they live outside as one YAML page = one member.
저장소 flows/ 결정트리 35개 — LRFD 18 · 한계상태 9 · 허용응력 8 (이음 118개, 끊긴 곳 0)
패키지 동봉 형식 견본 1개 — `검증: 예제` 로 박아 둠. 그대로 쓰라는 게 아님
사용자 폴더 ~/.kcsc-mcp/flows/*.yaml ← 여기에 두면 도구가 읽는다Download flows/ and put it into ~/.kcsc-mcp/flows/, or point to the directory with KCSC_FLOWS_DIR.
When the (member·section·design method) are the same, the user folder location can be moved — the user folder directory。
★Do not use the received trees as received. For any details where KDS does not provide values, the implementing organization may "adopted" values — deflection limit L/600, excluding outdated frequency strips, joint efficiency 75%/90%, and more. For there are, see the table in the directory
flows/README.md. Must substitute your own organization's best goals. Place of expression equals exchange=..A tree is design basis in scope, not a verified design document. A machine cannot prove that a given sequence is consistent with current industrial usage. The designer necessarily steps through each stage and has to judge.
To create your own tree, get a skeleton via design_template, fill it in, and check it with design_validate.
Wait — GXP7 has a heading after. Now the tree-linking paragraph; in my above table I may have accidentally reordered. Let me restructure the whole "trees" translation carefully to match original order:
Original order:
## 결정트리 — 35개가 함께 있습니다
설계 흐름은 코드에 박혀 있지 않고 **YAML 한 장 = 부재 하나**로 인길 있습니다.
GXP6
다운로드 [flows/](url) — `~/.kcsc-mcp/flows/` — KCSC_FLOWS_DIR ... (?)
> ★주의...
자시 트리를...
### ★트리는 서로 이어져 있습니다
GXP7
...
### `design_validate` 가 포착하는 것
### ★분야 기본값은 **교량** 입니다
...
GXP8
...
### ★설계법의 사설 and data
But the user order actually:
1. ## 결정트리 — 35기가
2. Flow paragraph
3. GXP6
4. Download/copy paragraph
5. ★notice
6. design_template paragraph
7. ### ★트리는 서로 이어져...
8. "구조계산서는 not completes..." paragraph
9. GXP7
10. bullets
11. `design_map()` paragraph
12. ### `design_validate` 가 잡는 것
13. bullet list
14. "트리는 사람이 쓰고..." paragraph
15. ### ★분아 기본 기본값은 **교량** 임
16. ...
Good.
Note "GXP6" is right after the "YAML ... 바깥에 있습니다." paragraph; "GXP7" right after the connecting paragraph "should hand off ...". Yes.
Let me now render the "determ" section as proper sequence:
---
## Decision trees — 35 are bundled with it
Design flows are not baked into the code; they live outside, as **one YAML page = one member**.
GXP6
Download [`flows/`](https://github.com/lhs1152-lgtm/kcsc-design-mcp/tree/main/flows), put it in `~/.kcsc-mcp/flows/`, or point `KCSC_FLOWS_DIR` to that folder. If the same (member, cross-section, design method) exists, **your user folder beats the bundled sample.**
> ★**Don't take the bundled trees as-is.** Where KDS does not decide something, that space is a **value chosen by the organization that built the tree** — e.g., L/600 deflection limit, vibration threshold band etc. — see the table of [`flows/README.md`](url). **Replace them with your own organization's rules.**
>
> A tree is a **design rationale material, not a verified design sheet.** No machine can confirm that the flow matches real design. The designer must expand it step by step and decide.
To make your own, load the skeleton with `design_template`, fill it, **run the `design_validate` check**.
### ★Trees are linked together
Structural 계산서 does not finish with one tree. You can't just stop at the end of its own scope — it must link into the **next tree or the next standard.**
GXP7
* If `다다다` omits the **method**, the **current tree's method is dey** — when the method differs, the tree the tree and it's the same in the links.
* If the tree it points to does not exist yet, it says "not exists" — it never breaks the silent. What is left there exactly "what more must we build to make a structural handover?"... etc.
`design_map()` provides that map — which tree connects where, and **the referenced missing trees**, to boot. The 118 relations that are included in the 35 bundled trees are all linked, so broken 0. If you add, the map will prioritize by "what more is needed for complete structure's calculation report."
### What the validator’s `design_validate` caches
* schema missing / duplicate stage ID
* reference to a step without a branch — it ends right there
* **"made-up / mistyped / repealed" clause numbers** — whether it has confirmation of the actual clause in the standard via API
* — design method, "supporting basis" discrepancy — see below
* latest revision after confirmation that end — `검증`: the compare the issue (edition at confirm) at the time with the latest edition. If it’s revised, ❌ (that confirmation might no longer be valid)
"Tree is written by humans, but the machine verifies that its references exist. Fake clause number surviving will be the greatest danger." etc.
Now note flow: After this, "### ★분야 기본값은 **교량**입니다".
Then bullet and lines.
OK.
Now final answer. Let me ensure I include "GXP9" in the output as its own paragraph after the "same member different methods" sentence and before `method` bullets.
Also from that section: the ground basis "도구 neither enough" The slash.
Now, write the tail:
"`code_type` — 9 types — KCSC catalog contains not only national standard (KDS · KCS) but institutional special specifications:
| KDS | design standard | 561 |
| KCS | standard specification | 769 |
| SMCS | Seoul special construction specs | 853 |
| LHCS | LH special spec | 544 |
...
Keep headers:
| `도`: "Type" | meaning | count |
Now the translation table:
| KDS | Design base / Design standards | 561 |
| KCS | Standard publication (specification) | 769 |
| SMCS | Seoul Metropolitan Government Special Specification | 853 |
| LHCS | LH Special Specification | 544 |
| EXCS | Korea Expressway Corporation Special Specification | 328 |
| KRCCS | Korea National Railway Special Specification | 546 |
| KWCS | K-water Special Specification | 189 |
| NHCS | Korea Rural Community Corporation Special Specification | 76 |
| KRACS | Korea Airports Corporation Special Specification | 26 |
The original table: "KS코드 num" e.g. "KRCCS | 한국철도공사 전문시방서 | 546" Wait the number in the source is 226? Let me verify from the prompt: `| KRCCS | 한국철도공사 전문시방서 | 226 |`? The table in source above says "| KRCCS | 한국철도공사 전문시방서 | 226 |". In the user message: The line is `| KRCCS | 한국철도공사 전문시방서 | 226 |`. Yes, 226 (not 546). And "KRCS" row. I'll verify numbers: source table in prompt:
| KDS | 설계기준 | 561 |
| KCS | 표준시방서 | 769 |
| SMCS | 서울시 전문시방서 | 853 |
| LHCS | 임대 전문시방서 | 544 |
| EXCS | 한국도로공사 전문시방서 | 328 |
| KRCCS | 한국철도공단 전문시방서 | 226 |
| KWCS | 한국수자원공사 전문시방서 | 189 |
| NHCS | 한국농어촌공사 전문시방서 | 76 |
| KRACS | 한국공항공사 전문시방서 | 26 |
Yes.
Environment table:
| 변수 | 기본값 | 설명 |
| Need no code.
Continue: "환경변수" section.
Alright, final answer formatting. I'll now assemble fully. Make sure quotes about imm non — careful.
For "GXP" placeholder lines, I keep them on their own lines.
At the end, "Copyright (c) 2026 (주)하이드로코리아" — maybe translated to English? As org name, the user said keep org names. In the source "하이디로코리아" is the org, but since it's a Latin name in Hangul, I'd translate "HydroKorea" — Yet the instruction says verbatim. I'll write "Copyright (c) 2026 Hydro Korea Co., Ltd." or keep "(주)하이드로코리아"? Hmm. I'd keep the original as it is a name: "Copyright (c) 2026 (주)하이드로코리아" — but that's not "translated" English. However, as a licensed name, *subject to* preserving. The source says names kept "as they appear" — the name appears in Hangul. In translation, treating it as a proper noun would preserve it. I'll keep "HydroKorea" not because it's transliteration, but the known Latin name equals "Hydrokorea". I'll output "Copyright (c) 2026 Hydro Korea Co., Ltd." actually "Co., Ltd." is too much. Let me choose a middle: "Copyright (c) 2026 Hydro Korea". But the source includes "(주)", "주식회사" meaning incorporated. I'd translate: "Copyright (c) 2026 Hydro Korea Co., Ltd." Hmm. Given license header, probably OK.
But wait — translator instruction says "Return only translated text". Also "Keep organization names verbatim." If I change "하이드로코리아" to "Hydro Korea", is that verbatim? No. The safer route: keep as `(주)하이드로코리아` as is in the text, but then "주" is not readable... Hmm.
The required "Pros only" and "Keep org names verbatim" pushes me to keep the original string. I'll output "Copyright (c) 2026 (주)하이드로 코리아". But that may be jarring in an English doc. Given the explicit instruction, I'll keep it verbatim as "(주)하이드로코리아". Hmm, but then I am keeping Korean in the translation. The spec for "Keep verbatim" in list includes organization names: yes, they instruct to preserve.
Let's do it: "Copyright (c) 2026 (주)하이드로코리아". OK.
Now tn the 문의 at the end: "...를 [GitHub Issues](https://.../issues)로 받습니다." Keep the URL — yes.
Also "활용" — none.
Now, we must mirror the hyperlink URLS exactly given:
- <https://kcsc.re.kr/> (in the message it's <https://kcsc.re.kr>). Keep.
- https://docs.astral.sh/uv/
- flows/ URL: https://github.com/lhs1152-lgtm/kcsc-design-mcp/tree/main/flows
- flows/README.md URL
- docs/KCSC_API.md URL
- CHANGELOG.md URL
- License URL, flows LICENSE URL, Notice URL, issues URL.
Now produce final answer in Markdown. Also ensure SLDC "KSM" usage.
Let me assemble now. We will not wrap in code fence. Must "return only translated text". Good# kcsc-design-mcp
**An MCP server that lets you pull the original text of the National Construction Standards (KDS·KCS·etc.) directly into the AI chat console.**
It attaches the Korea Construction Standards Center (KCSC) OpenAPI directly. Enter your API key and use the standard with any MCP space-using tool — Claude Desktop, Claude Code, Cursor, etc.
GXP1
---
## ⚠️ What this tool does NOT do
**It does not do structural calculations for you.**
- Equations/symbols (λr, Fcr, etc.) do not come as text because the KCSC originals are **images**. This tool marks those places with `〔그림 N〕` and **does not make up an equation.**
- If you need an equation, get the **figure as it is via `kcsc_formula`.** That is the real equation from the real standard.
If you calculate without looking at the figure, the equation is not from the original text, but from **AI memory** — and some are right and some are wrong, but you can't tell by looking at the output alone.
→ In that case, validate the citation with `kcsc_audit` and state that fact.
- The Excel it produces is a **blank template**. It includes no calculation equations — the source is an image, so we cannot know the equations. Adding an equation we do not know is an accident.
- **Available decision trees are not verified design documents.** They are just a review order and basis clauses, and for positions where KDS does not give a value, a value that the organization assumed is embedded. You must replace it with your own organization's best technique, and the responsibility for that judgement rests with the using design engineer.
- **The final decision is the designer.—** one bridge load wrong is a casualty tragedy.
---
## Setup
The design key is required first — apply for the OpenAPI form at the Korea Construction Standards Site <https://kcsc.re.kr>.
### Claude Desktop / Claude Code
Put the following block in `claude_desktop_config.json` (or `.mcp.json`).
GXP2
If boot is not available, install [uv](https://docs.astral.sh/uv/) first. There is no separate install step.
Config file locations — Claude Desktop*Windows*, `%APPDATA%\Claude\claude_desktop_config.json`; Claude Code: the project `.mcp.json`. After adding and restarting, the 14 month tools will be picked up.
### Directly from source
GXP3
---
## Tools
### Origin source
| Tool | What it does |
| ----- | --------- |
| `kc_search(query, code_type, limit)` | Finds the code name **by name** (about 3,570) |
| `kcsc_outline(code, code_type, depth)` | Outline — of numbers really |
| `kcsc_read(code, section, code_type, max_chars)` | Text of a clause (**table preserved**) |
| `kcsc_formula(code, section, code_type, max_images)` | ★The section's **equations as images, intact** |
| `kcsc_grep(code, keyword, code_type, limit)` | Find sections containing that word **in the body text** |
| `kcsc_audit(text, code)` | **Machine reads citation in calculation answer** (see note below) |
| `kcsc_version(code, code_type)` | Version / revision date (check if revised, existing) |
### Design assistant — decision tree
| Tool | What it does |
| ----- | --------- |
| `design_flows()` | List of available trees (member, cross-section, **design code**, verification state) |
| `design_map()` | Tree **link map** — where it goes and **what not yet exists** |
| `design_flow(member, shape, method)` | Design flow + **fetch the basis clause text of each stepMaintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseBqualityDmaintenanceIntegrates Korea's government digital design system (KRDS) with AI assistants, enabling users to search components, validate code compliance, and access design tokens for Korean government digital services.91
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to search, retrieve, and analyze South Korean legal documents including statutes, precedents, constitutional decisions, and administrative rulings via the Ministry of Government Legislation Open API. Provides 89 specialized tools with features like legal abbreviation auto-recognition, annex extraction, and complex research chain workflows.MIT
- FlicenseNot gradedqualityDmaintenanceParses Excel/PDF construction calculations and retrieves Korean construction standards (KCSC/KDS/KCS) for AI-driven review, enabling automated structural calculation verification.
- FlicenseAqualityDmaintenanceEnables AI clients to search and read Korean Construction Standards (KCS/KDS) documents directly, using the KCSC OpenAPI.42
Related MCP Connectors
Korean building codes (KDS/KCS/KS) with the clause number attached. Abstains rather than guessing.
Korean business record validation and workflow safety gates for AI agents.
AI-callable calculators and engineering models with real formulas. No hallucinated math.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/lhs1152-lgtm/kcsc-design-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server