recommend_policy_funds
Recommends government and local policy funds for startups based on business type, stage, and region to access loans, subsidies, and mentoring programs.
Instructions
창업자 조건에 맞는 정부/지자체 정책지원금을 추천합니다. 융자, 보조금, 멘토링 프로그램 등을 안내합니다.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| business_type | Yes | 창업 업종 (예: 카페, 음식점, IT서비스) | |
| stage | Yes | 창업 단계 | |
| region | Yes | 창업 지역 (예: 서울, 경기 성남, 부산) | |
| founder_type | No | 창업자 유형 | |
| founder_age | No | 창업자 나이 |
Implementation Reference
- src/tools/policy-funds.ts:170-220 (handler)Main handler function implementing the recommend_policy_funds tool logic: matches policy funds to user criteria using helpers, generates tips, and formats ApiResult response.export async function recommendPolicyFunds( businessType: string, stage: "예비창업" | "초기창업" | "운영중" | "재창업", region: string, founderType?: "청년" | "중장년" | "여성" | "장애인" | "일반", founderAge?: number ): Promise<ApiResult<PolicyFundRecommendation>> { try { // 조건에 맞는 지원금 매칭 const matchedFunds = matchFunds( businessType, stage, region, founderType, founderAge ); // 추천 팁 생성 const tip = generateTip(matchedFunds, stage, founderType); return { success: true, data: { userProfile: { businessType, stage, region, founderType, }, matchedFunds, totalCount: matchedFunds.length, tip, }, meta: { source: DATA_SOURCES.bizinfoApi, timestamp: new Date().toISOString(), }, }; } catch (error) { console.error("정책지원금 추천 실패:", error); return { success: false, error: { code: "POLICY_FUND_FAILED", message: `정책지원금 조회 중 오류가 발생했습니다.`, suggestion: "기업마당(bizinfo.go.kr)에서 직접 검색해보세요.", }, }; } }
- src/index.ts:61-87 (registration)MCP server.tool registration for 'recommend_policy_funds', including description, Zod input schema, and wrapper that calls the handler.server.tool( "recommend_policy_funds", "창업자 조건에 맞는 정부/지자체 정책지원금을 추천합니다. 융자, 보조금, 멘토링 프로그램 등을 안내합니다.", { business_type: z.string().describe("창업 업종 (예: 카페, 음식점, IT서비스)"), stage: z.enum(["예비창업", "초기창업", "운영중", "재창업"]).describe("창업 단계"), region: z.string().describe("창업 지역 (예: 서울, 경기 성남, 부산)"), founder_type: z .enum(["청년", "중장년", "여성", "장애인", "일반"]) .optional() .describe("창업자 유형"), founder_age: z.number().optional().describe("창업자 나이"), }, async ({ business_type, stage, region, founder_type, founder_age }) => { const result = await recommendPolicyFunds( business_type, stage, region, founder_type, founder_age ); return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }], isError: !result.success, }; } );
- src/types.ts:72-95 (schema)TypeScript interfaces defining the PolicyFund and PolicyFundRecommendation structures used for input/output schema of the tool.export interface PolicyFund { id: string; name: string; organization: string; amount: string; type: "융자" | "보조금" | "멘토링" | "교육" | "복합"; deadline?: string; requirements: string[]; applyUrl: string; description?: string; } // 정책지원금 추천 결과 export interface PolicyFundRecommendation { userProfile: { businessType: string; stage: string; region: string; founderType?: string; }; matchedFunds: PolicyFund[]; totalCount: number; tip: string; }
- src/tools/policy-funds.ts:99-139 (helper)Helper function that filters the POLICY_FUNDS_DB based on business type, stage, region, founder type, and age.function matchFunds( businessType: string, stage: string, region: string, founderType?: string, founderAge?: number ): PolicyFund[] { return POLICY_FUNDS_DB.filter((fund) => { // 청년 조건 체크 if (fund.requirements.some((r) => r.includes("39세 이하"))) { if (founderAge && founderAge > 39) return false; if (founderType && !["청년", "일반"].includes(founderType)) { // 청년이 아니면 제외할 수 있지만, 나이 정보 없으면 포함 if (founderType === "중장년") return false; } } // 중장년 조건 체크 if (fund.requirements.some((r) => r.includes("40세 이상"))) { if (founderAge && founderAge < 40) return false; if (founderType === "청년") return false; } // 여성 조건 체크 if (fund.requirements.some((r) => r.includes("여성"))) { if (founderType && founderType !== "여성") return false; } // 지역 조건 체크 if (fund.requirements.some((r) => r.includes("서울"))) { if (region && !region.includes("서울")) return false; } // 폐업자 조건 체크 if (fund.requirements.some((r) => r.includes("폐업"))) { if (stage !== "재창업") return false; } return true; }); }
- src/tools/policy-funds.ts:142-168 (helper)Helper function that generates contextual tips based on matched funds, stage, and founder type.function generateTip( matchedFunds: PolicyFund[], stage: string, founderType?: string ): string { if (matchedFunds.length === 0) { return "현재 조건에 맞는 지원사업이 없습니다. 조건을 변경하거나 기업마당(bizinfo.go.kr)에서 직접 검색해보세요."; } const hasMentoring = matchedFunds.some((f) => f.type === "복합" || f.type === "멘토링"); const hasGrant = matchedFunds.some((f) => f.type === "보조금"); const hasLoan = matchedFunds.some((f) => f.type === "융자"); if (stage === "예비창업" && hasMentoring) { return "예비창업자는 멘토링이 포함된 프로그램(창업사관학교 등)을 추천드립니다. 창업 성공률을 높일 수 있습니다."; } if (hasGrant && hasLoan) { return "보조금은 상환 의무가 없어 유리하지만 경쟁률이 높습니다. 융자와 보조금을 함께 준비하세요."; } if (founderType === "청년") { return "청년 대상 지원사업이 많습니다. 여러 개를 동시에 신청하면 선정 확률이 높아집니다."; } return "신청 기한을 확인하고 서류를 미리 준비하세요. 사업계획서 작성이 가장 중요합니다."; }