Skip to main content
Glama
local-policy-mcp

local-policy-mcp

by cbjworld
README.md
# local-policy-mcp

**지자체 정책검색 MCP · 다른 지역은 어떻게 했을까?**

새로운 사업을 준비할 때, AI에게 다른 지자체의 사례·계획서·예산을 찾아달라고 물어보세요.
정책검색 MCP가 자료를 찾고 읽으면, 연결한 AI가 확인한 내용과 원문 링크를 정리합니다.

MCP는 **AI에 외부 도구를 연결하는 방식**입니다. 한 번 연결해 두면 평소 말하듯 질문할 수 있습니다.

## 이런 일을 도와줍니다

| 하고 싶은 일 | 도움받을 수 있는 내용 |
|---|---|
| 다른 지역 사례 찾기 | 광역·기초 지자체의 사업·계획 문서 검색 |
| 예산 확인하기 | 수록 예산에서 사업명·기관별 편성액과 원문 위치 조회 |
| 계획서 읽기 | 공개 PDF·HWP·HWPX에서 대상·내용·예산·기간의 근거 확인 |
| 사례 비교하기 | 문서별 조건과 금액을 인용문·출처와 함께 비교 |
| 우리 지역 도입 검토하기 | 참고 사례에서 확인한 사실과 우리 지역에서 정할 조건 정리 |
| 예상 비용 계산하기 | 입력한 인원·지원액·횟수로 예산 시나리오 계산 |

원문 조회는 **계획서 사업비·지원금 예산·홍보비와 근거 쪽수**를 먼저 정리합니다. 산식으로 구한 금액은 계산값으로 표시하고, 원문 안의 연령 조건이 서로 다르면 해당 항목에 함께 표시합니다.

### 이미지 PDF도 읽기

검색한 계획서에 필요한 항목이 부족하면, 글자가 없는 공개 PDF의 쪽을 자동으로 이어 읽습니다. 한 질문에서 최대 2쪽을 확인하고 항목이 채워지면 멈춥니다. 추가 쪽은 이렇게 요청할 수 있습니다.

> 그 첨부의 1쪽을 OCR로 읽어줘. 사업비와 지원 조건은 원본 쪽수와 함께 정리해줘.

OCR 결과에는 `OCR 판독값` 표시와 숫자 재검토 위치가 붙습니다. 양식·참고 지침·대상이 다른 첨부와 비공개 파일은 자동 OCR에서 제외합니다. 빠진 대상·기간·사업비·지원액은 같은 기관·부서·사업명·사업연도의 다른 문서로 최대 2건 보완하며, 문서별 출처와 서로 다른 값은 유지합니다. 제목에 연도가 없으면 본문의 사업기간까지 대조합니다.

빠른 텍스트 조회만 원하면 `research_policy` 또는 `research_open_document`에 `autoOcr: false`를 지정할 수 있습니다.

같은 파일 내용의 같은 쪽은 서버 메모리에 남은 최근 결과를 재사용합니다. 파일 내용이 바뀌면 새로 판독하며, 서버 재시작 후에는 다시 읽습니다. 본문 판독과 숫자 대조를 모두 유지합니다.

숫자가 다르게 읽힌 줄은 원본·정리 이미지로 다시 확인합니다. 두 재판독과 기존 비교 숫자·주변 문맥이 일치하고 인식 점수가 기준을 통과하면 숫자만 복원합니다. 한 쪽당 최대 4줄과 숫자 칸 8개를 재확인합니다. 감액 기호·쉼표는 원본 이미지의 모양도 대조하며, 수정 전후와 위치를 함께 제공합니다.

불확실한 금액 칸은 추가 숫자 모델로 원본·정리 이미지를 대조합니다. 감액 기호와 원문 위치를 확인하고 두 판독이 같은 숫자를 반환할 때 복원합니다. 날짜·한글 금액 단위·백분율은 한국어 모델로 필요한 칸만 추가 대조합니다. 백분율은 두 모델이 모두 같은 값으로 읽어야 채택합니다. v1.5.0의 고정 43쪽·152개 숫자 검사에서 기존 정답 138개를 유지하고 6개를 더 복원했습니다. [검증 범위 보기](RELEASE.md)

<details>
<summary>운영자: OCR 가속 서버 연결</summary>

