mcpField
F
filevine-mcp

filevine-mcp

Local
github.com/oktopeakLegal & Government1Updated 2w ago

About filevine-mcp

filevine-mcp is an open-source MCP server that lets Claude and compatible clients work with Filevine case-management data. It covers cases, contacts, notes, documents, tasks, and firm-specific collections, with encrypted token storage and audit logs.

Key features

  1. 0115 tools for Filevine data
  2. 02Search and retrieve cases and contacts
  3. 03List case notes and documents
  4. 04Create notes and tasks
  5. 05Discover and read custom collections
  6. 06Encrypted tokens and audit logging

Use cases

  1. 01Review case details and related contacts
  2. 02Retrieve notes and document metadata for a case
  3. 03Add follow-up notes or tasks
  4. 04Access firm-specific PI collection data

MCP support

Exposes Filevine operations as MCP tools for Claude and compatible MCP clients. Data is fetched on demand; only create-note and create-task modify Filevine records.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"oktopeak-filevine": {
"command": "npx",
"args": [
"-y",
"@oktopeak/filevine-mcp"
],
"env": {
"FILEVINE_CLIENT_ID": "<FILEVINE_CLIENT_ID>",
"FILEVINE_CLIENT_SECRET": "<FILEVINE_CLIENT_SECRET>",
"FILEVINE_PAT": "<FILEVINE_PAT>",
"FILEVINE_REGION": "<FILEVINE_REGION>",
"ENCRYPTION_KEY": "<ENCRYPTION_KEY>"
}
}
}
}
Run commandnpx -y @oktopeak/filevine-mcp
Environment variables to set
FILEVINE_CLIENT_IDSecretFilevine OAuth client ID (from Settings → Client Secrets)
FILEVINE_CLIENT_SECRETSecretFilevine OAuth client secret (from Settings → Client Secrets)
FILEVINE_PATSecretFilevine Personal Access Token (from Settings → Access Tokens)
FILEVINE_REGIONFilevine API region: 'us' or 'ca'
ENCRYPTION_KEYSecret64-character hex string (32 bytes) for AES-256-GCM token encryption

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npm@oktopeak/filevine-mcp1.0.1

Tools

15

Saved tool list · updated 2w ago

This tool takes no parameters.

Details

From the project README

Filevine MCP — Claude Integration

Built by Oktopeak — AI transformation & automation for law firms

Digital transformation for legal and healthcare businesses. We build AI integrations, workflow automation, and custom software your firm owns outright — including this connector. → Book a 30-min call

An open-source MCP (Model Context Protocol) server connecting Claude to Filevine practice management platform. Access cases, contacts, documents, notes, tasks, and custom PI data from Claude with automatic rate limiting and audit logging.

Supported Endpoints: 15 tools covering the Filevine v2 REST API.

Tip

Not a developer? You don't need to be.

The README below assumes someone comfortable editing a JSON config file. If that's not you or your team, we deploy this for law firms: scoped credentials, audit log wired in, one custom workflow, training.

→ Whole firm? The Firm Plan: $300 a month. Set up in your own cloud, every attorney signs in with their own login, one audit log, one automation built for you each month, no setup fee, cancel any time. → oktopeak.com/firm-plan/, or book a 30-min call

Jump to: Setup · Available tools · Compliance & security · Need it deployed for you? · Other connectors


Setup

1. Prerequisites
  • Node.js 18+
  • Filevine account with API access enabled
  • Client ID, Client Secret, and Personal Access Token (PAT) from your firm's Filevine settings
  • Claude Code, MCP client, or compatible application
2. Get Filevine Credentials
  1. Personal Access Token (PAT)

    • Go to Filevine Settings → Access Tokens → Generate PAT
    • Copy and save securely
  2. Client Credentials

    • Go to Settings → Client Secrets → Create Client ID + Client Secret
    • Valid for 1 year, can be rotated anytime
    • Copy both values
  3. Organization & User IDs (auto-discovered on first auth call)

    • The server will discover these from /v2/users/me on first run
3. Environment Variables

Copy .env.example to .env:

# Filevine OAuth client credentials
FILEVINE_CLIENT_ID=<from Settings → Client Secrets>
FILEVINE_CLIENT_SECRET=<from Settings → Client Secrets>
FILEVINE_PAT=<from Settings → Access Tokens>

