filevine-mcp
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., "@filevine-mcpshow my active cases"
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.
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.
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
Personal Access Token (PAT)
Go to Filevine Settings → Access Tokens → Generate PAT
Copy and save securely
Client Credentials
Go to Settings → Client Secrets → Create Client ID + Client Secret
Valid for 1 year, can be rotated anytime
Copy both values
Organization & User IDs (auto-discovered on first auth call)
The server will discover these from
/v2/users/meon 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 build5. Run the Server
# Start the server
npm start
# Or use MCP inspector for debugging
npm run inspectThe 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.encTokens auto-refresh before expiry (3600s TTL). Call logout to clear stored tokens.
Related MCP server: filevine-mcp
Tools (15 Total)
Authentication (3 tools)
Tool | Purpose |
| Exchange PAT for access token and cache org/user IDs |
| Check authentication status and token expiry |
| Clear stored tokens |
Cases — Projects (2 tools)
Tool | Purpose |
| List cases (active, closed, pending); search by name/number |
| Get full case details by ID |
Contacts (3 tools)
Tool | Purpose |
| Search contacts by name, email, or phone across all cases |
| Get contact details by ID |
| List all contacts on a specific case |
Notes (2 tools)
Tool | Purpose |
| List case notes; supports general, phone_call, and internal types |
| Create a note (e.g., AI summary, findings, follow-ups) |
Documents (1 tool)
Tool | Purpose |
| List 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)
Tool | Purpose |
| List case tasks by status (open, completed, overdue) |
| Create 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)
Tool | Purpose |
| Map your firm's custom sections (medical records, liens, settlements, etc.) |
| Fetch 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:
Call
discover-schema→ see available sections (e.g., "MedicalRecords", "Liens")Use selector from discovery →
get-collectionto fetch PI-specific data
Rate Limiting & Performance
Filevine Rate Limits:
Endpoint | Limit |
Standard | 320 req/endpoint/min |
Billing | 250 req/endpoint/min |
Reports/Vitals | 5 req/endpoint/min |
VineSign | 10 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
Token Exchange (on first
authenticatecall)POST https://identity.filevine.com/connect/token client_id, client_secret, grant_type=personal_access_token, token=PAT → access_token (3600s), refresh_token, scopesOrg/User Discovery
GET /v2/users/me Authorization: Bearer {access_token} → {id: user_id, org_id: org_id}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.ioCA:
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 backoffToken Storage
Tokens are encrypted with AES-256-GCM and stored locally:
Location:
~/.oktopeak-filevine/tokens.encEncryption: AES-256-GCM with random IV + auth tag
Key:
ENCRYPTION_KEYfrom.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
Error | Cause | Fix |
| Missing env var | Generate key: |
| Invalid credentials | Verify Client ID, Secret, PAT from Filevine Settings |
| Token doesn't have required scopes | Regenerate PAT and Client Credentials in Filevine |
| Rate limit hit | Server auto-backs off; normal behavior under load |
| Selector not found | Run |
Development
TypeScript
Strict mode enabled
ES2022 target, Node16 modules
npm run build→build/directory
Dependencies
@modelcontextprotocol/sdk— MCP protocoldotenv— Environment loadingzod— Schema validation for tool parameterscrypto,fs,http— Node builtins
Debugging
npm run inspectOpens MCP inspector at http://localhost:3000 — test tools, check parameters, verify responses.
Testing
npm run build
npm start
# In another terminal:
npm run inspectResources
Official Filevine
API Docs: developer.filevine.io
Support: support.filevine.com/hc/en-us
Examples: github.com/Filevine/filevine-api-examples (C#, JS, Python)
Rate Limits: support.filevine.com/hc/en-us/articles/30948396130203
Reference Implementations
Treillage (Python): github.com/W1ndst0rm/Treillage — Rate limiter + token refresh reference
Compliance & Security
Data Handling: All Filevine data fetched on-demand — nothing cached locally
Token Storage: AES-256-GCM encrypted on disk; decryption requires
ENCRYPTION_KEYAudit Logging: Every tool call logged with redacted secrets
Rate Limiting: 300 req/min rolling window + 429 backoff protects your account
Write Access: Only
create-noteandcreate-taskmodify dataToken Refresh: Auto-refresh 5 min before expiry (3600s TTL)
See src/resources/compliance.ts for full compliance notice.
License
MIT — Oktopeak
Related
Clio MCP: github.com/oktopeak/clio-mcp — Similar connector for Clio practice management. npm:
@oktopeak/clio-mcpMyCase MCP: github.com/oktopeak/mycase-mcp — Similar connector for MyCase legal practice management. npm:
@oktopeak/mycase-mcpIntakeQ / PracticeQ MCP: github.com/oktopeak/IntakeQ — HIPAA-aware connector for IntakeQ/PracticeQ (healthcare). Audit logging on every PHI read/write. npm:
@oktopeak/intakeq-mcp
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 four open-source MCP connectors — Clio, MyCase, Filevine, and IntakeQ — and deploy them inside real practices with scoped credentials, audit logs, and workflows built around how your team actually works.
✉️ office@oktopeak.com — security reports welcome
💼 LinkedIn
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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/oktopeak/filevine-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server