AutoFYI MCP

AutoFYI MCP

Enables safe financial operations on the AutoFYI platform through natural language, including client search, allocation preparation, and invoice management with two-stage confirmation.

Category
访问服务器

README

AutoFYI MCP

A standalone, safety-first MCP server over the existing AutoFYI REST API at https://autofyi.kellyautomations.com.

It does not import, modify, or replace the current AutoFYI backend or frontend. Claude runs this project locally over stdio; this project calls the deployed API over HTTPS.

Safety contract

  • Financial writes are disabled by default.
  • Search scores rank candidates only. Claude compares names, proposes a likely non-exact match, and asks the user to confirm its stable client ID.
  • Ltd, Limited, punctuation, case, and extra spaces are normalized for comparison.
  • Every allocation request contains exactly one complete service/job type. It never mixes monthly, weekly, VAT, annual, or subscription work.
  • Live months are classified before writes; partially allocated months are never re-split.
  • Every write is a two-stage operation: prepare_* then execute_confirmed_action.
  • Preparing reads current FYI jobs/interims, validates the exact payload, and returns a single-use confirmation ID plus the exact phrase the user must provide.
  • The executor accepts only the stored payload; it cannot be changed during execution.
  • Confirmations expire after 10 minutes by default and cannot be replayed.
  • Draft invoices are the default. Approval uses a stronger confirmation phrase.
  • Write failures and timeouts are never automatically retried.

Prepared allocations.lines are the operational source of truth for service NET amounts, matching the existing frontend. Raw xero_invoices are supporting information and a source for warnings; the server does not blindly overwrite prepared allocations from raw Xero data.

Install

cd /Users/saiganeshreddykodekandla/Documents/automatefyi/AutoFYI-MCP
cp .env.example .env
uv sync --extra dev
uv run autofyi-mcp-smoke
uv run pytest

The smoke command reads only /health and /openapi.json. It never calls a write endpoint.

Start the MCP manually:

uv run autofyi-mcp

An stdio MCP normally appears to wait silently. That is correct: it is waiting for an MCP client and writes protocol data only to stdout. Logs go to stderr.

Connect Claude Code

claude mcp add --transport stdio --scope user \
  --env AUTOFYI_API_BASE=https://autofyi.kellyautomations.com \
  --env AUTOFYI_ENABLE_WRITES=false \
  autofyi -- /opt/homebrew/bin/uv --directory \
  /Users/saiganeshreddykodekandla/Documents/automatefyi/AutoFYI-MCP \
  run autofyi-mcp

Verify with:

claude mcp get autofyi
claude mcp list

Inside Claude Code, run /mcp and ask:

Check AutoFYI health, then search for client Example Limited.
Do not make any financial changes.

Connect Claude Desktop

Add this entry to the Claude Desktop MCP configuration and restart Claude Desktop:

{
  "mcpServers": {
    "autofyi": {
      "type": "stdio",
      "command": "/opt/homebrew/bin/uv",
      "args": [
        "--directory",
        "/Users/saiganeshreddykodekandla/Documents/automatefyi/AutoFYI-MCP",
        "run",
        "autofyi-mcp"
      ],
      "env": {
        "AUTOFYI_API_BASE": "https://autofyi.kellyautomations.com",
        "AUTOFYI_ENABLE_WRITES": "false"
      }
    }
  }
}

Use the full uv path because desktop applications may not inherit the terminal PATH.

Host on Render (shared team server)

The MCP server can run on Render over Streamable HTTP so the whole team connects to one URL. The AutoFYI backend (Playwright + FYI browser session) stays on the local machine behind the Cloudflare tunnel; Render only hosts this MCP layer in front of it.

Team Claude clients ──HTTPS──> Render (this MCP) ──HTTPS──> Cloudflare tunnel ──> local backend ──> FYI

Deploy with the render.yaml blueprint; full steps, operating rules, and troubleshooting are in docs/DEPLOY.md. The team endpoint is https://<service>.onrender.com/mcp, protected by per-teammate bearer tokens (AUTOFYI_MCP_AUTH_TOKENS). Per-client connection instructions — Claude Desktop, Claude Code, Cursor, claude.ai web, ChatGPT — are in docs/HOST.md.

Enabling financial writes

Do this only after read-only testing and access protection are complete:

AUTOFYI_ENABLE_WRITES=true

Restart the MCP process after changing the environment. A confirmation prepared before the restart is intentionally lost and must be prepared again from fresh FYI information.

If Cloudflare Access is added later, the server supports service-token headers:

AUTOFYI_CF_ACCESS_CLIENT_ID=...
AUTOFYI_CF_ACCESS_CLIENT_SECRET=...

It also supports an optional backend bearer token through AUTOFYI_API_TOKEN.

Documentation

The examples are illustrative only. The MCP always re-reads the selected client's actual information, prepared allocations, FYI jobs, and interim rows instead of depending on an example name, amount, tag, month, or job convention.

Client catalog analytics

The AutoFYI backend can publish a validated FYI CSV snapshot as an additive SQLite read model. This does not replace or modify the existing client JSON files, Xero invoices, allocations, frontend state, or browser automation.

  • get_client_catalog_status reports the active snapshot.
  • describe_client_catalog lists safe columns and their distinct counts. Ask for one column to receive at most its 10 most common values; values_truncated=true is not exhaustive.
  • query_client_catalog supports structured count, list, distinct, group_count, and numeric summary operations. It never accepts raw SQL.
  • Catalog answers describe the imported FYI snapshot. They do not prove that a live FYI job or an unallocated interim exists.

CSV import belongs entirely to the AutoFYI backend. Open its Swagger UI, use POST /catalog/import, choose the complete FYI CSV, and click Execute. Each successful upload validates the file and atomically replaces the backend SQLite catalog. MCP never reads or uploads local CSV files; it only calls the hosted status, schema, and query endpoints.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选