Skip to main content
Glama
lzongren
by lzongren

Quip MCP Server

CI License: MIT

A Model Context Protocol (MCP) server that provides native access to Quip documents from any MCP-compatible AI client (Claude Desktop, Claude Code, or custom integrations). Search, browse, and read Quip documents as clean markdown — enabling powerful workflows like querying interview schedules, reviewing application materials across folders, or generating preparation plans from scattered documents.

Features

  • Search documents — Full-text search across your Quip workspace

  • Browse folders — List folder contents or recursively explore folder trees

  • Read documents — Fetch document content converted to clean markdown

  • User info — Get current user profile and root folder IDs

Related MCP server: Reader MCP Server

Tools

Tool

Description

Parameters

quip_get_user

Get current user info and folder IDs

quip_get_folder

List threads and subfolders in a folder

folder_id

quip_get_document

Fetch document content as markdown

thread_id, max_length? (default 50k)

quip_search

Search documents by query

query, count? (default 20)

quip_browse_folder_tree

Recursively explore folder hierarchy

folder_id, max_depth? (default 3)

Setup

Prerequisites

Install & Build

npm install
npm run build

Configure with MCP Clients

Claude Code

claude mcp add -s user \
  -e QUIP_ACCESS_TOKEN="<your-token>" \
  -e QUIP_API_BASE="https://platform.quip.com" \
  quip -- node /path/to/quip-local-mcp/build/index.js

Claude Desktop

Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

{
  "mcpServers": {
    "quip": {
      "command": "node",
      "args": ["/absolute/path/to/quip-local-mcp/build/index.js"],
      "env": {
        "QUIP_ACCESS_TOKEN": "<your-token>",
        "QUIP_API_BASE": "https://platform.quip.com"
      }
    }
  }
}

