@cynco/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., "@@cynco/mcpShow me the P&L for January"
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.
107 tools · 6 MCP Apps · 9 guided prompts · 4 reference guides · Code Mode
How it works
You (AI Agent) ──► @cynco/mcp ──► Your Cynco Account
Claude │ Chart of Accounts
Cursor │ Invoices & Bills
Windsurf │ Bank Transactions
Any MCP client │ Financial Reports
│ Agreements & Contracts
│ Fixed Assets
│ Data Room & More
│
Tenant-scoped
Your data onlyThe Cynco MCP server gives your AI agent structured, read/write access to your accounting data — scoped to your account, never anyone else's.
Getting started
1. Get your MCP API key
Log in to cynco.io → MCP Keys → Create MCP Key
Your key looks like cak_abc123... — save it securely, it's shown once.
MCP keys are scoped to your organization. Your AI agent can only access your data.
2. Connect your AI agent
Pick your client and paste the config:
Claude Code
claude mcp add cynco --transport streamable-http https://mcp.cynco.io/mcp \
--header "Authorization: Bearer cak_your_api_key_here"Claude Desktop
Add to your config file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"cynco": {
"type": "streamable-http",
"url": "https://mcp.cynco.io/mcp",
"headers": {
"Authorization": "Bearer cak_your_api_key_here"
}
}
}
}Cursor
Add to .cursor/mcp.json:
{
"mcpServers": {
"cynco": {
"type": "streamable-http",
"url": "https://mcp.cynco.io/mcp",
"headers": {
"Authorization": "Bearer cak_your_api_key_here"
}
}
}
}Windsurf
Add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"cynco": {
"serverUrl": "https://mcp.cynco.io/mcp",
"headers": {
"Authorization": "Bearer cak_your_api_key_here"
}
}
}
}3. Start asking questions
Once connected, your AI agent can:
"Show me the P&L for January"
"Who owes us money? Show the AR aging"
"Create an invoice for Acme Corp — 10 hours consulting at RM500/hr"
"Categorize all the GRAB transactions as transport expense"
"Run the month-end close for February"
"What's our cash flow trend over the last 6 months?"
"Review the fixed asset register and flag fully depreciated items"
"Create an MSA with Company X using our standard template"
"Organize the data room — find orphaned files and suggest folders"
What your AI can do
107 tools across 15 modules — everything from chart of accounts to contract management.
Orientation
Tool | Description |
| Your business profile, fiscal year, currency, industry — AI calls this first |
| Dashboard overview — balances, JE counts, AR/AP totals |
Chart of Accounts
Tool | Description |
| Full COA with codes, types, hierarchy, AI mapping hints |
| Fuzzy search by name, code, or description |
| Create a new account with code, type, and parent |
| Update account name, description, or status |
| Period-based balance snapshots with YTD totals |
| Sub-ledger for a single account — every posting with running balance |
Financial Accounts
Tool | Description |
| Your bank accounts and credit cards |
Bank Transactions
Tool | Description |
| List transactions with categorization and GL link status |
| Search by description, payee, category, or reference |
| Import transactions with auto-dedup (max 500/call) |
| Categorize, match, or link transactions (max 100/call) |
| Post categorized transactions to GL as journal entries |
Categorization Rules
Tool | Description |
| List auto-categorization rules |
| Create pattern-matching rule (exact, contains, regex, payee) |
| Modify or deactivate a rule |
Journal Entries
Tool | Description |
| List entries by period, status, or source |
| Search by description, memo, entry number, or vendor/customer |
| Create double-entry entries with balanced debit/credit lines |
| Post, approve, or void entries (with GL auto-posting) |
Journal Entry Templates
Tool | Description |
| List reusable templates for recurring entries |
| Create template for rent, depreciation, payroll accruals |
| Execute a template for a specific date |
General Ledger & Reports
Tool | Description |
| GL postings with running balances and JE references |
| TB snapshots — preliminary, adjusted, or final |
| Profit & Loss — revenue, expenses, net income by period |
| Assets, liabilities, equity with A = L + E balance check |
| Monthly inflows, outflows, net cash flow from bank data |
Customers & Accounts Receivable
Tool | Description |
| Customer list with outstanding balances and payment terms |
| Create a new customer with contact and payment details |
| Update customer details — name, email, terms, address |
| Soft-delete a customer (deactivate) |
| Full statement of account — invoices, payments, credits |
| AR aging by customer (current, 1-30, 31-60, 61-90, 90+ days) |
| Invoice-level aging with days past due |
Invoices & Billing
Tool | Description |
| List invoices with line items, payments, outstanding balances |
| Create invoice with auto-generated number (INV-YYYY-NNNN) |
| Finalize, mark as paid, or void an invoice |
| Credit/debit notes with applications and refund status |
| Issue a credit or debit note against an invoice |
| Quotes with conversion tracking (accepted → invoice) |
| Create a draft quotation for a customer |
| Send, accept, reject, or convert a quotation |
| Recurring invoice templates and schedules |
| Set up automatic invoice generation |
| Modify frequency, amount, or next run date |
| Remove a recurring invoice template |
| Product/service items with pricing and tax settings |
| Create a new product or service item |
| Update item details — name, price, tax rate |
| Soft-delete an item |
Vendors & Accounts Payable
Tool | Description |
| Vendor list with outstanding bill counts and balances |
| Create a new vendor with contact and payment details |
| Update vendor details — name, email, terms, bank info |
| Soft-delete a vendor (deactivate) |
| Full vendor statement — bills, payments, outstanding amounts |
| AP aging by vendor (current, 1-30, 31-60, 61-90, 90+ days) |
| Bills with paid/outstanding amounts and line items |
| Create a new bill from a vendor |
| Approve, mark as paid, or void a bill |
| POs with vendor details and approval status |
| Create a purchase order for a vendor |
| Approve, receive, or close a purchase order |
Payments
Tool | Description |
| All payments — inbound (customers) and outbound (vendors) |
| Record a payment — auto-updates linked invoice/bill status |
Tags
Tool | Description |
| Tags with usage counts across entities |
| Create a new tag for categorization |
| Update tag name or color |
| Remove a tag |
| Assign a tag to any entity (invoice, bill, JE, etc.) |
Period Management & Reconciliation
Tool | Description |
| All periods — open/closed, draft counts, readiness |
| Lock a period (prevents new entries) |
| Unlock a period (requires reason, audit trail) |
| Reconciled vs unreconciled GL entries per account |
| Mark GL entries as reconciled (max 100/call) |
Agreements & Contracts
Tool | Description |
| List agreements with status, counterparty, and value |
| Full agreement with clauses, signers, and timeline |
| Create from template or scratch — NDA, MSA, SOW, engagement letter |
| Move through lifecycle: draft → sent → signing → executed |
| Browse the clause library for reuse |
| Available templates by agreement type |
| Billing milestones linked to agreements |
| Set up milestone-based or recurring billing |
Data Room
Tool | Description |
| Folder structure and hierarchy |
| Files with metadata, sizes, and upload dates |
| Detailed file info — versions, access log, linked entities |
| Search files by name, description, or content |
| Activity log — uploads, downloads, access events |
| Create a new folder in the data room |
Fixed Assets
Tool | Description |
| Asset register with cost, book value, and depreciation |
| Full asset details — purchase, depreciation, maintenance |
| Register a new fixed asset |
| Activate, dispose, or mark for sale |
| Asset categories with depreciation methods and rates |
| Depreciation entries by period |
| Summary by category — total cost, NBV, depreciation |
Admin & Audit
Tool | Description |
| Team members with roles and permissions |
| Pending staff invitations |
| Pending org link requests (accounting firm ↔ client) |
| Full audit log — who changed what, when |
| Version history for a specific entity |
| E-invoice submission status and LHDN compliance |
Code Mode
Tool | Description |
| Discover tools by keyword — returns TypeScript type signatures |
| Run JavaScript in a sandbox — call multiple tools in one round-trip |
SQL Mode
Tool | Description |
| Discover tables, columns, types, and foreign keys |
| Read-only SQL SELECT with auto tenant scoping (max 200 rows) |
MCP Apps (Interactive UIs)
On hosts that support the MCP Apps extension, these tools render interactive UIs inline in the conversation instead of returning text:
Tool | Description |
| Financial dashboard — KPI tiles, cash flow bar chart, AR/AP aging donut |
| AR/AP aging — donut chart, detail table, drill-down to statements |
| Cash flow analysis — monthly bars, running balance, top spending categories |
| Trial balance — accounts grouped by type, period picker, balance check |
| P&L and Balance Sheet — proper accounting format, period picker, view toggle |
| Invoice builder — customer picker, line items, item catalog, live totals |
Apps call existing tools for data (get_financial_summary, get_customer_aging, etc.) — no new API surface. Hosts that don't support MCP Apps see the plain text result.
Code Mode
Code Mode lets your AI call multiple tools in a single round-trip — saving ~90% in token overhead for complex workflows.
Instead of the LLM making 6 individual tool calls (~15K tokens of tool definitions per call), it writes one script:
const profile = await cynco.get_company_profile({});
const summary = await cynco.get_financial_summary({});
const bs = await cynco.get_balance_sheet({});
const aging = await cynco.get_customer_aging({});
console.log({
company: profile.data.name,
revenue: summary.data.totalRevenue,
assets: bs.data.totalAssets,
overdue: aging.data.totalOverdue,
});How it works:
search_tools({ query: "invoices" })— discover tools, get TypeScript type signaturesexecute_code({ code: "..." })— run the script, allcynco.*calls execute server-side
Security: Scripts run in a node:vm sandbox — no process, require, import, fetch, or eval.
Limits: 60s timeout, 50 tool calls per script, 10KB script, 50KB output.
Auth: Each cynco.* call enforces the same scopes as direct tool calls.
Requires code:execute scope on the API key.
Guided Prompts
Multi-step workflows that walk your AI through complex tasks:
Prompt | What it does |
| Check drafts → reconcile → verify trial balance → close period |
| Review uncategorized transactions → suggest accounts → create rules |
| Liquidity, profitability, AR/AP, cash flow analysis, red flags |
| Match GL entries to bank statement → mark reconciled → report |
| Learn how to use Code Mode for efficient multi-step workflows |
| Guided agreement creation — template, terms, signers, billing |
| Review fixed assets, depreciation, disposals, and anomalies |
| AP aging → prioritize payments → record batch → summary |
| Audit folder structure → find orphans/dupes → reorganize |
API Key Scopes
Control exactly what your AI agent can access with granular, module-level scopes:
Scope | Access |
| COA, bank transactions, journal entries, GL, periods, reconciliation |
| Create/update above (implies |
| Invoices, quotations, recurring invoices, items, credit/debit notes |
| Create/update above (implies |
| Customer list, statements, aging |
| Create/update/delete customers (implies |
| Vendors, bills, purchase orders, vendor aging |
| Create/update/delete above (implies |
| Financial summary, trial balance, income statement, balance sheet, cash flow |
| Tag management |
| Agreements, clauses, templates, billing schedules |
| Data room folders, files, search, activity |
| Fixed assets, categories, depreciation |
| Team, invitations, audit trail, e-invoice status |
| SQL Mode — raw read-only SQL (explicit opt-in) |
| Code Mode — sandboxed script execution (explicit opt-in) |
Legacy scopes: read grants all :read scopes. write grants all :write scopes. Empty scopes = full access (backwards compatible with existing keys).
Your AI agent can only accessyour organization's data. Every query is scoped to your tenant via database-level isolation. There is no way to access another organization's data.
Security & Limits
Feature | Detail |
Tenant isolation | Every query filtered by your organization via SQL CHECK constraints |
Rate limiting | 120 requests/minute per organization |
Scope enforcement | API keys restricted to specific modules — read, write, or execute |
API key hashing | Keys stored as SHA-256 hashes — raw key shown once on creation |
SQL safety | SQL Mode blocks writes, CTEs, UNION, OR — whitelist only |
Code sandbox | Code Mode runs in |
Session binding | Sessions locked to your tenant, auto-expire after 1 hour |
Error masking | Internal errors hidden — correlation IDs returned for support |
OAuth support | RFC 9728 protected resource metadata for OAuth integrations |
Self-hosting
If you run your own Cynco instance, you can run the MCP server locally:
export CYNCO_DATABASE_URL="postgresql://user:pass@localhost:5432/cynco"
npx @cynco/mcpOr with Docker:
docker build -t cynco-mcp .
docker run -p 3100:3100 \
-e CYNCO_DATABASE_URL="postgresql://..." \
-e MCP_TRANSPORT=http \
cynco-mcpVariable | Required | Default | Description |
| Yes | — | PostgreSQL connection string |
|
| Transport: | |
|
| HTTP server port | |
|
| Requests/minute per tenant | |
|
| Max DB pool connections | |
|
| Idle connection timeout (ms) | |
|
| Individual tool execution timeout (ms) | |
|
| Code Mode script timeout (ms) | |
| — | Public URL for resource URIs | |
|
|
|
Endpoint | Method | Auth | Description |
|
| Yes | MCP requests (initialize or tool calls) |
|
| Yes | SSE stream for server-sent notifications |
|
| Yes | Terminate session |
|
| No | Liveness probe with DB pool stats |
|
| No | Readiness probe |
|
| Optional | Prometheus metrics (set |
|
| No | Server icon |
|
| No | MCP service descriptor (capabilities, auth) |
|
| No | RFC 9728 OAuth metadata |
Metric | Type | Description |
| Counter | Tool executions by name and status |
| Histogram | Tool execution latency |
| Counter | Rate limit violations |
| Counter | Auth failures by reason |
| Gauge | DB pool stats (total, idle, waiting) |
| Gauge | Active HTTP sessions |
pnpm install
pnpm dev # stdio mode
pnpm dev:http # HTTP mode on :3100
pnpm test # Unit tests (589 tests)
pnpm test:integration # Integration tests (requires PostgreSQL)
pnpm typecheck # Type check
pnpm build # Build apps + compile TypeScript
pnpm build:apps # Build MCP App HTML bundles onlyProject structure
├── apps/ # MCP Apps (interactive UIs)
│ ├── shared/ # Shared design tokens, formatters, CSS
│ ├── dashboard/ # Financial dashboard app
│ ├── aging/ # AR/AP aging report app
│ ├── cash-flow/ # Cash flow chart app
│ ├── trial-balance/ # Trial balance viewer app
│ ├── financial-statements/ # P&L and Balance Sheet app
│ └── invoice-builder/ # Invoice builder form app
├── src/
│ ├── index.ts # Entry point — stdio/HTTP transports, sessions, rate limiting
│ ├── server.ts # Tool registration (107 tools, prompts, resources, apps)
│ ├── apps.ts # MCP Apps registration (6 interactive UI tools + resources)
│ ├── auth.ts # API key + OAuth resolution, scope checking
│ ├── scope-map.ts # Tool → scope mappings
│ ├── db.ts # PostgreSQL pool, transactions, health checks
│ ├── logger.ts # Structured JSON logging
│ ├── metrics.ts # Prometheus counters, histograms, gauges
│ ├── prompts.ts # 9 guided workflow prompts
│ ├── resources.ts # 4 reference resources
│ ├── output-schemas.ts# Zod output validation schemas
│ ├── tools/ # 105 tool implementations (one file per tool)
│ ├── code-mode/ # Code Mode: sandbox, type generator, search, execute
│ ├── utils/ # Validation, cursors, errors, TypeID
│ └── cli/ # API key generation CLI
├── build-apps.ts # Build script for MCP App HTML bundles
└── vite.config.ts # Vite config for single-file app bundlingContributing
Found a bug or want a new tool? Open an issue.
This server cannot be installed
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
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/cynco-labs/cynco-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server