Skip to main content
Glama
dweigend

Joplin MCP Server

by dweigend

update_note

Modify an existing note in Joplin by updating its title, content, folder location, or todo status using the note's ID.

Instructions

Update an existing note in Joplin.

Args: args: Note update parameters note_id: ID of note to update title: New title (optional) body: New content (optional) parent_id: New parent folder ID (optional) is_todo: New todo status (optional) Returns: Dictionary containing the updated note data

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
argsYes

Implementation Reference

  • MCP tool handler function for 'update_note'. It validates input using UpdateNoteInput schema, calls JoplinAPI.update_note, and returns success/error response.
    @mcp.tool() async def update_note(args: UpdateNoteInput) -> Dict[str, Any]: """Update an existing note in Joplin. Args: args: Note update parameters note_id: ID of note to update title: New title (optional) body: New content (optional) parent_id: New parent folder ID (optional) is_todo: New todo status (optional) Returns: Dictionary containing the updated note data """ if not api: return {"error": "Joplin API client not initialized"} try: note = api.update_note( note_id=args.note_id, title=args.title, body=args.body, parent_id=args.parent_id, is_todo=args.is_todo ) return { "status": "success", "note": { "id": note.id, "title": note.title, "body": note.body, "created_time": note.created_time.isoformat() if note.created_time else None, "updated_time": note.updated_time.isoformat() if note.updated_time else None, "is_todo": note.is_todo } } except Exception as e: logger.error(f"Error updating note: {e}") return {"error": str(e)}
  • Pydantic BaseModel schema defining input parameters for the update_note tool.
    class UpdateNoteInput(BaseModel): """Input parameters for updating a note.""" note_id: str title: Optional[str] = None body: Optional[str] = None parent_id: Optional[str] = None is_todo: Optional[bool] = None
  • Helper method in JoplinAPI class that constructs the PUT request to update a note via Joplin REST API and parses the response into JoplinNote object.
    def update_note( self, note_id: str, title: str | None = None, body: str | None = None, parent_id: str | None = None, is_todo: bool | None = None ) -> JoplinNote: """Update an existing note. Args: note_id: ID of note to update title: New title body: New content parent_id: New parent folder ID is_todo: New todo status Returns: Updated JoplinNote object """ data = {} if title is not None: data["title"] = title if body is not None: data["body"] = body if parent_id is not None: data["parent_id"] = parent_id if is_todo is not None: data["is_todo"] = is_todo response = self._make_request("PUT", f"notes/{note_id}", json=data) return JoplinNote.from_api_response(response)

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/dweigend/joplin-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server