Typst MCP Server
# Typst MCP Server
A Model Context Protocol (MCP) server that provides Typst documentation to Claude Code and other MCP clients.
## Prerequisites
- Python 3.12 or higher
- [uv](https://docs.astral.sh/uv/) package manager
## Quickstart
Run the following command to add the Typst MCP server to your project-scope Claude Code configuration:
```bash
claude mcp add typst-mcp -s project -- uv run --with "git+https://github.com/FujishigeTemma/typst-mcp" typst-mcp serve
```
Or manually add it to your `.mcp.json` configuration file:
```json
{
"mcpServers": {
"typst-mcp": {
"type": "stdio",
"command": "uv",
"args": [
"run",
"--with",
"git+https://github.com/FujishigeTemma/typst-mcp"
"typst-mcp",
"serve"
],
"env": {}
},
}
}
```
### 2. Start using Typst capabilities
Once configured, you can ask Claude Code to help you with Typst documentation. For example:
```
Add a Tabel of Contents to index.typ
```
```
Explain this Typst syntax: #set page(paper: "a4", margin: 2cm)
```
## Documentation
### Tools
#### `typst_search`
Search through Typst documentation for specific topics, functions, or syntax.
**Parameters:**
- `query` (string): Search term or phrase to find in Typst documentation
**Returns:** List of relevant documentation sections with titles, descriptions, and file paths.
**Example:**
```json
{
"name": "typst_search",
"arguments": {
"query": "table formatting"
}
}
```
#### `typst_browse`
Browse the Typst documentation structure as a hierarchical tree.
**Parameters:**
- `depth` (integer, optional): Maximum depth to traverse (default: 0 for full depth)
- `sub_directory` (string, optional): Subdirectory to explore (default: "." for root)
**Returns:** Tree structure of documentation files and directories.
**Example:**
```json
{
"name": "typst_browse",
"arguments": {
"depth": 2,
"sub_directory": "reference"
}
}
```
#### `typst_read`
Read the content of a specific Typst documentation file.
**Parameters:**
- `path` (string): Relative path to the documentation file
**Returns:** Full content of the specified documentation file in markdown format.
**Example:**
```json
{
"name": "typst_read",
"arguments": {
"path": "reference/layout/table.md"
}
}
```
### Development
#### Setting up development environment
```bash
git clone https://github.com/FujishigeTemma/typst-mcp.git
cd typst-mcp
uv sync --dev
```
#### Running tests
```bash
uv run --frozen pytest
```
#### Code formatting
```bash
uv run --frozen ruff format .
uv run --frozen ruff check . --fix
```
#### Type checking
```bash
uv run --frozen ty
```
### License
MIT License - see LICENSE file for details.
### Related Projects
- [Typst](https://typst.app/) - The Typst typesetting system
- [MCP Python SDK](https://github.com/modelcontextprotocol/python-sdk) - Model Context Protocol SDK for Python
- [Claude Code](https://docs.anthropic.com/en/docs/claude-code) - AI-powered coding assistantTDQS
Scored across 3 tools
Each tool has a clearly distinct purpose: browse for exploring the documentation hierarchy, read for accessing specific file content, and search for finding information by query. There is no overlap in functionality, making tool selection straightforward for an agent.
All tool names follow a consistent 'typst_verb' pattern (typst_browse, typst_read, typst_search), using snake_case and clear action verbs. This predictability enhances usability and reduces cognitive load.
With 3 tools, the server is well-scoped for its purpose of interacting with Typst documentation. Each tool serves a distinct and essential function (browse, read, search), and there are no extraneous tools, making the set efficient and focused.
The tool surface fully covers the core needs for documentation interaction: browsing the structure, reading specific content, and searching for information. This provides a complete workflow without gaps, allowing agents to navigate and retrieve documentation effectively.