Quip MCP Server
Provides tools to search documents, browse folders, read document contents as markdown, get user info, and recursively explore folder trees in a Quip workspace.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Quip MCP Serversearch for meeting notes about Q3 planning"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Quip MCP Server
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 |
| Get current user info and folder IDs | — |
| List threads and subfolders in a folder |
|
| Fetch document content as markdown |
|
| Search documents by query |
|
| Recursively explore folder hierarchy |
|
Setup
Prerequisites
Node.js 18+
A Quip API access token (generate one here)
Install & Build
npm install
npm run buildConfigure 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.jsClaude 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 reportArchitecture
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_treeKey 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 toolsquip_browse_folder_treeA
Recursively browse a Quip folder hierarchy, showing documents and subfolders as an indented tree
| Name | Required | Description | Default |
|---|---|---|---|
| folder_id | Yes | The ID of the root folder to browse | |
| max_depth | No | Maximum depth to recurse (default 3) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| thread_id | Yes | The ID of the document thread to retrieve | |
| max_length | No | Maximum character length of the returned content (default 50000) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| folder_id | Yes | The ID of the folder to retrieve |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
quip_searchB
Search Quip documents by query string
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Maximum number of results to return (default 20) | |
| query | Yes | The search query |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states that it searches, without confirming that it is read-only, describing the return format, or noting any limitations. This is a minimal disclosure that leaves side effects and outcomes unspecified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that immediately conveys the action and object. It contains no unnecessary words or repetition, earning a perfect conciseness score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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, but the description lacks important context such as what the results look like or any usage constraints. While the schema covers the parameters, the overall description is adequate but incomplete for an agent to fully understand the tool's behavior and expected use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with descriptions for both 'query' and 'count'. The tool description adds no additional meaning beyond restating that the search is by a query string, so it does not improve on the schema. Thus, the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb ('Search'), resource ('Quip documents'), and input ('query string'). It distinguishes itself from sibling tools like quip_get_document and quip_get_user, which are retrieval operations on specific entities, whereas this is a search operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention any exclusions or scenarios where a different tool would be more appropriate, leaving the agent to infer usage from the name alone.
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.
5 tool updates
v1.0.0- First observed
quip_browse_folder_tree - First observed
quip_get_document - First observed
quip_get_folder - First observed
quip_get_user - First observed
quip_search
TDQS
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.
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.
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.
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
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
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
An agent-first office suite Claude & ChatGPT read and write over one MCP URL.
Document-to-Markdown MCP server — convert PDF, Office and HTML into LLM-ready Markdown.
Related MCP Servers
- AlicenseAqualityDmaintenanceA Model Context Protocol server that enables AI assistants like Claude to directly read and edit Quip documents through a set of specialized tools.56ISC
- AlicenseAqualityCmaintenanceA Model Context Protocol server that connects MCP-compatible clients like Claude and VS Code to your Readwise Reader library, allowing them to list, retrieve, and update documents in your personal knowledge repository.711MIT
- AlicenseNot gradedqualityDmaintenanceA read-only Model Context Protocol server that enables LLMs to search, list, and read files from Google Drive and shared drives. It automatically converts Google Workspace documents like Docs, Sheets, and Slides into Markdown, CSV, and plain text formats for easy processing.33MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to read, search, create, and edit Quip documents through the MCP protocol.5ISC
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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