mcpField
G
getMe MCP Server

getMe MCP Server

本地服务
github.com/AatirNadim数据库020 周前更新

关于 getMe MCP Server

getMe MCP Server 将持久化的 Go 键值存储作为 MCP 工具提供给 LLM 客户端。它采用追加式日志和内存哈希索引,并支持 Unix Domain Socket 本地通信。

主要功能

  1. 01持久化键值存储
  2. 02追加式日志与内存索引
  3. 03后台压缩回收空间
  4. 04Unix Domain Socket 通信
  5. 05提供 CLI、HTTP 代理及多语言 SDK

适用场景

  1. 01让 LLM 客户端读写键值数据
  2. 02通过 CLI 调试本地存储
  3. 03以 HTTP 路由访问存储引擎

MCP 相关

MCP 服务将 getMe 数据库操作暴露为工具,供 LLM 客户端调用。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"aatirnadim-getme": {
"command": "uvx",
"args": [
"getme-mcp-server"
],
"env": {
"GETME_SOCKET_PATH": "<GETME_SOCKET_PATH>",
"GETME_READ_ONLY": "<GETME_READ_ONLY>",
"GETME_ALLOW_CLEAR": "<GETME_ALLOW_CLEAR>",
"GETME_KEY_PREFIX": "<GETME_KEY_PREFIX>"
}
}
}
}
启动命令uvx getme-mcp-server
需要配置的环境变量
GETME_SOCKET_PATHPath to the UNIX socket for getMe core server
GETME_READ_ONLYIf true, only get and get_json tools are registered
GETME_ALLOW_CLEARIf true, enables the dangerous clear tool
GETME_KEY_PREFIX密钥String prefix prepended to all keys (e.g. agent1:)

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypigetme-mcp-server1.1.2

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

getMe 徽标
高性能键值存储

Docker Image Go SDK Java SDK JS SDK Python SDK MCP Server License: AGPL v3

📑 目录

📖 概述

getMe 是一个用 Go 编写的持久化、可嵌入式键值存储。它的设计灵感来自 Bitcask,针对高写入吞吐量和低延迟读取进行了优化。

它采用日志结构化存储方式,确保所有数据都按顺序追加写入。它使用 Unix Domain Sockets(UDS)实现极快的本地进程间通信,还提供 HTTP 代理、CLI 和面向大模型的模型上下文协议(MCP)服务等多个接口。

🏗 项目结构

本项目是一个单体仓库,包含核心存储服务、多个客户端接口和工具。

  • server/:核心存储守护进程和引擎。实现用于持久化存储的日志结构化哈希表。有关架构的深入介绍,请参阅 server/README.md。
  • cli/:用于测试和调试的命令行界面,可与 getMe 服务交互。
  • sdks/:客户端库(goSdk、javaSdk、jsSdk、pythonSdk),用于将 getMe 集成到应用程序中。
  • http-proxy-go/:使用 goSdk 构建的 HTTP 服务,通过标准 HTTP 路由公开核心引擎的 Unix Domain Socket 连接。
  • mcp-server/:模型上下文协议(MCP)服务,将 getMe 数据库作为工具提供给大语言模型(如 Claude 或 Cursor)。
  • commons/:在整个单体仓库中共用的代码、套接字路径、类型和常量,以确保一致性。
  • utils/:共享实用程序包,包括日志堆栈配置(Loki + Alloy + Grafana)。

重点推荐: 精选的内部文档是端到端了解系统的最快途径。请先从 server/README.md 了解架构基础,然后探索 cli 和 mcp-server 模块,了解集成方式。

🧠 核心架构

存储引擎依赖以下几个核心原则:

  • 日志结构化存储:所有数据都会写入仅追加的日志文件。这样可以避免缓慢的随机磁盘 I/O,从而实现极快的写入速度。
  • 内存哈希索引:内存中维护着一个哈希表,将每个键映射到其值在磁盘上的确切位置。这使读取操作非常快速(通常只需寻道一次)。
  • 压缩:后台进程会定期清理日志文件中的旧数据和过期数据,以回收磁盘空间。
  • 快速本地传输:通信主要通过 Unix Domain Sockets 进行,避免了本地标准 TCP 带来的开销。

🚀 快速开始

运行服务端

此仓库提供了用于初始化环境的辅助脚本。

选项 A:本地二进制文件 + 日志堆栈

切换到服务端模块并运行本地初始化脚本:

cd server
./init-server-local.sh

此脚本会将 Go 二进制文件构建到 server/dist/,准备数据、日志和套接字目录,并通过 Docker Compose 启动 Loki + Alloy + Grafana 日志堆栈,然后在前台启动服务端。

警告: 不要在此脚本前加上 sudo。脚本会在需要时自行调用提升后的权限。在最外层使用 sudo 会导致本地开发时出现权限错误。

选项 B:完整 Docker Compose 堆栈

在同一个 server 目录中运行:

cd server
./init-server-docker.sh

此操作会确保主机目录存在,导出你的 UID/GID,并调用 docker compose up --build,在容器中运行所有内容。

使用 CLI

直接与本地服务端交互:

cd cli
go run . put mykey "hello world"
go run . get mykey
go run . delete mykey
HTTP 代理

如果你想使用标准 HTTP REST 端点而非 Unix Sockets,请运行 Go HTTP 代理:

cd http-proxy-go
go run main.go -port 8080

这样你就可以运行 curl http://localhost:8080/get?key=mykey。

MCP 服务

LLM 客户端(如 Claude Desktop)可以通过 Model Context Protocol 使用 getMe。

cd mcp-server
uv run getme-mcp-server

(配置和集成说明请参阅 mcp-server/README.md)。

📊 运行基准测试和测试

若要确保性能没有退化,或对数据库进行压力测试:

  1. 导航到相应模块(例如 server)。
  2. 运行标准测试:
    go test ./...
    
  3. 运行基准测试:
    go test -bench . ./...
    
    (注意:如需进行更高强度的压力测试或正确性测试,请查看 server/tests/)。

📦 SDK

我们提供了多种语言的 SDK。请在 sdks/ 目录中查找:

所有 SDK 都直接通过 Unix Domain Socket 进行交互,以实现最佳延迟。

⚠️ 关于 SDK 发布的说明:SDK 版本管理和发布由 临时发布结构 自动处理。CI/CD 流水线会自主协调整个发布生命周期——从创建分离提交并为其打标签,到生成变更日志并将构建产物推送到公共注册表——所有操作都由单个版本升级类型触发器启动。这使 main 分支完全不受无意义的版本升级提交影响。
如果你正在了解代码或参与贡献,PR 中请勿手动升级版本。你可以在 SDKs README 中详细了解这一高级架构。

📄 许可证

本项目根据 GNU Affero General Public License v3.0(AGPLv3)授权许可,详情请参阅 LICENSE 文件。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。