Note: For custom Quip domains, change QUIP_API_BASE accordingly (e.g., https://yourcompany.quip.com).

Development

npm run dev          # Watch mode (recompile on changes)
npm run lint         # Type check (tsc --noEmit)
npm test             # Run tests
npm run test:watch   # Run tests in watch mode
npm run test:coverage # Run tests with coverage report

Architecture

src/
├── index.ts              # MCP server entry point (stdio transport)
├── quip-client.ts        # Quip REST API client (auth, rate limiting, retries)
├── html-converter.ts     # HTML → Markdown via Turndown with Quip-specific rules
├── types.ts              # TypeScript interfaces for Quip API responses
└── tools/
    ├── get-user.ts       # quip_get_user
    ├── get-folder.ts     # quip_get_folder
    ├── get-document.ts   # quip_get_document
    ├── search.ts         # quip_search
    └── browse-tree.ts    # quip_browse_folder_tree

Key Design Decisions

  • HTML → Markdown via Turndown — Quip returns HTML; Turndown converts it to clean markdown for LLM consumption with custom rules for Quip-specific elements (checklists, section wrappers, embedded spreadsheets).

  • Client-side rate limiting — Token bucket at 40 req/min (conservative vs Quip's 50/min limit) with exponential backoff on 429 responses.

  • Errors as text content — MCP best practice: errors are returned in tool output so the LLM can see and respond to them.

  • Large document truncation — Default 50k character limit with clear warning to prevent token overflow.

License

MIT

Available Tools

5 tools
quip_browse_folder_treeA

Recursively browse a Quip folder hierarchy, showing documents and subfolders as an indented tree

ParametersJSON Schema
NameRequiredDescriptionDefault
folder_idYesThe ID of the root folder to browse
max_depthNoMaximum depth to recurse (default 3)

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the recursive browsing behavior and tree-shaped output, which is helpful. However, it does not mention performance implications for large hierarchies, error behavior for invalid folder IDs, or explicitly confirm read-only semantics. 'Browse' implies non-mutating, but it's not explicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that front-loads the main verb and object, followed by clarifying details about the output. Every word earns its place, with no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with only two parameters and no output schema. The description adequately covers the purpose, the recursive nature, and the tree output format. It does not explain edge cases, but for a browse operation with complete schema coverage, this is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers both parameters with descriptions (100% coverage): folder_id as 'The ID of the root folder to browse' and max_depth with a default of 3. The description adds no additional semantic detail beyond what the schema already provides, so it meets the baseline without enriching parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Recursively browse a Quip folder hierarchy' with a specific verb and resource, and explicitly mentions the output as an 'indented tree'. This clearly distinguishes it from sibling tools like quip_get_folder, quip_get_document, and quip_search, which focus on retrieving individual items.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The recursive and tree-oriented wording implies usage when you need to explore the full hierarchy rather than fetch a single item, but it does not explicitly state when to use this tool over alternatives or list any exclusions. The guidance is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

quip_get_documentA

Get a Quip document's content as markdown

ParametersJSON Schema
NameRequiredDescriptionDefault
thread_idYesThe ID of the document thread to retrieve
max_lengthNoMaximum character length of the returned content (default 50000)

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the burden of behavioral disclosure. It does reveal that the output is markdown, but it omits other behavioral traits such as the effect of max_length (truncation), error handling for invalid thread IDs, and any authentication requirements. Although this is a read-only operation, key behaviors remain undisclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that includes the essential verb, resource, and output format with no wasted words. It is extremely concise and effectively structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only retrieval tool with a well-documented schema, the description is adequate: it states the resource and format, and the schema covers parameter details. Without an output schema, the description sufficiently indicates the return value (content as markdown), though it does not cover edge cases or error behavior. Overall, it is complete enough for straightforward use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides 100% coverage for both parameters (thread_id and max_length), including descriptions and defaults. The description adds no parameter-specific meaning beyond what the schema already documents, so it remains at the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Get a Quip document's content as markdown' uses a specific verb ('get') and resource ('Quip document's content'), and adds the output format ('as markdown'), which clearly distinguishes it from siblings like quip_get_user and quip_get_folder. It precisely identifies what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage through its purpose—use when you need a Quip document's content as markdown—but it does not explicitly state when to use this tool versus alternatives, nor does it mention any exclusions or prerequisites. No reference to sibling tools is made.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

quip_get_folderB

Get a Quip folder's contents, listing its child documents and subfolders

ParametersJSON Schema
NameRequiredDescriptionDefault
folder_idYesThe ID of the folder to retrieve

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden for behavioral disclosure, but it only states what the tool does. It does not communicate whether the operation is read-only, what happens for invalid folder IDs, auth requirements, pagination, or that only immediate children are returned without recursive traversal. This leaves important behavioral traits unspecified.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that front-loads the action and result. It is concise with no wasted words, making it easy to parse and understand quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter read operation with no output schema, the description is largely complete: it indicates the folder scope and the nature of the returned contents (child documents and subfolders). It slightly under-specifies whether folder metadata itself is included, but overall it is sufficient for the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides full coverage of the folder_id parameter ('The ID of the folder to retrieve'). The description adds no additional parameter-level detail, so it remains at the baseline of 3 for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get') and the resource ('a Quip folder's contents'), then specifies the expected result ('listing its child documents and subfolders'). This is specific and distinguishes it from siblings like quip_get_document and quip_get_user, while the term 'child' implies immediate contents, differentiating from quip_browse_folder_tree.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No usage guidance is provided. The description does not mention when to choose this tool over alternatives like quip_browse_folder_tree, nor any prerequisites or context that would help an agent decide. It states only the action, leaving the agent to infer usage from the tool name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

quip_get_userA

Get the current authenticated Quip user's profile, including name, email, and key folder IDs

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that the profile is for the current authenticated user, implying auth is required, but does not elaborate on side effects, return format specifics, or error conditions. For a simple read-only tool, this is moderate transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that directly states the tool's purpose and key return contents. There is no redundant information or filler, making it appropriately sized and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, no-output-schema tool, the description adequately covers the return values (name, email, folder IDs) and the authentication context. It does not mention error scenarios or additional fields, but the simplicity of the tool reduces the need for more detail.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, and the description correctly adds no parameter information. Per the baseline for 0-parameter tools, this scores 4; the description instead focuses on return values, which is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states 'Get the current authenticated Quip user's profile' with a specific verb ('Get') and resource ('current authenticated Quip user's profile'). It further lists what is included (name, email, key folder IDs), distinguishing this tool from siblings that deal with folders, documents, search, and browsing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for retrieving the current user's profile, but it does not explicitly mention when to use this tool versus alternatives. No exclusions or alternative tool references are provided, so guidance is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 5 tool updatesv1.0.0
    • First observedquip_browse_folder_tree
    • First observedquip_get_document
    • First observedquip_get_folder
    • First observedquip_get_user
    • First observedquip_search

TDQS

A3.8/5.0
Disambiguation5/5

Each tool targets a distinct resource or action: user, folder contents, document content, search, and folder tree browsing. Even get_folder and browse_folder_tree differ in depth (single level vs. recursive tree), avoiding confusion.

Naming Consistency5/5

All tools share the 'quip_' prefix and use a consistent verb_noun pattern (get_user, get_folder, get_document, search, browse_folder_tree). Renaming 'search' to 'search_documents' would be slightly more uniform, but the existing style is very predictable.

Tool Count5/5

Five tools is well-scoped for a read-only Quip client, covering user, folder, document, search, and hierarchical browsing. Each tool earns its place without redundancy or bloat.

Completeness3/5

The set is strong for reading and searching Quip content, but lacks any mutation tools (create, update, delete) for documents or folders. If the server is intended to be read-only, it's fairly complete; otherwise, it has notable gaps.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

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/lzongren/quip-local-mcp'

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