typst-app-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| TYPST_BIN | No | Path to the typst CLI used by typst_compile. | typst |
| TYPST_EMAIL | No | Email for typst.app password login. The session is cached in ~/.cache/typst-app-mcp/session (0600) and renewed automatically. | |
| TYPST_SESSION | No | Alternative to password login: the value of the `__Http-typst-session` cookie from a signed-in browser. Required for accounts with 2FA. | |
| TYPST_PASSWORD | No | Password for typst.app password login, used together with TYPST_EMAIL. | |
| TYPST_OUTPUT_DIR | No | Directory where compile output goes. | ~/.cache/typst-app-mcp/output |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| typst_whoamiA | Show the signed-in typst.app account and its workspaces (personal + teams with their IDs). Use the team IDs for typst_create_project. |
| typst_list_projectsA | List typst.app projects: personal, team and shared-with-me, newest first. Filter with query (case-insensitive substring of the project name). Returns IDs needed by every other tool. Example: "Find my thesis project" -> query="thesis". |
| typst_get_projectA | Show one project: all files (paths, text/binary, IDs), main file, compiler pin, comment counts, share links, members and invitations. |
| typst_search_templatesA | Search Typst Universe templates (latest versions) to start a project from. Pass the chosen name to typst_create_project. Examples: "IEEE paper" -> query="ieee"; "German thesis" -> query="thesis". |
| typst_read_fileA | Read a file from a project. Text files (.typ, .bib, ...) return their content; images are returned inline; other binaries need save_to. Use start_line/end_line for long files. Use line_numbers=true when you plan comments on line ranges. |
| typst_write_fileA | Create a text file or replace its entire content. Collaborators in the web editor see the change live. Prefer typst_edit_file for changes to part of an existing file. Folders are created implicitly by the path. |
| typst_edit_fileA | Replace exact text in a text file, like a find-and-replace that must match precisely (whitespace included). Each old_string must occur exactly once unless replace_all=true. Edits apply in order; if one fails, nothing is saved. Only the changed span is sent, so concurrent edits by collaborators are preserved. |
| typst_upload_fileA | Upload a local file (image, font, .bib, data, ...) or a whole folder into a project. Existing files with the same path are replaced. Hidden files and folders are skipped. Example: local_path="/home/me/figures", remote_path="figures". |
| typst_rename_fileA | Rename or move files inside a project. Moving to a new folder is just a new path. Remember to update #include/#import paths that point to them. |
| typst_delete_filesA | Permanently delete files from a project. Confirm with the user before deleting anything they did not explicitly ask to remove. |
| typst_download_projectA | Download all files of a project into a local directory (created if missing; existing files with the same paths are overwritten). Useful for backups, git or local editing. |
| typst_create_projectA | Create a new project, empty or from a Typst Universe template (find one with typst_search_templates). Put it into a team with team_id from typst_whoami. Returns the new project ID. |
| typst_duplicate_projectB | Copy a project (all files) into a new project, optionally into a team. |
| typst_update_projectA | Rename a project, set its main (previewed/compiled) file, or pin the compiler version used by the web app. |
| typst_delete_projectA | Permanently delete a whole project. Only on explicit user request. confirm_name must equal the project's exact name as a safety check. |
| typst_set_share_linksA | Turn the project's anyone-with-the-link URLs on or off for read, review and write access, and return the current links. Omitted flags stay unchanged. |
| typst_invite_memberA | Invite someone to a project by email. typst.app sends them an invitation. Ask the user before inviting anyone. |
| typst_update_memberA | Change an existing member's access. user_id comes from typst_get_project. |
| typst_remove_memberB | Remove a member from a project. user_id comes from typst_get_project. |
| typst_revoke_invitationB | Withdraw a pending invitation by email. |
| typst_list_commentsA | List review comments of a project with file, line, the commented text and replies. Resolved comments only with include_resolved=true. |
| typst_add_commentA | Add a review comment to a text file, anchored either on exact text (anchor_text, plus occurrence if it is not unique) or on a line range. The comment stays attached to that text even when the file changes. |
| typst_reply_commentB | Reply to a comment thread. comment_id comes from typst_list_comments. |
| typst_resolve_commentA | Mark a comment thread as resolved, or reopen it with resolved=false. |
| typst_delete_commentA | Permanently delete a comment thread. Prefer typst_resolve_comment unless the user asks to delete. |
| typst_compileA | Compile a project with the local typst CLI and return errors/warnings with file and line, plus the output path. Use it after edits to check the document builds. format 'png' with preview_pages>0 returns page images inline so you can look at the layout. Packages (@preview/...) are downloaded automatically. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 26 tools
Tools are organized around clearly distinct resources (projects, files, comments, members, sharing, compile), and descriptions actively steer between near-neighbors like typst_write_file vs typst_edit_file vs typst_upload_file and typst_delete_comment vs typst_resolve_comment. The only residual overlap is among the file-mutation trio, which is handled explicitly rather than left ambiguous.
Every tool follows the same typst_<verb>_<noun> snake_case pattern with a uniform prefix, covering create/get/list/update/delete/duplicate for projects and read/write/edit/upload/rename/delete/download for files. Pluralization (typst_delete_files) mirrors the fact that the operation takes multiple paths, so it is purposeful rather than inconsistent.
At 26 tools this sits just past the comfortable range, and the surface splits into six sub-domains (projects, files, comments, members, sharing, compile). Nearly every tool earns its place, but a few low-frequency ones (typst_revoke_invitation, typst_duplicate_project, typst_whoami) inflate the count.
Full lifecycle coverage exists across projects (create/list/get/update/delete/duplicate), files (read/write/edit/upload/rename/delete/download) and comments (list/add/reply/resolve/delete), plus membership and share links. Minor gaps remain: no cross-file content search, no comment editing, and no way to list members/invitations outside typst_get_project.