Ops MCP Server (Finamatik)
OfficialThis server lets MCP clients (like Claude Desktop or Claude Code) read and manage a company's operations data — contacts, deals, tasks, notes, inventory, and sales orders — through typed, logged tools, with read-only and safety controls.
Find and inspect contacts: search by name/company/email/phone/city; get a full contact view with deals, open tasks, recent notes, and orders.
Manage tasks: list tasks by status, assignee, or due date; create tasks with valid future dates; complete tasks idempotently.
Track sales pipeline: view deal stages, open value, and deals closing in 30 days; move deals through stages.
Check inventory: view stock levels, filter low-stock items, and validate availability before ordering.
Add notes: append timestamped notes to contact timelines (up to 2,000 characters).
Create sales orders: preview orders with
dry_run=truefirst, then commit withdry_run=false, which checks stock and decrements inventory.Safe by design: write tools are annotated so clients can ask before acting; setting
OPS_MCP_READ_ONLY=1removes all write tools; every call is logged toaudit.jsonl.Flexible deployment: runs over stdio for desktop clients or streamable HTTP for remote access, with a swappable SQLite backend for real CRM/ERP integration.
Ops MCP server
An MCP server (Python, official mcp SDK, FastMCP) that lets Claude Desktop, Claude Code or any MCP client work with a company's operations data through ten typed, logged tools over contacts, deals, tasks, notes, inventory and sales orders, plus three resources and a briefing prompt. Built and tested on sample data by Finamatik. The SQLite backend is one class (backend.py) and is the only thing to swap for a real CRM, ERP or project system.
Tool | Kind | Guardrail |
| read | query at least 2 characters, limit capped at 50 |
| read | full view: deals, open tasks, last notes, last orders |
| read | ISO date validated |
| read | |
| read | deals by stage, open value, closing in 30 days |
| write | 1 to 2,000 characters, contact must exist |
| write | no past due dates, assignee enum |
| write | idempotent |
| write | stage enum |
| write | stock check; preview first, commit only with dry_run=false |
Safety model: tool annotations (readOnlyHint, destructiveHint, idempotentHint) so clients can ask before writes; OPS_MCP_READ_ONLY=1 removes the write tools from the tool list entirely; every call is appended to audit.jsonl (timestamp, tool, arguments, ok or error, duration); validation errors come back as MCP tool errors the model can act on.
Install and run
pip install finamatik-ops-mcp
finamatik-ops-mcp # stdio, what Claude Desktop uses; seeds sample data on first start
OPS_MCP_READ_ONLY=1 finamatik-ops-mcp # read only: the write tools are not registered at allData lives in ~/.finamatik-ops-mcp/ (ops.db and audit.jsonl). Move it with OPS_MCP_HOME, or point at specific files with OPS_MCP_DB and OPS_MCP_AUDIT.
Claude Desktop, claude_desktop_config.json:
{ "mcpServers": { "ops-mcp": { "command": "finamatik-ops-mcp", "env": { "OPS_MCP_READ_ONLY": "0" } } } }Claude Code: claude mcp add ops-mcp -- finamatik-ops-mcp
Remote: OPS_MCP_TRANSPORT=streamable-http finamatik-ops-mcp serves /mcp on port 8000; put authentication in front of it.
From source:
git clone https://github.com/finamatik/ops-mcp-server && cd ops-mcp-server
pip install -e ".[test]"
python3 server.py # same server, run from the checkout
python3 -m pytest tests -q # 6 end to end tests through a real MCP client
npx @modelcontextprotocol/inspector --config inspector.config.json --server ops-mcpRequires Python 3.10 or later and the official mcp SDK 1.27 or later (pinned below 2.0; the 2.x SDK renamed FastMCP).
Related MCP server: mcp-saas-connector
Files
finamatik_ops_mcp/server.py tools, resources, prompt and the main() entry point. finamatik_ops_mcp/backend.py data layer and sample seed (40 contacts, 25 deals, 30 tasks, 10 SKUs, 20 orders). server.py and backend.py at the root are thin shims so python3 server.py still works from a checkout. tests/test_server.py. inspector.config.json. server.json is the MCP registry manifest. .github/workflows/publish.yml publishes a GitHub release to PyPI with trusted publishing.
MIT licence, copyright Finamatik Business Solutions FZE LLC. Questions and production use: info@finamatik.com.
Available Tools
10 toolsadd_noteA
Append a timestamped note to a contact's timeline (max 2,000 characters).
Inputs: text (required), contact_id (required). Returns: object
check_inventoryARead-onlyIdempotent
Stock levels. Pass a SKU for one item, or low_stock_only=true for items at/below their reorder level.
Inputs: sku, low_stock_only. Returns: result
complete_taskCIdempotent
Mark a task done (idempotent).
Inputs: task_id (required). Returns: object
create_orderA
Place a sales order for a contact. Checks stock first. dry_run=true (default) only returns a priced preview , confirm with the user, then call again with dry_run=false to commit and decrement inventory.
Inputs: qty (required), sku (required), contact_id (required), dry_run. Returns: object
create_taskB
Create an open task for a contact. due_date is YYYY-MM-DD and may not be in the past.
Inputs: title (required), assignee (required), due_date (required), contact_id (required). Returns: object
get_contactARead-onlyIdempotent
Full view of one contact: profile, deals, open tasks, last 5 notes, last 5 orders. Use the id from search_contacts (e.g. C-1007).
Inputs: contact_id (required). Returns: object
list_tasksARead-onlyIdempotent
List tasks, default open ones, optionally filtered by assignee (hamza|sana|ali) and due date (YYYY-MM-DD). Sorted by due date.
Inputs: limit, status, assignee, due_before. Returns: result
pipeline_summaryARead-onlyIdempotent
Deals by stage (count + AED value), open pipeline total, and open deals expected to close in the next 30 days.
Inputs: no named parameters. Returns: object
search_contactsARead-onlyIdempotent
Find contacts by name, company, email, phone or city (case-insensitive substring). Returns up to limit (max 50).
Inputs: query (required), limit. Returns: result
update_deal_stageC
Move a deal to a new pipeline stage.
Inputs: stage (required), deal_id (required). Returns: object
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 10 tools
Each tool has a clearly distinct purpose: search vs. full profile lookup (search_contacts/get_contact), task listing vs. creation vs. completion, and inventory, pipeline, note, and order operations are all separate concerns. The only near-overlap (check_inventory vs. create_order stock check) is explicitly clarified in the descriptions.
Most tools follow a clean verb_noun pattern (search_contacts, get_contact, list_tasks, add_note, create_task, complete_task, update_deal_stage, create_order). The single outlier is pipeline_summary, which is noun-only with no verb, a minor deviation from an otherwise consistent convention.
Ten tools is well within the ideal 3-15 range and each one covers a distinct operational need for a CRM/ops assistant. No tool feels redundant or padded.
Tasks have list/create/complete but no update or delete, contacts can only be read (no create/update), and orders/deals lack listing or retrieval tools (e.g. no list_orders, get_deal, delete task). Core read workflows exist but the lifecycle surface has notable gaps that could cause dead ends.
Maintenance
Related MCP Connectors
API-first CRM for LLMs - contacts, companies, deals and activities over a native MCP server.
Open-source CRM: Claude, ChatGPT or any MCP client works with records, inbox and company knowledge.
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Marketo MCP server for AI. 130 tools to operate Marketo from Claude, Cursor, or ChatGPT.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenance556-tool MCP server giving AI agents full access to the FutureSense business platform. Covers 10 app domains: invoicing, payroll, accounting, CRM, booking, content creation, website builder, quotations, email, and more. Works with Claude, ChatGPT, Gemini, Cursor, and any MCP-compatible client.MIT
- AlicenseAqualityDmaintenanceOne MCP server for the SaaS back office. Stripe, HubSpot, and Google Sheets exposed as typed, read-only-by-default tools for Claude and any MCP client.11MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to manage CRM data including companies, contacts, prospects, pipelines, forecasts, and tasks via typed MCP tools, with local SQLite storage and a JSON CLI.MIT
- FlicenseNot gradedqualityDmaintenanceA production-ready MCP server built with Python, exposing 17 tools to manage users, products, and orders via a JSON-backed REST API, ready for Claude Desktop and any MCP client.-