Clio MCP Server
Click on "Deploy 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., "@Clio MCP Serverlist my open matters and show the client and responsible attorney"
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.
Clio MCP Server
An MCP server for the Clio Manage API (v4), the practice-management platform used by law firms. It lets an AI agent read a firm's matters, contacts, time and expense entries, tasks, logged communications, document metadata, calendar entries and bills, and, on explicit request, create or update matters, contacts, tasks and time / expense entries.
Transport: MCP Streamable HTTP at
POST /mcp, health probe atGET /healthStateless and multi-tenant: credentials arrive on every request as HTTP headers and are never stored; every tool is listed from the first
tools/listPython 3.12, uv, FastMCP, httpx
License: Apache-2.0, Copyright 2026 MSPbots.ai
Authentication headers
Send either X-Clio-Access-Token or X-Clio-Refresh-Token + X-Clio-Client-Id +
X-Clio-Client-Secret. Sending all four is best: the access token is used directly and is
refreshed automatically when Clio rejects it.
Header | Required | Type | Default | Allowed values | Description | Example |
| One of | string | none | - | Clio OAuth access token (a leading |
|
| One of | string | none | - | Clio OAuth refresh token, used to obtain a new access token |
|
| With refresh token | string | none | - | Client id (app key) of the Clio developer application |
|
| With refresh token | string | none | - | Client secret (app secret) of the Clio developer application |
|
| No | string |
|
| Region that hosts the Clio account |
|
Where to get them:
In the Clio Developer Portal of the account's region (
developers.clio.com,ca.developers.clio.com,eu.developers.clio.comorau.developers.clio.com) create an application and note its App Key (client id) and App Secret (client secret). Give it read access to Matters, Contacts, Activities, Tasks, Communications, Documents, Calendars and Bills, and write access only to the areas the agent should change.Authorise the application for the firm's Clio account with the standard OAuth authorisation-code flow (
/oauth/authorizethen/oauth/tokenon the region's host). The token response contains the access token (valid for 30 days) and the refresh token (does not expire). Tokens from one region do not work in another.The region is the one in the account's Clio URL:
app.clio.com=us,ca.app.clio.com=ca,eu.app.clio.com=eu,au.app.clio.com=au.
How credentials are sent to Clio: every call is Authorization: Bearer <access token> to
https://{region host}/api/v4/.... When Clio answers 401 (or no access token was sent) and a
refresh token with client id / secret is present, the server calls
POST https://{region host}/oauth/token with grant_type=refresh_token once and retries. The
refreshed token lives only for that request. Values that look like unresolved templates
(${...}) are treated as missing.
A request to /mcp without usable credentials gets HTTP 401 listing the accepted header sets;
an unknown region gets HTTP 400.
Related MCP server: clio-mcp
Tools
All tools return a JSON string. Records are referenced by numeric Clio ids. List tools return
{items, count, total, has_more, next_page_token} and take the paging parameters fields,
limit (1-200, default 50), page_token and order, plus created_since / updated_since
where Clio supports them. Without fields, every list and get tool returns a useful default
field set (Clio itself returns only id and etag); pass fields with Clio's nested syntax,
for example id,display_number,client{id,name}, to choose your own.
Tool | Purpose | Parameters (required in bold) |
| Describe the tools of one Clio area (changes nothing) | domain ( |
| List every Clio area and its tools (changes nothing) | - |
| Check the Clio connection: signed-in user, region and whether the token can be refreshed | - |
| List matters (cases/files) with number, description, status, client and responsible attorney | query, status, client_id, practice_area_id, responsible_attorney_id, billable, + paging |
| Get one matter by id, including attorneys, stage, billing method and dates | id, fields |
| Create a matter for a client (write) | description, client_id, client_name, status ( |
| Change fields of a matter; only the fields given change (write) | id, description, status ( |
| List contacts (people and companies) with type, primary email/phone and client flag | query, type ( |
| Get one contact by id, including all email addresses, phone numbers and addresses | id, fields |
| Create a person or company contact (write) | name, type ( |
| Change a contact; only the fields given change (write) | id, name, first_name, last_name, email, phone |
| List time and expense entries with date, hours, rate, total, note and matter | query, matter_id, user_id, task_id, type ( |
| Get one time or expense entry by id | id, fields |
| Log a time or expense entry; billable entries can end up on a client bill (write) | date, type ( |
| List logged emails and phone calls with subject, date, matter and participants (no body) | query, matter_id, contact_id, user_id, type ( |
| Get one logged email or phone call by id, including its body | id, fields |
| List tasks with status, priority, due date, assignee and matter | query, matter_id, assignee_id, assignee_type ( |
| Get one task by id, including its description | id, fields |
| Create a task and assign it (write) | name, description, assignee_id, assignee_type ( |
| Change a task; only the fields given change (write) | id, name, description, status ( |
| List document metadata: name, file name, size, type, folder, matter and contact | query, matter_id, contact_id, document_category_id, parent_id, scope ( |
| Get one document's metadata by id | id, fields |
| List calendar entries with title, time, location, matter and calendar owner | query, matter_id, calendar_id, from, to, is_all_day, + paging |
| Get one calendar entry by id, including its description and recurrence | id, fields |
| List bills (invoices) with number, state, dates, total, paid, balance due, client and matters | client_id, matter_id, state ( |
| Get one bill by id, including subject, memo, billing period and tax totals | id, fields |
Errors come back as a JSON envelope instead of an exception:
{"error": {"code": "unauthorized", "message": "Clio returned HTTP 401 for matters: ...", "retryable": false}}code is one of not_configured, unauthorized, not_found, invalid_argument,
rate_limited, upstream_error; Clio validation errors name the offending fields. Clio
allows about 50 requests per minute per access token. Reads are retried with backoff on 429,
5xx and network errors (honouring Retry-After); writes are retried only on 429, so a write
never runs twice.
Run locally
uv sync
uv run python -m clio_mcp # listens on 0.0.0.0:8080or with Docker:
docker build --platform linux/amd64 -t clio-mcp:dev .
docker run --rm -p 8080:8080 clio-mcp:devConfiguration (environment variables, all optional): MCP_HTTP_HOST (default 0.0.0.0),
MCP_HTTP_PORT (default 8080), LOG_LEVEL (default INFO). Credentials are never read
from the environment.
Testing example
# list tools
curl -s http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "X-Clio-Access-Token: your-access-token" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'
# open matters of one client
curl -s http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "X-Clio-Access-Token: your-access-token" \
-H "X-Clio-Region: us" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"clio_matters_list","arguments":{"client_id":123,"status":"open","limit":10}}}'Unit tests (no network access needed):
uv run pytestDelivery notes
All tools always listed. Older versions only listed navigation tools until one was called. Behind a stateless gateway that hid every other tool, so this version lists all 26 tools up front.
clio_navigateandclio_backremain for compatibility and only describe the tools.No interactive prompts. Older versions asked the user for missing values mid-call, which a stateless gateway cannot relay. The values Clio needs are now required parameters (
clio_matters_create.description,clio_contacts_create.name/type,clio_activities_create.date/type,clio_tasks_create.name/description/assignee_id). Aclient_namethat matches several contacts returns the candidates so the agent can ask the user and passclient_id.Default fields. List and get tools return a useful default field set instead of Clio's bare
id/etag, and lists return anext_page_tokenfor the next page.Contact updates. A new
email/phonereplaces the contact's primary entry in place instead of adding another entry on every update.Write tools. The 7 tools marked write change the firm's live records; their descriptions tell the agent to use them only on explicit request. Time entries take
quantityin seconds. There are no delete, billing or document-content tools.
License
This server cannot be deployed
Maintenance
Related MCP Connectors
JusPronto is case-management software for Brazilian law firms. Its remote MCP server (OAuth 2.1 with PKCE, per-permission scopes, audit log) lets Claude and ChatGPT read the firm's own cases, deadlines, agenda, recent court movements and case files with the page cited. Write actions require the lawyer's approval. Requires a JusPronto account.
Law firm management MCP: manage cases, clients, tasks, calendar and documents via Claude AI.
- OliaOAuthcom.kema-studio
Practice management for French law firms: matters, time entries and invoices from your AI agent.
Search U.S. case law, fetch opinions, and ask matter-aware legal questions over your documents.
Related MCP Servers
- AlicenseCqualityAmaintenanceEnables Claude to access and manage your law firm's MyCase account, including cases, clients, tasks, invoices, and more.1001MIT
- AlicenseNot gradedqualityAmaintenanceConnects Claude to Clio practice management, enabling AI-assisted access to matters, contacts, documents, tasks, and billing with audit logging and encryption for law firm compliance.299 npm25MIT
- AlicenseCqualityAmaintenanceEnables interaction with Rocketmatter legal practice management via natural language, covering matters, clients, tasks, time, invoices, calendar, documents, and trust accounting.86MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to read, create, and update legal practice data—cases with history and movements, clients, tasks, and financial transactions—using the firm's API token.MIT