가속 서버는 Tesseract 본문·비교 판독과 필요한 금액 칸의 PP-OCRv4 대조와 날짜·한글 단위 칸의 PP-OCRv5 한국어 대조를 처리합니다. 공개 첨부 확인·PDF 다운로드·이미지 생성은 MCP 서버에서 수행하며, 본문용 PNG는 픽셀을 바꾸지 않고 전송합니다. 가속 경로가 없거나 호출이 실패하면 기존 서버에서 계속 판독합니다.

`node prepare-ocr-relay.cjs <빈 배포 폴더>`로 실행 서버를 준비해 Vercel에 배포합니다. 두 서버에 같은 전용 비밀키 `POLICY_OCR_RELAY_TOKEN`을 저장하고, MCP 서버의 `POLICY_OCR_RELAY_URL`에 해당 프로젝트의 `https://…vercel.app/api/ocr` 주소를 설정합니다. 배포 보호용 자동화 키는 전용 비밀키의 SHA-256 앞 32자리로 설정합니다. 사용자용 MCP 주소는 그대로 사용합니다. 숫자 대조용 Python 함수와 고정 모델도 같은 프로젝트에 배포됩니다. 모델의 출처·라이선스는 [별도 안내](ocr-relay/THIRD_PARTY_NOTICES.md)에 있습니다.

</details>

<!-- budget-stats:start -->
**2026년 본예산 일반회계 세출 사업행 326,289건 수록**
<!-- budget-stats:end -->

## 처음 연결하기

**MCP 연결을 지원하는 AI 앱에서 서버 주소를 한 번 등록합니다.**
정책검색 MCP에 연결하기 위한 별도 로그인·API 키는 필요하지 않습니다.

```text
https://local-policy-mcp.onrender.com/mcp
```

| 입력 항목 | 넣을 내용 |
|---|---|
| 이름 | `local-policy-mcp` |
| 서버 주소 / URL | 위 주소를 그대로 복사 |
| 연결 방식 선택란이 있다면 | HTTP / Streamable HTTP |
| 인증 선택란이 있다면 | 인증 없음 / No sign in |

**Claude 웹·데스크톱에서 연결하는 예시**

1. Claude에 로그인하고 **Customize → Connectors**를 엽니다.
2. **+ Add → Add custom connector**를 선택합니다.
3. 이름과 위 서버 주소를 입력하고 **Continue**를 누릅니다.
4. 인증 방식을 묻는 화면에서는 **No sign in**을 선택하고 추가를 마칩니다.
5. 새 대화에서 추가한 커넥터를 사용하도록 선택하고, 도구 사용 승인이 나오면 승인합니다.

