金融协议服务

一个基于FastAPI的轻量级金融服务,提供发票、费用管理、JWT和API密钥认证功能,支持SQLite和PostgreSQL数据库。

  • by HASSANFARYAD
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 HASSANFARYAD/finance-mcp

使用说明

模块化金融协议(MCP)

用于发票、费用、授权(JWT+neneneba API密钥)的最少FastAPI服务。默认情况下在SQLite上运行(无外部数据库)。通过设置切换到Postgres DATABASE_URL.

快速启动(无需数据库配置)

pip install -r requirements.txt
uvicorn app.main:app --reload
# API at http://127.0.0.1:8000
# Docs at http://127.0.0.1:8000/docs

MCP SSE服务器(用于Syntellio)

该回购现在公开了一个兼容MCP的SSE服务器,因此Syntellio可以调用金融工具。

pip install -r requirements.txt
python -m app.mcp_server
# MCP SSE at http://127.0.0.1:8080/sse

认证:

  • 发送 Authorization: Bearer <jwt> 或 x-api-key: <key> 带有工具调用的标题。
  • 要禁用本地测试的身份验证,请设置 MCP_AUTH_REQUIRED=false 并设置 MCP_DEFAULT_OWNER_ID 转换为有效的用户id。

Syntellio配置:

  • 集 MCP_SERVER_URL 到 http://<host>:8080/sse.
  • 如果启用,请确保MCP客户端发送相同的身份验证标头。
  • 工具名称用下划线分隔(例如。, expenses_list, invoices_create).

工具目录(发现)

GET /api/v1/tools 返回可用模块/端点及其输入/输出字段的机器可读列表。

安全说明

  • API密钥仅在创建时显示;您可以通过以下方式撤销 DELETE /api/v1/auth/api-keys/{id}.
  • 内存速率限制:每个API密钥或IP默认120个请求/分钟(配置 RATE_LIMIT_PER_MINUTE).
  • 对于生产环境:在代理/负载均衡器上强制使用HTTPS,定期轮换密钥,并使用外部速率限制器(Redis)而不是内置内存限制器。

部署到渲染(单击一下)

如果您愿意,可以手动执行以下步骤:

  1. 将此仓库推送到GitHub。
  2. 渲染:新Web服务→ 运行时:Python 3→ Build pip install -r requirements.txt → Start uvicorn app.main:app --host 0.0.0.0 --port $PORT.
  3. 环境:套 SECRET_KEY (强随机)。离开 DATABASE_URL 空以使用SQLite,或设置Postgres URL。

环境

  • DATABASE_URL (默认值 sqlite:///./data.db)
  • SECRET_KEY (生产中需要)
  • ALGORITHM (默认HS256)
  • ACCESS_TOKEN_EXPIRE_MINUTES (默认值43200)
  • RATE_LIMIT_PER_MINUTE (默认值120)
  • REDIS_URL (可选;为多实例启用Redis支持的速率限制)
  • REQUIRE_HTTPS (默认为true;为local/dev设置false)

测试

pytest -q

种子演示数据

python seed.py

切换到Postgres

集 DATABASE_URL=postgresql+psycopg2://user:pass@host:5432/db 然后跑 alembic upgrade head 一次。