MemFlow MCP 服务器

MemFlow MCP 服务器是一套面向 MCP(Model Context Protocol)的后端实现。核心功能包括通过标准化接口向 LLM 客户端提供上下文信息、资源访问、工具执行以及提示模板渲染等能力。该仓库提供两种可运行的 MCP 实现路径:一是基于标准输入输出的 MCP(stdio)实现,适用于 Claude Desktop 等需要通过 JSON-RPC 进行通信的场景;二是基于 FastAPI 的 HTTP API 实现,遵循 MCP 的工具查询与调用语义,便于通过网络进行调用。

主要功能点

  • 通过 MCP 接口向客户端提供上下文结果(get_vault_context),包括 contexte 及来源
  • 支持工具发现与调用(tools/list、tools/call),实现读取 vault 上下文的能力
  • 基于本地 Obsidian vault 的索引与向量检索,结合关系映射(Relationships.md)提升上下文质量
  • 本地化、隐私优先的上下文服务,避免云依赖
  • 提供多种传输方式:MCP 的 stdio 版本,以及基于 HTTP 的服务器端实现(FastAPI)

安装与运行

  • 先建立并索引 Obsidian vault(如首次使用):
      1. 构建索引:运行 python src/index_vault.py
      1. 生成本地向量索引后,确保 Vault 路径 VAULT_PATH 指向你的 Obsidian vault
  • 运行 MCP 服务器(两种方式任选其一):
    • 方式 A(目前更常用的网络访问形式,HTTP API):
      • 启动命令示例(在已创建虚拟环境并安装依赖后执行): python src/mcp_server.py
      • 服务器监听默认地址 http://0.0.0.0:8080(可通过 --host、--port 调整)
    • 方式 B(标准输入输出的 MCP 端,适配 Claude Desktop 等客户端):
      • 启动命令示例:python src/mcp_stdio.py
      • 该方式通过标准输入输出遵循 MCP JSON-RPC 协议,与客户端进行通信
  • 重要依赖与前提
    • 需要本地索引完成,请先执行 index_vault.py 生成并持久化向量索引
    • 服务器会启动一个后台文件监控(可选,需开启),用于监控 Vault 的变更并自动重新索引
  • 服务器配置(供 MCP 客户端读取配置使用,以下以 JSON 形式描述,不含代码块) { "server_name": "MemFlow MCP Server", "command": "src/venv/bin/python", "args": ["src/mcp_server.py", "--host", "0.0.0.0", "--port", "8080"] // 说明:这是运行 HTTP API 版本的启动命令及参数,客户端需要知道 server_name 与启动命令来连接 } 注释:
    • server_name 表示服务器对客户端的识别名称
    • command 为启动需要的解释器或可执行程序路径(如虚拟环境中的 python)
    • args 为启动脚本及其参数(如主机、端口等),用于客户端的连接配置 另外,如需使用 stdio 版本,请将命令改为: { "server_name": "MemFlow MCP Stdio Server", "command": "src/venv/bin/python", "args": ["src/mcp_stdio.py"] }
  • 基本使用方法
    • 基于 HTTP 的 MCP 使用:发送 JSON-RPC 风格请求到工具端点,例如工具列表(GET /tools/list)与工具调用(POST /tools/call),获取返回的上下文文本
    • 基于 StdIO 的 MCP 使用:向程序的标准输入发送初始化、工具列表、工具调用等 JSON-RPC 请求,程序将输出正确格式的 JSON-RPC 响应到标准输出
    • 需要注意的点:初次使用需要在服务器端完成索引构建;索引更新可通过 index_vault 的 --rebuild 或在 File Watcher 触发时自动进行
    • 客户端与服务器之间的协商信息包括:服务器名称、可用工具、输入参数(query、max_tokens)及返回的 context 文本、来源及信心度等

服务器信息