CivilPlan MCP
LICENSE: MIT
PHILOSOPHY: Hongik Ingan (홍익인간) - reduce inequality in access to expert planning knowledge. This project is free to use, modify, and distribute.
CivilPlan is a FastMCP server for Korean civil, infrastructure, and building project planning workflows.
Scope
- FastMCP Streamable HTTP server on
http://127.0.0.1:8765/mcp - 19 planning tools across v1.0 and v1.1
- Local JSON and SQLite bootstrap data
- Excel, DOCX, SVG, and DXF output generators
- Scheduled update scaffolding for wage, waste, and standard cost references
Tool Catalog
v1.0
civilplan_parse_projectcivilplan_get_legal_procedurescivilplan_get_phase_checklistcivilplan_evaluate_impact_assessmentscivilplan_estimate_quantitiescivilplan_get_unit_pricescivilplan_generate_boq_excelcivilplan_generate_investment_doccivilplan_generate_schedulecivilplan_generate_svg_drawingcivilplan_get_applicable_guidelinescivilplan_fetch_guideline_summarycivilplan_select_bid_typecivilplan_estimate_waste_disposal
v1.1
civilplan_query_land_infocivilplan_analyze_feasibilitycivilplan_validate_against_benchmarkcivilplan_generate_budget_reportcivilplan_generate_dxf_drawing
Quick Start
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
copy .env.example .env
python server.py
The server starts on 127.0.0.1:8765 and exposes the MCP endpoint at /mcp.
Environment Variables
DATA_GO_KR_API_KEY=
VWORLD_API_KEY=
DATA_GO_KR_API_KEY: public data portal API key used for benchmark probing and future official integrationsVWORLD_API_KEY: VWorld API key used for address-to-PNU lookup and cadastral queries
Client Connection
Claude Desktop
{
"mcpServers": {
"civilplan": {
"command": "mcp-remote",
"args": ["http://127.0.0.1:8765/mcp"]
}
}
}
ChatGPT Developer Mode
ChatGPT cannot connect to localhost directly.
Expose the server with ngrok http 8765 or Cloudflare Tunnel, then use the generated HTTPS URL in ChatGPT Settings -> Connectors -> Create.
Project Domains
Every tool expects a domain parameter.
건축토목_도로토목_상하수도토목_하천조경복합
Landscape-specific legal and procedure data is not fully implemented yet. The server returns a readiness message instead of pretending the data is complete.
Data Notes
civilplan_mcp/data/land_prices/is intentionally empty in git.- Put downloaded land-price CSV, TSV, or ZIP bundles there for local parcel-price lookup.
- The loader supports UTF-8, CP949, and EUC-KR encoded tabular files.
Update Automation
The updater package includes scheduled jobs for:
- January 2, 09:00: wage H1 + waste + indirect rates H1
- July 10, 09:00: standard market price H2 + indirect rates H2
- September 2, 09:00: wage H2
If parsing fails, the server creates .update_required_* flag files and emits startup warnings.
Known Limitations
- Official land-use planning data still depends on unstable external services. The server tries official and HTML fallback paths, but some parcels may still return partial zoning details.
- Land-price lookup requires manually downloaded source files under
civilplan_mcp/data/land_prices/. - Nara benchmark validation currently probes API availability and falls back to local heuristics when the public endpoint is unavailable.
- Updater fetchers are conservative and may request manual review when source pages change.
Verification
Current local verification command:
pytest tests -q