건설/건축 공사 사업계획을 AI와 함께 만듭니다
이 번역은 AI가 원문 README를 옮긴 것입니다. 원문이 항상 우선합니다.
한국형 토목·건축 프로젝트 기획을 MCP 도구로 구조화하고 문서·도면·3D 렌더까지 생성하는 서버입니다.
CivilPlan MCP는 자연어 프로젝트 설명을 받아 인허가 검토, 물량 산정, 단가 조회, 투자 문서 작성, SVG/DXF 도면 생성, 3D Bird's-Eye View 렌더링까지 연결하는 20개 MCP 도구를 제공합니다.
주요 흐름은 프로젝트 파싱 → 법적·사업성 검토 → 산출물 생성입니다.
flowchart LR
A["사용자 요청<br/>Natural-language request"] --> B["civilplan_parse_project"]
B --> C["법적·기획 분석<br/>legal / planning analysis"]
B --> D["물량·단가·사업성<br/>quantity / pricing / feasibility"]
B --> E["문서·도면 생성<br/>docs / drawings"]
B --> F["3D 렌더 생성<br/>bird's-eye / perspective render"]
C --> G["MCP 응답 JSON"]
D --> G
E --> G
F --> G
| 대상 | 쓰는 이유 | ||
|---|---|---|---|
| 지자체·공공 발주 담당자 | 초기 타당성, 절차, 예산 초안이 빠르게 필요할 때 사용합니다. | ||
| 토목·건축 엔지니어 | 기획 단계 물량, 단가, 문서 초안을 자동화할 수 있습니다. | ||
| 개발사업 기획자 | 자연어 설명만으로 구조화된 프로젝트 데이터와 시각 자료를 얻을 수 있습니다. | ||
| AI 에이전트 운영자 | Claude, ChatGPT, 기타 MCP 클라이언트에 토목/건축 전용 도구 세트를 연결할 수 있습니다. |
| 항목 | 설명 | ||
|---|---|---|---|
civilplangeneratebirdseye_view |
Gemini 기반 3D Bird's-Eye View와 Perspective View를 한 번에 생성합니다. | ||
GEMINIAPIKEY 설정 |
.env와 Windows DPAPI 기반 setup_keys.py 양쪽에서 Gemini 키를 읽습니다. |
||
| 도메인 프롬프트 템플릿 | 도로, 건축, 상하수도, 하천, 조경, 복합 프로젝트별 렌더 문구를 분리했습니다. | ||
| 총 20개 MCP 도구 | 기존 기획/문서/도면 도구에 3D 시각화를 추가했습니다. |
| 도구 | 설명 | ||
|---|---|---|---|
civilplanparseproject |
자연어 프로젝트 설명을 구조화된 JSON으로 변환합니다. | ||
civilplangetlegal_procedures |
사업 조건에 맞는 인허가·환경 절차를 정리합니다. | ||
civilplangetphase_checklist |
단계별 체크리스트를 생성합니다. | ||
civilplanevaluateimpact_assessments |
영향평가 필요 여부를 검토합니다. | ||
civilplanestimatequantities |
개략 물량을 산정합니다. | ||
civilplangetunit_prices |
지역 보정이 반영된 단가를 조회합니다. | ||
civilplangetapplicable_guidelines |
적용 대상 설계 기준을 찾습니다. | ||
civilplanfetchguideline_summary |
기준 전문의 핵심 항목을 요약합니다. | ||
civilplanselectbid_type |
발주·입찰 방식을 추천합니다. | ||
civilplanestimatewaste_disposal |
건설폐기물 물량과 처리비를 계산합니다. | ||
civilplanqueryland_info |
토지·지목·용도지역 정보를 조회합니다. | ||
civilplananalyzefeasibility |
IRR, NPV, DSCR 등 사업성을 계산합니다. | ||
civilplanvalidateagainst_benchmark |
공공 기준이나 벤치마크와 비교합니다. |
| 도구 | 설명 | ||
|---|---|---|---|
civilplangenerateboq_excel |
BOQ Excel 파일을 생성합니다. | ||
civilplangenerateinvestment_doc |
투자·사업계획 Word 문서를 생성합니다. | ||
civilplangeneratebudget_report |
예산 보고서를 작성합니다. | ||
civilplangenerateschedule |
일정표 Excel 파일을 생성합니다. | ||
civilplangeneratesvg_drawing |
SVG 개략 도면을 생성합니다. | ||
civilplangeneratedxf_drawing |
DXF CAD 도면을 생성합니다. | ||
civilplangeneratebirdseye_view |
Bird's-Eye / Perspective PNG 렌더를 생성합니다. |
| 도메인 | 설명 | ||
|---|---|---|---|
토목_도로 |
도로, 진입로, 포장, 차선 중심 프로젝트 | ||
건축 |
건물, 복지관, 학교, 오피스 등 건축 프로젝트 | ||
토목_상하수도 |
상수도, 하수도, 우수도, 관로 중심 프로젝트 | ||
토목_하천 |
하천 정비, 제방, 배수, 수변 구조물 프로젝트 | ||
조경 |
공원, 녹지, 식재, 휴게 공간 프로젝트 | ||
복합 |
다분야가 섞인 복합 개발 프로젝트 |
git clone https://github.com/sinmb79/Construction-project-master.git
cd Construction-project-master
python -m venv.venv
# Windows.venv\Scripts\activate
# macOS / Linux
source.venv/bin/activate
python -m pip install -r requirements.txt
| 방법 | 명령 | 설명 | ||
|---|---|---|---|---|
.env 파일 |
copy.env.example.env (Windows)<br/>cp.env.example.env (macOS/Linux) |
로컬 개발용으로 가장 단순합니다. | ||
| 암호화 저장소 | python setup_keys.py |
Windows DPAPI에 키를 암호화 저장합니다. |
.env 예시는 아래와 같습니다.
DATA_GO_KR_API_KEY=
VWORLD_API_KEY=
GEMINI_API_KEY=
python server.py
실행 주소는 http://127.0.0.1:8765/mcp 입니다.
claude mcp add --transport http civilplan http://127.0.0.1:8765/mcp
| 항목 | 값 | ||
|---|---|---|---|
| 서버 유형 | HTTP MCP server | ||
| URL | http://127.0.0.1:8765/mcp |
||
| Windows 설정 파일 | %APPDATA%\Claude\claudedesktopconfig.json |
HTTP MCP 서버를 추가한 뒤 Claude Desktop을 재시작하세요.
| 단계 | 설명 | ||
|---|---|---|---|
| 1 | ChatGPT에서 Settings → Apps → Advanced settings → Developer mode를 켭니다. |
||
| 2 | Create app를 눌러 원격 MCP 서버를 등록합니다. |
||
| 3 | 로컬 서버는 직접 연결되지 않으므로 터널 URL이 필요합니다. |
cloudflared 예시는 아래와 같습니다.
cloudflared tunnel --url http://127.0.0.1:8765
터널이 만든 HTTPS URL을 ChatGPT 앱 생성 화면에 넣으세요.
| 항목 | 값 | ||
|---|---|---|---|
| 프로토콜 | Streaming HTTP | ||
| URL | http://127.0.0.1:8765/mcp |
AI에게 이렇게 말하세요
도로 신설 L=890m B=6m 아스콘 2차선 상하수도 경기도 화성시 2026~2028
호출되는 도구
civilplan_parse_project(
description="도로 신설 L=890m B=6m 아스콘 2차선 상하수도 경기도 화성시 2026~2028"
)
결과 예시
{
"project_id": "PRJ-20260404-001",
"domain": "토목_도로",
"sub_domains": ["토목_상하수도"],
"project_type": ["도로", "하수도"],
"road": {
"length_m": 890.0,
"width_m": 6.0,
"lanes": 2,
"pavement": "아스콘"
},
"region": "경기도",
"year_start": 2026,
"year_end": 2028,
"parsed_confidence": 0.92
}
AI에게 이렇게 말하세요
경기도 공공 도로 사업(총사업비 10.67억, 연장 890m)에 필요한 인허가를 정리해줘
호출되는 도구
civilplan_get_legal_procedures(
domain="토목_도로",
project_type="도로",
total_cost_billion=10.67,
road_length_m=890,
development_area_m2=None,
region="경기도",
has_farmland=False,
has_forest=False,
has_river=False,
is_public=True
)
결과 예시
{
"summary": {
"total_procedures": 3,
"mandatory_count": 2,
"optional_count": 1,
"estimated_prep_months": 12,
"critical_path": [
"도시·군관리계획 결정",
"개발행위허가",
"소규모환경영향평가"
]
},
"timeline_estimate": {
"인허가완료목표": "착공 18개월 전"
}
}
AI에게 이렇게 말하세요
위 프로젝트로 개략 평면도 SVG를 만들어줘
호출되는 도구
civilplan_generate_svg_drawing(
drawing_type="평면도",
project_spec=project_spec,
quantities=quantities,
scale="1:200",
output_filename="road-plan.svg"
)
결과 예시
{
"status": "success",
"file_path": "output/road-plan.svg",
"drawing_type": "평면도",
"quantity_sections": ["earthwork", "pavement", "drainage"]
}
AI에게 이렇게 말하세요
이 도로 사업을 발표용 3D 조감도와 사람 시점 투시도로 만들어줘
호출되는 도구
civilplan_generate_birdseye_view(
project_summary="경기도 화성시 도로 신설 890m, 폭 6m, 2차선 아스콘 포장, 상하수도 포함",
project_spec=project_spec,
svg_drawing="<svg>...</svg>",
resolution="2K"
)
결과 예시
{
"status": "success",
"project_id": "PRJ-20260404-001",
"model": "gemini-3-pro-image-preview",
"resolution": "2K",
"reference_image_path": "output/PRJ-20260404-001_reference.png",
"birdseye_view": {
"status": "success",
"path": "output/PRJ-20260404-001_birdseye.png"
},
"perspective_view": {
"status": "success",
"path": "output/PRJ-20260404-001_perspective.png"
}
}
Construction-project-master/
├─ server.py # 서버 실행 진입점
├─ setup_keys.py # 암호화 키 저장 유틸
├─ requirements.txt # 런타임 의존성
├─ pyproject.toml # 패키지 메타데이터
├─ README.md # 사용 가이드
├─ civilplan_mcp/
│ ├─ __init__.py # 버전 정보
│ ├─ config.py # 설정·경로·API 키 로딩
│ ├─ models.py # 도메인 enum
│ ├─ secure_store.py # DPAPI 키 저장
│ ├─ prompts/
│ │ └─ birdseye_templates.py # 도메인별 렌더 프롬프트
│ ├─ services/
│ │ └─ gemini_image.py # Gemini 이미지 래퍼
│ ├─ tools/
│ │ ├─ birdseye_generator.py # 3D 렌더 도구
│ │ ├─ drawing_generator.py # SVG 도면 생성
│ │ ├─ dxf_generator.py # DXF 도면 생성
│ │ └─...