Jarvis MCP 服务端 + Agent

使用说明(Markdown 版本)

项目简介

  • Jarvis 是一个基于模型上下文协议(MCP)的后端服务集,旨在为大型语言模型客户端提供标准化的上下文信息、工具执行能力和提示模板渲染。它通过 JSON-RPC 与客户端通信,支持资源管理、工具注册与调用,以及提示模板渲染等功能。后端数据源以 Notion 数据库为主,提供灵活的数据存储与查询能力。系统还包含一个独立的 Agent 服务,用于将自然语言输入解析为 MCP 工具调用。

主要功能点

  • MCP 服务器:核心与协调单元,注册并暴露工具(如 add_transaction、split_paycheck、get_categories 等),通过 /mcp 接口以 JSON-RPC 2.0 协议处理请求。
  • Agent 服务:提供 /chat 端点,接收自然语言输入,借助 Gemini LLM 将输入转换为结构化的 MCP 调用请求,并通过 MCP 客工具执行。
  • 工具与服务分层:transactions、payments、categories、budgets 等服务层实现具体业务逻辑,所有操作通过 MCP 工具注册暴露。
  • Notion 集成:Notion API 作为底层数据源,管理 Expenses、Income、Payments、Accounts、Categories、Budget Rules 等数据库,提供数据缓存、字段提取和实体关系处理。
  • 传输与接口:MCP 服务器通过 HTTP JSON-RPC(/mcp)暴露工具调用,Agent 通过 HTTP(/chat)实现自然语言到工具调用的转换;支持 SSE 等未来扩展与多传输协议。
  • 安全与健壮性:包含重复交易检测、清晰的错误处理、断路与优雅关闭逻辑,以及环境变量配置以分离开发与生产环境。

安装与运行

  • 依赖环境
    • Node.js 18+(用于运行 TypeScript/Node 服务)
    • Notion 账号及 API Key
    • Gemini API Key(用于 Agent 的自然语言理解/解析)
  • 安装与编译
    • 依赖项安装:npm install
    • 运行 MCP 服务器:npm run mcp
    • 运行 Agent 服务器:npm run agent
  • 环境变量与数据源
    • Notion API Key、各数据库 (Expenses, Income, Payments, Accounts, Categories, Budget Rules) 的数据库 ID
    • Gemini API Key
    • 可选:信用卡末四位等用于 LLM 匹配的额外变量
    • 端口与 base URL(默认 MCP 3000、Agent 4000,MCP_BASE_URL 指向 MCP 服务器地址)
  • 关键端点
    • MCP 服务器:POST /mcp,JSON-RPC 请求格式用于调用注册的工具
    • Agent 服务器:POST /chat,接收自然语言消息,返回解析结果与执行信息
    • 健康/状态接口(如需要在实际环境中暴露健康状态)

服务器配置(给 MCP 客户端的连接配置说明,JSON 格式,非代码块,便于理解)

  • server_name: jarvis
  • command: npm run mcp
  • args: [] // 启动 MCP 服务器的命令参数(若无额外参数则留空)
  • env(示例,仅供说明,真实环境请填写实际值):
    • PORT: "3000" // MCP 服务端口
    • NOTION_API_KEY: "REDACTED" // Notion API 的访问密钥
    • EXPENSES_DB_ID: "REDACTED" // Expenses 数据库 ID
    • INCOME_DB_ID: "REDACTED" // Income 数据库 ID
    • PAYMENTS_DB_ID: "REDACTED" // Payments 数据库 ID
    • ACCOUNTS_DB_ID: "REDACTED" // Accounts 数据库 ID
    • CATEGORIES_DB_ID: "REDACTED" // Categories 数据库 ID
    • BUDGET_RULES_DB_ID: "REDACTED" // Budget Rules 数据库 ID
    • MCP_BASE_URL: "http://localhost:3000" // MCP 服务器基本地址(客户端调用需知晓的入口)
    • 其他可选变量(如 GEMINI_API_KEY、最后4 位卡号等,请在 Agent 配置中单独设置)

基本使用方法

  • 启动顺序
    1. MCP 服务器:运行命令 npm run mcp,按需配置环境变量后启动,监听端口通常为 3000。
    2. Agent 服务器:在单独终端运行 npm run agent,端口通常为 4000,提供 /chat 接口来将自然语言转换为 MCP 调用。
  • 客户端使用思路
    • MCP 客户端直接通过 JSON-RPC 调用 /mcp 接口,执行已注册的工具(如 add_transaction、set_budget_rule 等)。
    • 当需要对 natural language 进行解析时,客户端可以通过 Agent 的 /chat 端点提交自然语言文本,Agent 将返回一个带有 action 与 args 的 MCP 调用结构以及执行结果摘要。
  • 本仓库实现的核心价值
    • 为 LLM 客户端提供统一、可扩展的后端服务,用于资源管理、工具执行与提示渲染,帮助实现对话式商业场景中的自动化财务操作。

注意事项

  • MCP 服务端与 Notion 数据源强绑定,实际使用时请正确配置 Notion 数据库以及 API 权限。
  • Gemini/LMM 提示与推理高度依赖外部服务的稳定性,实际部署时应考虑请求限流与缓存策略。
  • 安全性与权限控制应结合实际生产环境进一步加强,避免暴露敏感数据。

服务器信息