MCP客户端

一个严格的、透明的MCP客户端,用于Laravel Memory MCP服务器,实现模型上下文协议(MCP)版本2024-11-05,作为STDIO和Laravel Memory HTTP API之间的零逻辑传输适配器。

  • by vheins
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 vheins/mcp-memory

使用说明

内存MCP客户端

A. 严格、透明的MCP客户端 Laravel内存MCP服务器。

此客户端实现 模型上下文协议(MCP) 版本 2024-11-05 并充当 零逻辑传输适配器 在STDIO和Laravel内存HTTP API之间。


🔐 核心原则

此客户端遵循 零假设政策:

  • ✅ 前进 无突变的请求和响应
  • ✅ 蜜饯 来自服务器的精确JSON-RPC信封
  • ✅ 验证 严格身份验证(如果令牌丢失,则立即失败)
  • ✅ 镜子 工具模式与合约完全一致
  • ❌ 从不 转换、规范化或解释数据
  • ❌ 从不 缓存或存储响应
  • ❌ 从不 添加业务逻辑

📦 安装

npm install

⚙️ 配置

所需的环境变量

# REQUIRED: Bearer token for authentication
MCP_MEMORY_TOKEN=your-token-here

可选环境变量

# Server URL (default: https://agent.idsolutions.id/api/v1/mcp/memory)
MCP_MEMORY_URL=https://your-server.com/api/v1/mcp/memory

重要:客户将 立即失败 如果出现致命错误 MCP_MEMORY_TOKEN 未设置。


🚀 用法

作为MCP服务器(通过STDIO)

# Set environment variables
export MCP_MEMORY_TOKEN="your-token"

# Run the client
node memory-mcp.js

# Or use the bin script
./bin/memory-mcp.js

与MCP检查员一起

npx @modelcontextprotocol/inspector node memory-mcp.js

🛠️ 可用工具

客户端从Laravel内存MCP服务器公开以下工具:

工具 说明
memory-write 创建或更新内存条目(通过可选方式进行升级 id)
memory-update 通过UUID更新现有内存
memory-delete 软删除内存条目
memory-search 使用过滤功能搜索记忆
memory-link 在记忆之间建立联系

有关完整的架构定义,请参见 mcp-contract.md.


📋 协议行为

初始化

  1. 客户收到 initialize 请求
  2. 客户以能力和 protocolVersion: "2024-11-05"
  3. 客户端发送 notifications/initialized 通知

工具调用

所有工具调用都遵循以下模式:

{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "memory-write",
    "arguments": { ... }
  },
  "id": 1
}

客户:

  1. 验证 MCP_MEMORY_TOKEN 存在(如果缺失则失败)
  2. 通过HTTP POST将请求转发到Laravel服务器
  3. 退货 精确 来自服务器的JSON-RPC信封(无转换)

错误处理

  • 缺少令牌:返回JSON-RPC错误和代码 -32000
  • 解析错误:返回JSON-RPC错误和代码 -32700
  • 网络错误:返回JSON-RPC错误和代码 -32603
  • 服务器错误:按照收到的原样转发

🧪 测试

node test-memory-mcp.js

📘 遵守合同

该客户严格执行 mcp-contract.md.

关键遵守点:

  • ✅ 所有工具模式都与合同完全匹配(包括枚举、格式、必填字段)
  • ✅ 身份验证在中使用承载令牌 Authorization 头球
  • ✅ 在不提取或转换的情况下转发响应 content 数组
  • ✅ 无本地缓存或状态管理
  • ✅ 没有模式规范化或字段重命名
  • ✅ 由服务器而非客户端定义的Idempotency规则

🚫 这个客户不做什么

  • ❌ 存储或缓存存储器
  • ❌ 解释记忆语义
  • ❌ 修改或验证内存内容
  • ❌ 自动重试失败的请求
  • ❌ 转换蛇_案例↔ 驼峰式命名法
  • ❌ 提取或解析 content[].text 来自回复
  • ❌ 添加合同中未指定的默认值
  • ❌ 实现业务逻辑

如果你需要逻辑,它属于使用此客户端的代理。


🔍 验证检查表

在考虑完成此实施之前,请验证:

  • []MCP检查员正确列出了所有5个工具
  • [ ] tools/list 架构与服务器完全匹配
  • []资源模板可见(memory://index)
  • [ ] tools/call 转发请求而不进行变异
  • []服务器错误传播不变
  • []未发生架构转换
  • []令牌验证丢失时大声失败

📖 心理模型

将此客户视为:

透明玻璃管。

不聪明。没有固执己见。只是精确。

客户端的唯一工作是在STDIO(MCP协议)和HTTP(Laravel API)之间进行转换,同时保留所有语义。


🤝 替换测试

如果满足以下条件,则执行正确:

用另一个实现替换此客户端会产生零行为差异。

如果交换客户端会改变系统行为,那么一定有问题。


📄 许可证

请参阅存储库许可证。