# API region (us or ca)
FILEVINE_REGION=us

# Token encryption key (generate new one)
# node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
ENCRYPTION_KEY=<64-character-hex-string>
4. Install & Build
npm install
npm run build
5. Run the Server
# Start the server
npm start

# Or use MCP inspector for debugging
npm run inspect

The server listens on stdio and outputs connection status to stderr.

6. Authenticate

Before using any Filevine tools, call the authenticate tool:

Tool: authenticate
→ Exchanges PAT for access token
→ Discovers org_id and user_id
→ Stores encrypted tokens in ~/.oktopeak-filevine/tokens.enc

Tokens auto-refresh before expiry (3600s TTL). Call logout to clear stored tokens.


Tools (15 Total)

Authentication (3 tools)
ToolPurpose
authenticateExchange PAT for access token and cache org/user IDs
auth-statusCheck authentication status and token expiry
logoutClear stored tokens
Cases — Projects (2 tools)
ToolPurpose
list-casesList cases (active, closed, pending); search by name/number
get-caseGet full case details by ID
Contacts (3 tools)
ToolPurpose
search-contactsSearch contacts by name, email, or phone across all cases
get-contactGet contact details by ID
list-case-contactsList all contacts on a specific case
Notes (2 tools)
ToolPurpose
list-notesList case notes; supports general, phone_call, and internal types
create-noteCreate a note (e.g., AI summary, findings, follow-ups)
Documents (1 tool)
ToolPurpose
list-documentsList case documents with metadata (name, type, size, URL, dates)

Note: Returns document metadata only — no binary content. Use returned URLs to fetch document content if needed.

Tasks (2 tools)
ToolPurpose
list-tasksList case tasks by status (open, completed, overdue)
create-taskCreate a new task with title, description, assignee, due date

Known Issue: The targetDate field may be ignored by the Filevine API as of Aug 2025. Workaround: set tasks via UI.

Custom Data — Collections (2 tools)
ToolPurpose
discover-schemaMap your firm's custom sections (medical records, liens, settlements, etc.)
get-collectionFetch custom collection data using discovered selectors

Why collections matter: Unlike standardized case fields, each firm builds custom "Collection sections" for PI workflows. The discover-schema tool finds your firm's structure.

Example workflow:

  1. Call discover-schema → see available sections (e.g., "MedicalRecords", "Liens")
  2. Use selector from discovery → get-collection to fetch PI-specific data

Rate Limiting & Performance

Filevine Rate Limits:

EndpointLimit
Standard320 req/endpoint/min
Billing250 req/endpoint/min
Reports/Vitals5 req/endpoint/min
VineSign10 req/user/month

Implementation:

  • Token bucket at 300 req/min (conservative)
  • Exponential backoff on 429 Too Many Requests (1s → 2s → 4s → ... → 30s max)
  • Automatic wait before rate limit breach

API Details

Request Flow
  1. Token Exchange (on first authenticate call)

    POST https://identity.filevine.com/connect/token
    client_id, client_secret, grant_type=personal_access_token, token=PAT
    → access_token (3600s), refresh_token, scopes
    
  2. Org/User Discovery

    GET /v2/users/me
    Authorization: Bearer {access_token}
    → {id: user_id, org_id: org_id}
    
  3. Every API Request (3 required headers)

    Authorization: Bearer {access_token}
    x-fv-orgid: {org_id}
    x-fv-userid: {user_id}
    
Base URLs
  • US: https://api.filevine.io
  • CA: https://api.filevine.ca

Set via FILEVINE_REGION environment variable.

Authentication Headers

The biggest difference from other legal APIs: every request needs 3 headers, not just Authorization. Filevine uses x-fv-orgid and x-fv-userid to scope queries to the correct organization and user context.


Architecture

src/
├── index.ts                      # Server entry point
├── filevine-client.ts            # API client with 3-header middleware
├── auth/
│   ├── authTools.ts              # authenticate, auth-status, logout
│   ├── oauth.ts                  # PAT token exchange + org/user discovery
│   └── token-store.ts            # AES-256-GCM encrypted token storage
├── tools/
│   ├── cases.ts                  # list-cases, get-case
│   ├── contacts.ts               # search-contacts, get-contact, list-case-contacts
│   ├── notes.ts                  # list-notes, create-note
│   ├── documents.ts              # list-documents
│   ├── tasks.ts                  # list-tasks, create-task
│   └── collections.ts            # discover-schema, get-collection
├── resources/
│   ├── auth-status.ts            # Auth status resource (filevine://auth/status)
│   └── compliance.ts             # Compliance notice
├── audit/
│   └── logger.ts                 # Audit logging (JSON-lines)
└── utils/
    └── rate-limiter.ts           # Token bucket + 429 backoff
