Dinero财务数据查询服务

一个非官方的Dinero财务数据查询服务,允许用户通过AI助手查询发票、联系人和账户余额等财务信息。

  • by oddergaard
  • Go
  • 本地部署
  • 5 星标
  • 更新于
在 GitHub 查看 oddergaard/unofficial-dinero-mcp-server

使用说明

货币MCP服务器

在Uofficiel 模型上下文协议-服务器til 迪内罗 会计API,用Go编写。

允许 Claude(和其他 MCP 客户端)直接从您的 Dinero 帐户阅读发票、联系人和账户余额,并询问您的会计师本来会发送小时票据的问题。

由 亨利克·奥德加德.


你能用它做什么?

这是一个。 以阅读为中心的管理工具其目的是让您向您的人工智能助理提出有关公司财务状况的自然问题,而无需打开Dinero,要求会计师运行报告,或等待会计师回复您的电子邮件。

来自现实世界的一些例子:

  • “客户支付了最近的账单吗?”
  • “到目前为止,我们今年的营业额是多少?”
  • “现在公司账户上应该写些什么?”
  • “哪些账单到期,多少?”
  • “我能在公司买500元的神经枪吗?” “AI自己检查了账户,说是的。
  • “查找所有缺少CVR号码的联系人”
  • “[供应商]已获得新电话号码 — 请更新”
  • “有没有上传的文件尚未记录?”

可用工具

工具 描述
list_fakturaer 通过状态过滤获取发票 — 包括金额、联系人GUID和付款日期
hent_faktura 在所有行中获得一个因子。
list_kontakter 获取姓名,电子邮件,电话,地址和CVR的联系人
hent_kontakt 通过 GUID 获取完整联系方式
opdater_kontakt 更新联系人 (PUT — 包括所有字段)
list_kontoplan 下载公司帐户计划
hent_saldo 查看一个会计年度的余额。
list_ubrugte_filer 下载尚未上传的文件

此服务器故意不支持的内容

无需创建发票或会计

我看了看,然后选择了。这就是原因。

通过人工智能助理进行可靠的会计需要将来源文件(收据,发票)作为文件附加。现在的问题是,Claude 和 ChatGPT 都无法通过 MCP 连接可靠地传输二进制文件,而且已经存在于 Dinero 中的文件也无法读取其内容。对于开发人员来说,MCP和可运行的工具之间存在进程隔离,Claude今天多次告诉我,它拒绝将200KB编码的Base64移动到MCP请求,因此它默默地截断并粉碎了PDF。

另一种选择是,我们采取了等待记录的现有文件,但我们必须通过MCP将其检索回来。我没有详细研究它,但由于Dinero没有暴露签名的下载链接,但 只能以二进制形式返回文件,这意味着我必须缓冲它们并将它们链接到我的服务器,或者让克劳德以另一种方式读取base64,这可能也会死亡。这超出了这个项目的范围。我希望这个服务器是无状态的,所以我可以为人们演示它。

良好的软件开发的一部分——不仅仅是振动编码——就是知道什么时候画出一个边界,而它仍然可以被画出来。

没有完整的发布历史

从理论上讲,我们可以下载所有账户的所有条目。实际上,Dinero's Ledger API 对他们来说确实很繁重,他们自己的文档要求不要阻碍它。由于该服务器的设计是无状态的,即每个 AI 响应都会触发一个新的 API 调用,因此大规模处理将导致请求风暴,很可能会阻止您的 API 密钥。我希望你保留你的通道。

hent_saldo 为您提供每个账户的汇总余额,以回答绝大多数财务问题,而不会触及任何记录历史记录。

不幸的是,它不会为你提供上周“我在三明治上花了什么”的答案,但可以回答你今年的食物预算。


构建和运行

克拉夫: 转到1.22+

git clone https://github.com/oddergaard/unofficial-dinero-mcp-server
cd unofficial-dinero-mcp-server

go mod tidy
go build -o dinero-mcp .
./dinero-mcp

服务器从端口启动 8080 作为标准。替换为 PORT=9000 ./dinero-mcp.

无需环境变量 - 每个请求都通过 URL 参数发送凭据(见下文)。


自闭症

服务器是 多租户og无状态每个MCP连接器URL都将Dinero凭据作为查询参数:

参数。说明。 |-----------|-------------| | clientId |您的Dinero OAuth客户端ID,您将通过电子邮件向他们发送关于个人集成的信息。 | clientSecret |您的Dinero OAuth客户端秘密,您将通过电子邮件向他们发送关于个人集成的信息。 | apiKey 您在UI中创建的Dinero个人API密钥 | organizationId 您的Dinero公司ID(数字) - 它位于网络的左角。

连接器URL示例:

https://dit-domæne.dk/mcp?clientId=abc123&clientSecret=s3cr3t&apiKey=min-api-nøgle&organizationId=123456

如何在 Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "dinero": {
      "type": "http",
      "url": "https://dit-domæne.dk/mcp?clientId=abc123&clientSecret=s3cr3t&apiKey=min-api-nøgle&organizationId=123456"
    }
  }
}

在哪里可以找到您的身份证?

  • clientId / clientSecret你必须通过电子邮件与他们联系。请参阅 developer.dinero.dk/documentation/personal-integration/
  • apiKeyDinero → 设置 → 集成 → API 键 (在顶部)
  • organizationId: 登录时在 Dinero URL 中可见,例如: app.dinero.dk/123456/... 或者在左角。

通过Cloudflare Tunnel进行本地曝光

MCP 客户端需要公共 HTTPS URL。最简单的解决方案是 Cloudflare 隧道 — 无端口转发,无 TLS 设置。

1.安装云喇叭

# macOS
brew install cloudflare/cloudflare/cloudflared

# Linux (Debian/Ubuntu)
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb -o cloudflared.deb
sudo dpkg -i cloudflared.deb

2. 登录到Cloudflare

cloudflared tunnel login

这将打开浏览器进行验证。证书存储在本地。

3. 创建命名隧道

cloudflared tunnel create unofficial-dinero-mcp

请注意要打印的隧道 UUID - 您需要它。

4. 配置隧道

创建 ~/.cloudflared/config.yml:

tunnel: unofficial-dinero-mcp
credentials-file: /home/<bruger>/.cloudflared/<tunnel-uuid>.json

ingress:
  - hostname: dinero-mcp.ditdomæne.dk
    service: http://localhost:8080
  - service: http_status:404

然后添加指向隧道的 DNS 记录:

cloudflared tunnel route dns unofficial-dinero-mcp dinero-mcp.ditdomæne.dk

5. 运行

启动服务器,然后隧道:

./dinero-mcp &
cloudflared tunnel run unofficial-dinero-mcp

或快速临时URL(无需配置):

cloudflared tunnel run --url http://localhost:8080 unofficial-dinero-mcp

打印的公共 URL 用作您的 MCP 连接器 URL(将凭据作为参数添加)。


码头工人

go mod tidy
go mod vendor
docker build -t dinero-mcp .
docker run -p 8080:8080 dinero-mcp

许可证

麻省理工学院