Norman Finance MCP Server for Accounting and Taxes
Manage accounting and taxes with the Norman Finance MCP server for secure reporting, automated workflows, and real-time financial insights.
npx -y @norman-finance/norman-mcp-serverOverview
The Norman Finance MCP Server is an implementation of the Model Context Protocol (MCP) designed for accounting and tax workflows. It provides a secure, programmatic bridge between language models (or other services) and financial data operations such as transaction ingestion, ledger queries, tax report generation, and automated reconciliations. By exposing structured “tools” and standardized endpoints, the server enables safe, auditable model-assisted workflows without giving models direct access to raw databases.
This server is useful for engineering teams building finance automation, tax reporting pipelines, and intelligent assistants that need real-time financial context. It supports authentication, role-aware access, and webhook-driven automation so teams can integrate LLMs into accounting processes while maintaining traceability and compliance.
Features
- Secure MCP-compliant tool endpoints for finance-related operations
- Transaction ingestion and normalization
- General ledger query and balance retrieval
- Tax report generation (periodic, jurisdiction-aware)
- Automated reconciliation workflows and suggested matches
- Audit logging and change history for traceability
- Webhooks and event-driven automation for downstream systems
- Docker and local development support for quick setup
- Configurable RBAC and API key/token authentication
Installation / Configuration
Clone the repository and run using Docker or Node.js. Example commands assume Git and Docker are installed.
Clone the repo:
Run with Docker Compose:
# Start the MCP server and optional dependencies
# View logs
Run locally (Node.js):
# install dependencies
# set environment variables (see below) then
Recommended environment variables (example):
# Server
PORT=8080
NODE_ENV=development
# Security
API_KEY=replace-with-secure-key
JWT_SECRET=replace-with-secret
# Database (Postgres example)
DATABASE_URL=postgres://user:password@db:5432/norman
# Optional integrations
WEBHOOK_URL=https://hooks.example.com/finance
Environment variables and configuration options can also be supplied via a .env file or injected in your orchestrator. The repository includes a sample .env.example to get started.
Available Tools
The MCP server exposes a set of finance-focused tools that model agents can invoke. Typical tools include:
- transaction.ingest: Accepts raw transaction records (CSV/JSON) and returns normalized entries with identifiers.
- ledger.query: Run constrained queries against the general ledger (balances, accounts, trial balance).
- tax.report.generate: Produce tax reports for a given period and jurisdiction, returning a downloadable payload or S3 URL.
- reconciliation.suggest: Suggests possible matches between bank transactions and ledger entries; returns confidence scores.
- audit.log: Retrieve audit events and change history for a given entity.
- webhook.emit: Emit structured events to configured webhook endpoints for downstream automation.
Each tool follows MCP conventions: a typed input schema, deterministic outputs, and metadata describing permissions and side effects. The server ships with OpenAPI/JSON Schema descriptions for the tools so they can be discovered by MCP-aware agents.
API Examples
Ingest a transaction (example):
Request a tax report:
Use Cases
- Automated quarterly tax preparation: Ingest transactions across bank feeds and payment processors, classify them, and generate preliminary tax filings for review by an accountant.
- Real-time assistant in accounting apps: An LLM agent can query balances, request reconciliations, and ask the MCP server to prepare supporting schedules for closing.
- Audit and compliance workflows: Maintain an immutable audit log of model-driven actions and generate exportable trails for auditors.
- Reconciliation automation: Suggest matches for hundreds of bank transactions against invoices and create batched journal entries upon human approval.
- Multijurisdiction reporting: Produce regional tax reports using jurisdiction-aware rules, with the ability to plug in custom tax calculation modules.
Security & Best Practices
- Always run the server over TLS in production and secure API keys/JWT secrets in your secret manager.
- Limit model tool permissions by role; only expose write-capable tools to trusted agents.
- Enable audit logging and retention policies to maintain compliance.
- Use webhooks to integrate approvals (human-in-the-loop) before committing financial changes.
Resources
- GitHub: https://github.com/norman-finance/norman-mcp-server
- Look for OpenAPI/JSON Schema files in the repo to discover tool schemas
- Example clients: include lightweight SDKs or sample scripts in the repo to demonstrate MCP interactions
If you’re integrating the server into an existing accounting stack, start by running in a staging environment and wiring a single connector (e.g., a bank feed) to validate normalization and reconciliation logic before scaling to production.