Token Storage

Tokens are encrypted with AES-256-GCM and stored locally:

  • Location: ~/.oktopeak-filevine/tokens.enc
  • Encryption: AES-256-GCM with random IV + auth tag
  • Key: ENCRYPTION_KEY from .env (64-char hex)
Audit Logging

Every tool call is logged to ~/.oktopeak-filevine/audit.log:

  • Timestamp, tool name, arguments (secrets redacted)
  • Outcome (success/error), user ID, case ID, result count
  • Supports ABA Opinion 512 compliance documentation

Error Handling

Common Errors
ErrorCauseFix
ENCRYPTION_KEY is not setMissing env varGenerate key: node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
PAT exchange failed (401)Invalid credentialsVerify Client ID, Secret, PAT from Filevine Settings
Failed to discover user infoToken doesn't have required scopesRegenerate PAT and Client Credentials in Filevine
429 Too Many RequestsRate limit hitServer auto-backs off; normal behavior under load
Unknown collection selectorSelector not foundRun discover-schema to find available selectors

Development

TypeScript
  • Strict mode enabled
  • ES2022 target, Node16 modules
  • npm run build → build/ directory
Dependencies
  • @modelcontextprotocol/sdk — MCP protocol
  • dotenv — Environment loading
  • zod — Schema validation for tool parameters
  • crypto, fs, http — Node builtins
Debugging
npm run inspect

Opens MCP inspector at http://localhost:3000 — test tools, check parameters, verify responses.

Testing
npm run build
npm start
# In another terminal:
npm run inspect

Resources

Official Filevine
Reference Implementations

Compliance & Security

  • Data Handling: All Filevine data fetched on-demand — nothing cached locally
  • Token Storage: AES-256-GCM encrypted on disk; decryption requires ENCRYPTION_KEY
  • Audit Logging: Every tool call logged with redacted secrets
  • Rate Limiting: 300 req/min rolling window + 429 backoff protects your account
  • Write Access: Only create-note and create-task modify data
  • Token Refresh: Auto-refresh 5 min before expiry (3600s TTL)

See src/resources/compliance.ts for full compliance notice.


License

MIT — Oktopeak


Need more than the connector?

The open-source connector reads your Filevine data and lets Claude work with it. That handles about 20% of what most firms eventually want.

We help two ways, depending on your scope:

→ Whole firm? The Firm Plan: $300 a month. Set up in your own cloud, every attorney signs in with their own login, one audit log, one automation built for you each month, no setup fee, cancel any time. → oktopeak.com/firm-plan/

→ Filevine Integration: For custom reporting, project schema work, document and intake automation, and the production software layer around Filevine. → oktopeak.com/services/filevine-integration/

Want a polished overview of this connector with FAQ? → oktopeak.com/filevine-mcp/

Want to talk first? → Book a 30-min scoping call


Other connectors by Oktopeak

We ship the same kind of connector for other practice management platforms. Each has its own overview page on oktopeak.com:

Same architecture, same audit logging, same encryption at rest. All MIT licensed.


Supporting this project

This connector is free, MIT licensed, and maintained by Oktopeak. It always will be — we don't take donations. If it saved you time, the things that actually help:

  • Star this repo. It is genuinely how other firms find it.
  • Tell another firm running Filevine.
  • Leave a review if we helped you directly.
  • Need it deployed, extended, or maintained for your firm? Commercial support — that is what funds the free work.

Who we are

Oktopeak — digital transformation for law firms and healthcare.

We're a 7-person in-house product team building AI solutions for regulated industries: AI integrations, workflow automation, and custom software our clients own outright. We maintain five open-source MCP connectors — Clio, MyCase, Filevine, Lawmatics, and IntakeQ — and deploy them inside real practices with scoped credentials, audit logs, and workflows built around how your team actually works.

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.