convert_resume_text
Convert plain text resumes into structured JSON Resume format by automatically identifying sections like personal information, work experience, and education for easier editing and formatting.
Instructions
将纯文本格式的简历内容转换为标准JSON Resume格式。系统会智能识别简历中的各个部分(如个人信息、工作经历、教育背景等),并按照国际通用的JSON Resume标准进行结构化处理,方便后续编辑和格式转换。
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| resumeText | Yes |
Implementation Reference
- src/index.ts:235-260 (handler)The MCP tool handler function for 'convert_resume_text'. It validates the input resumeText, calls novaCVService.convertTextToJsonResume(), formats the response using safeStringify, and handles errors by returning structured content.async ({ resumeText }, extra) => { if (!resumeText) { throw new Error("简历文本是必需的"); } try { const result = await novaCVService.convertTextToJsonResume(resumeText); return { content: [ { type: "text", text: safeStringify(result) } ], }; } catch (error: any) { return { content: [ { type: "text", text: `错误: ${error.message || "未知错误"}` } ], }; } }
- src/services/novacv.ts:149-192 (helper)Core helper method in NovaCVService that performs the actual API call to convert plain resume text to JSON Resume format via POST /api/v1/resumes/convert-text, normalizes the response structure, and handles errors.async convertTextToJsonResume(resumeText: string): Promise<any> { try { console.log("开始转换简历文本为JSON格式"); const response = await this.client.post('/api/v1/resumes/convert-text', { resumeText }); console.log("转换API响应状态码:", response.status); console.log("转换API响应头:", JSON.stringify(response.headers, null, 2)); console.log("转换API响应数据类型:", typeof response.data); // 如果直接返回简历数据,自动包装为标准格式 if (response.data && typeof response.data === 'object') { // 检查是否缺少标准响应结构 if (!response.data.success && !response.data.data && !response.data.error) { // 检查是否是简历数据结构 if (response.data.basics || response.data.work || response.data.education) { return { success: true, data: { jsonResume: response.data } }; } } // 标准化响应 - 确保jsonResume数据在一致的位置 else if (response.data.success && response.data.data) { // 如果有data.resumeData但没有data.jsonResume,复制数据 if (response.data.data.resumeData && !response.data.data.jsonResume) { response.data.data.jsonResume = response.data.data.resumeData; } // 如果有data.jsonResume但没有data.resumeData,复制数据 else if (response.data.data.jsonResume && !response.data.data.resumeData) { response.data.data.resumeData = response.data.data.jsonResume; } } } return response.data; } catch (error) { console.error("转换简历文本失败:", error); this._handleError(error); throw error; } }
- src/index.ts:229-261 (registration)Registration of the 'convert_resume_text' tool with the MCP server using server.tool(), including name, description, input schema, and handler reference.server.tool( "convert_resume_text", "将纯文本格式的简历内容转换为标准JSON Resume格式。系统会智能识别简历中的各个部分(如个人信息、工作经历、教育背景等),并按照国际通用的JSON Resume标准进行结构化处理,方便后续编辑和格式转换。", { resumeText: z.string() }, async ({ resumeText }, extra) => { if (!resumeText) { throw new Error("简历文本是必需的"); } try { const result = await novaCVService.convertTextToJsonResume(resumeText); return { content: [ { type: "text", text: safeStringify(result) } ], }; } catch (error: any) { return { content: [ { type: "text", text: `错误: ${error.message || "未知错误"}` } ], }; } } );
- src/index.ts:232-234 (schema)Zod input schema for the tool: requires a single string parameter 'resumeText'.{ resumeText: z.string() },
- src/index.ts:90-110 (helper)Utility function safeStringify used in tool handlers to safely convert API responses to displayable strings, handling errors and special cases.const safeStringify = (data: any): string => { try { // 特别处理API错误响应 if (data && data.error) { return `API错误: ${data.error.message || JSON.stringify(data.error)}`; } // 处理标准成功响应 if (data && data.success === true && data.data) { const responseData = data.data; if (responseData.fileUrl) { return `简历生成成功,下载地址: ${responseData.fileUrl}`; } } // 默认JSON字符串化 return JSON.stringify(data, null, 2); } catch (err) { return "API返回了结果,但无法转换为字符串展示(可能包含循环引用)"; } };