MCP 连接器
使用 OAuth 将 MCP 客户端连接到 Expense Budget Tracker,安全查询或更新财务数据。
概览
Expense Budget Tracker 提供托管的 Model Context Protocol(MCP)连接器,地址为:
https://mcp.expense-budget-tracker.com/mcp
该端点使用 Streamable HTTP 和 OAuth。请将此 URL 提供给支持远程 Streamable HTTP 服务器和 OAuth 发现的 MCP 客户端。授权流程会打开浏览器,让你登录并批准访问权限。
该连接器不使用 API 密钥。OAuth 访问令牌和刷新令牌才是 MCP 凭证。智能体 API 参考中介绍的长期 ApiKey 属于另一套直接 HTTP 集成,MCP 端点不会接受它。
OAuth 发现与连接
托管连接器在以下地址发布受保护资源元数据:
https://mcp.expense-budget-tracker.com/.well-known/oauth-protected-resource/mcp
该元数据会将客户端引导到授权服务器。授权服务器元数据位于:
https://auth.expense-budget-tracker.com/.well-known/oauth-authorization-server
兼容的客户端会按以下流程连接:
- 连接到
https://mcp.expense-budget-tracker.com/mcp,并发现受保护资源元数据。 - 以公共 OAuth 客户端的身份完成动态注册,不使用客户端密钥。
- 启动 Authorization Code 流程,并在用户的浏览器中打开授权 URL。
- 每次授权请求都使用 PKCE。唯一支持的代码质询方法是
S256。 - 请求
expenses:read。只有在客户端需要调用sql_execute时才添加expenses:write。 - 使用授权码换取访问令牌和刷新令牌,之后由客户端在需要时刷新访问权限。
不要把令牌复制到提示词、聊天记录、源代码文件或日志中。令牌只能保存在 MCP 客户端的凭证存储中。
权限范围
expenses:read为必选项。它允许发现工作区、查看 schema 和执行只读查询。expenses:write为可选项。它单独允许使用具有破坏性的sql_execute工具。
只请求任务所需的最小权限范围。仅分析数据或生成报告的客户端应请求 expenses:read,不要请求 expenses:write。
工具
list_workspaces
列出已登录用户可以访问的工作区。读取或修改数据前,请使用返回的工作区标识符明确指定目标。
get_schema
返回所选工作区中通过 MCP 开放的关系和列。编写 SQL 前先调用此工具,不要猜测表名或列名。
sql_query
在所选工作区中执行一条受限的只读 SQL 查询。查询路径还受到数据库只读边界的强制保护。结果最多包含 100 行,执行期限为 20 秒。
sql_execute
在所选工作区中执行会修改数据的受限 SQL。该工具具有破坏性,需要单独授予 expenses:write 权限。批准调用前,请确认工作区并审查完整语句。
由于 MCP 服务器提供 sql_execute,因此不能把整个服务器称为只读。只读保证只适用于 sql_query 及其数据库边界。
安全使用
- 调用
list_workspaces,并与用户确认目标工作区。 - 生成 SQL 前先调用
get_schema。 - 使用
sql_query检查数据、计算汇总、对账和生成报告。 - 只有任务必须修改数据时才请求
expenses:write。 - 调用
sql_execute前,展示完整语句及其预期影响,然后再次确认工作区。 - 写入后使用
sql_query验证结果。
服务器会限制 SQL 范围和开放的关系。这些控制措施是对生成 SQL 进行谨慎审查的补充,不能取代人工审查。
限制
- SQL 结果最多 100 行
- 执行期限为 20 秒
- 只能访问已登录用户可用的工作区
sql_query使用受限的 SQL 范围和数据库只读边界- 除必选的读取权限外,
sql_execute还要求expenses:write
隐私与自托管
获得授权的 MCP 客户端可以读取财务数据;取得 expenses:write 后还可以修改数据。连接前,请查看隐私政策以及客户端自身的数据处理政策。
上述托管 URL 仅适用于 Expense Budget Tracker 的托管服务。自行部署时,请先阅读自托管指南,并为自己的域名配置 MCP 端点和 OAuth 元数据。实现代码位于源代码仓库。