create_page
Create new pages in Logseq with content and optional properties to organize your knowledge graph directly from AI assistants.
Instructions
새 페이지 생성. Logseq 프로퍼티 포함 가능
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | 생성할 페이지 이름 | |
| content | Yes | 페이지 내용 | |
| properties | No | Logseq 프로퍼티 (선택) |
Implementation Reference
- src/graph.ts:195-224 (handler)Core handler function that creates a new Logseq page by writing a .md file to the pages directory after performing security validations (name, content size, path traversal, symlink checks).async createPage(name: string, content: string, properties?: Record<string, unknown>): Promise<Page> { // 보안 검증: 화이트리스트 기반 이름 검증 this.validatePageName(name); const filePath = join(this.pagesPath, `${name}.md`); this.validatePath(filePath); // 보안 검증: 콘텐츠 크기 제한 (DoS 방지) this.validateContentSize(content); // Ensure pages directory exists await mkdir(this.pagesPath, { recursive: true }); // 보안 검증: 심링크 공격 방지 await this.checkSymlink(filePath); const fullContent = this.buildContent(content, properties); // 보안: TOCTOU 방지 - 'wx' 플래그로 원자적 생성 (파일 존재 시 실패) try { await writeFile(filePath, fullContent, { encoding: 'utf-8', flag: 'wx' }); } catch (e: any) { if (e.code === 'EEXIST') { throw new Error(`Page already exists: ${name}`); } throw e; } return this.readPage(name); }
- src/index.ts:266-272 (handler)MCP CallToolRequest handler switch case that validates input arguments using Zod schema and delegates execution to GraphService.createPage, returning the result as JSON.case 'create_page': { const { name: pageName, content, properties } = CreatePageSchema.parse(args); const page = await graph.createPage(pageName, content, properties); return { content: [{ type: 'text', text: JSON.stringify(page, null, 2) }], }; }
- src/index.ts:64-68 (schema)Zod schema used for runtime validation of create_page tool arguments within the tool handler.const CreatePageSchema = z.object({ name: z.string().max(MAX_NAME_LENGTH).describe('생성할 페이지 이름'), content: z.string().max(MAX_CONTENT_LENGTH).describe('페이지 내용'), properties: z.record(z.string().max(10000)).optional().describe('Logseq 프로퍼티 (선택, 문자열 값만)'), });
- src/index.ts:132-144 (registration)Tool registration in the TOOLS array provided to ListToolsRequest, including JSON Schema for input validation and tool description.{ name: 'create_page', description: '새 페이지 생성. Logseq 프로퍼티 포함 가능', inputSchema: { type: 'object' as const, properties: { name: { type: 'string', description: '생성할 페이지 이름' }, content: { type: 'string', description: '페이지 내용' }, properties: { type: 'object', description: 'Logseq 프로퍼티 (선택)' }, }, required: ['name', 'content'], }, },