메뉴 이름과 이용 가능 여부는 앱·계정 설정에 따라 다릅니다. 조직 계정은 관리자가 커넥터를 등록한 뒤 사용할 수 있습니다. [Claude 공식 연결 안내](https://support.claude.com/en/articles/11175166-get-started-with-custom-connectors-using-remote-mcp)

Claude Code·Cursor 사용자와 직접 설치하려는 분은 [앱별 연결·설치 안내](USAGE.md)를 참고하세요.

## 첫 질문부터 업무 활용까지

아래 문장을 복사해 시작하세요. 사업명은 찾으려는 주제로 바꾸면 됩니다.

**① 사례 찾기**

> 정책검색 MCP로 전국의 청년 면접수당 지원 사업을 찾아줘. 면접비·면접활동비도 함께 찾고, 검색된 지자체 전체 목록과 원문 링크를 먼저 보여줘.

**② 같은 대화에서 비교 요청하기**

> 찾은 사례의 지원 대상, 지원액, 사업 예산을 표로 비교해줘. 원문을 읽은 내용과 제목으로만 찾은 내용을 구분해줘.

**③ 우리 지역 도입 검토하기**

> 우리 구에서도 도입하려고 해. 참고할 만한 운영 방식과 우리가 정해야 할 조건을 정리해줘.

**④ 예상 비용 계산하기**

> 200명에게 1인당 5만원씩 연 2회 지원하면 얼마야? 행정비용은 별도로 표시해줘.

이 계산은 입력한 조건에 따른 예상 비용입니다. 공식 편성 예산과 구분해서 보여줍니다.
검색 표현을 바꾸거나 다음 문서를 더 읽는 작업은 연결한 AI가 이어서 수행합니다.

## 사업비와 근거를 함께 정리합니다

- **계획서 사업비:** 원문의 사업비·소요예산·총사업비를 하나의 비교 항목으로 보여줍니다.
- **표기 금액과 계산값:** 지원금 산식은 계산값으로 구분하고, 지원금·홍보비·개인 지원액을 각각 제시합니다.
- **추가 자료 연결:** 빠진 항목은 같은 사업의 관련 문서를 최대 2건 더 읽어 출처별로 보완합니다.

원문에 별도 항목이 없으면 **별도 표기 없음**, 별표로 가려져 있으면 **가림 처리**로 표시합니다.

## 결과는 이렇게 읽으세요

| 표시 | 뜻 |
|---|---|
| 원문 근거 | 문서에서 읽은 내용입니다. 인용문·첨부명·원문 링크를 확인할 수 있습니다. |
| 제목으로 존재 추정 | 관련 문서 제목을 찾았습니다. 대상·금액 등 세부 조건은 별도 확인 대상입니다. |
| 미확인 | 이번에 읽은 자료에서 해당 정보를 확보하지 못했습니다. |
| 가림 처리 | 원문의 해당 내용이 별표 등으로 가려져 있습니다. |

업무 자료에 활용할 때는 **지자체명·사업연도·금액의 종류·원문 링크**를 함께 확인하세요.
사업 전체 예산, 주민 한 명의 지원액, 지자체 사이 교부금은 각각 구분합니다.
연결 근거가 확인된 광역·기초 공동사업은 한 사례로 묶고 문서별 금액을 유지합니다.

## 연결이 안 되거나 자료가 부족하다면

- **처음 응답이 늦어요.** 무료 서버가 켜지는 동안 잠시 기다린 뒤 다시 요청하세요.
- **AI가 연결된 도구가 없다고 해요.** 앱에 서버가 등록됐는지, 현재 대화에서 커넥터가 켜져 있는지 확인하세요. 설정 반영에 새 대화나 앱 재실행이 필요한 경우 앱 안내를 따르세요.
- **결과가 적어요.** “같은 사업의 다른 표현으로도 검색하고, 다음 후보 문서까지 확인해줘”라고 이어서 요청하세요.
- **예산이나 조건이 미확인이에요.** “다른 첨부와 관련 계획서를 더 확인해줘”라고 요청하세요. 비공개·이미지 문서는 제목과 확인한 범위가 표시됩니다.

## 현재 제공 범위

정보공개포털의 지자체 문서를 검색하고, 공개된 PDF·HWP·HWPX의 텍스트를 읽습니다.
예산 자료는 **2026년 본예산 일반회계 세출**이며, 특별회계·기금·세입은 제외합니다.
이미지 PDF는 `read_open_document`의 `ocr: true`, 공개 첨부 ID, `page`로 읽습니다. 일반 텍스트 추출이 되면 기존 결과를 사용하고, 글자가 없는 PDF에만 OCR을 실행합니다. 로컬 설치는 `npm run prepare:ocr`로 모델을 준비하고 Python 환경에 `requirements.txt`를 설치합니다. 공개 서버는 모델을 포함해 배포합니다. 서울 외부 원문 연결 경로 개선은 후속 범위입니다.

**버전 1.0** · 계획과 참고 지침의 근거 분리 · 두 사용자 원문 조사 동시 처리

[상세 기능·설치](USAGE.md) · [1.0 검증·운영](RELEASE.md) · [업데이트 이력](CHANGELOG.md) · [의견 남기기](https://github.com/cbjworld/local-policy-mcp/issues) · [MIT 라이선스](LICENSE)

TDQS

A3.9/5.0

Scored across 9 tools

Disambiguation3/5

Most tools target distinct resources or actions, but research_open_document/read_open_document and research_official_notice/read_official_source overlap in reading portal/official documents. research_policy is also broad and can shadow more specific search and read tools, even though the descriptions provide extensive guidance.

Naming Consistency5/5

All names use consistent snake_case with a clear verb_noun or verb_noun_phrase pattern such as research_policy, search_budget_projects, read_open_document, and build_research_brief. There is no mixing of camelCase or vague noun-only names.

Tool Count5/5

Nine tools is a well-scoped number for a municipal policy and budget research server, falling comfortably within the 3-15 range. The count reflects distinct research stages rather than excessive surface area.

Completeness4/5

The surface covers search, reading, evidence extraction, budget lookup, official notices, and brief synthesis, forming a coherent research lifecycle. Minor gaps remain, such as no explicit institution metadata listing or broader multi-case comparison beyond the 2-4 cases supported by build_research_brief.

Maintenance

ActivityMaintained
ResponsivenessNo issues