Token导航 LogoToken导航TokenDH.com
remembrances (Josegarridodigio) logo
开发工具stdio官方级别未说明来源级核验

remembrances (Josegarridodigio)

MCP Server

Remembrances-MCP是一个基于Go的MCP服务器,为AI代理提供长期记忆功能,支持多种记忆层(键值、向量/RAG、图数据库),并通过Markdown文件管理知识库。

工具数

17

提示词数

0

GitHub Stars

0

资源数

0
代码索引向量数据库Shell知识管理

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

josegarridodigio

提供方

josegarridodigio

最后核验

2026/5/17 20:23

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

python3 tests/test_user_stats.py

详细介绍

MCP纪念

Remembrances MCP是一个基于Go的MCP服务器,为AI代理提供长期内存功能。它使用SurrealDB支持多个存储层(键值、向量/RAG、图形数据库),并可以通过Markdown文件管理知识库。

特性

  • 用于AI代理内存的MCP服务器
  • SurrealDB支持(嵌入式或外部)
  • 使用Markdown文件进行知识库管理
  • 通过以下方式嵌入生成:

- GGUF模型(本地、隐私优先、GPU加速) ⭐ 新 - Ollama(本地服务器) - OpenAI API(远程)

  • 多种传输选项:stdio(默认)、MCP Streamable HTTP和HTTP JSON API

🚀 GGUF嵌入物(新)

Remembrances MCP现在支持直接加载本地GGUF嵌入模型!这提供了:

  • 🔒 隐私:所有嵌入都在本地生成,没有数据发送到外部
  • ⚡ 演出:无网络延迟的直接模型推理
  • 💰 成本:嵌入生成无API成本
  • 🎯 灵活性:支持量化模型(Q4_K_M、Q8_0等)
  • 🖥️ GPU加速:金属(macOS)、CUDA(NVIDIA)、ROCm(AMD)

GGUF快速入门

# 1. Build the project (compiles llama.cpp automatically)
make build

# 2. Download a GGUF model
# Example: nomic-embed-text-v1.5 (768 dimensions)
wget https://huggingface.co/nomic-ai/nomic-embed-text-v1.5-GGUF/resolve/main/nomic-embed-text-v1.5.Q4_K_M.gguf

# 3. Run with GGUF model (using wrapper script)
./run-remembrances.sh \
  --gguf-model-path ./nomic-embed-text-v1.5.Q4_K_M.gguf \
  --gguf-threads 8 \
  --gguf-gpu-layers 32
  
# Alternative: Set LD_LIBRARY_PATH manually
export LD_LIBRARY_PATH=~/www/MCP/Remembrances/go-llama.cpp/build/bin:$LD_LIBRARY_PATH
./build/remembrances-mcp \
  --gguf-model-path ./nomic-embed-text-v1.5.Q4_K_M.gguf \
  --gguf-threads 8 \
  --gguf-gpu-layers 32

📖 全部文件:参见 docs/GGUF_EMBEDDINGS.md 有关详细说明、性能提示和故障排除。

🔍 代码索引系统(新)

记忆MCP包括一个强大的 代码索引系统 它使用Tree sitter进行具有语义嵌入的多语言AST解析。这使得AI代理能够:

  • 索引代码库 跨14种语言(Go、TypeScript、JavaScript、Python、Rust、Java、C/C++、PHP、Ruby、Swift、Kotlin等)
  • 语义搜索 用于使用自然语言查询的代码符号
  • 导航代码 通过查找定义、引用和调用层次结构
  • 操纵代码 通过在整个代码库中重命名符号

快速开始

# 1. Index a project
# Use the MCP tool: code_index_project
{
  "project_name": "my-project",
  "root_path": "/path/to/project",
  "languages": ["go", "typescript"]
}

# 2. Search for code
# Use: code_semantic_search
{
  "project_name": "my-project",
  "query": "function that handles user authentication"
}

# 3. Find symbol definitions
# Use: code_find_symbol
{
  "project_name": "my-project",
  "name": "UserService"
}

可用工具

类别工具
索引code_index_project, code_index_status, code_list_projects, code_delete_project, code_reindex_file, code_get_project_stats, code_get_file_symbols
搜索code_semantic_search, code_find_symbol, code_find_references, code_find_implementations, code_get_call_hierarchy, code_hybrid_search
操纵code_rename_symbol, code_get_symbol_body, code_replace_symbol_body, code_insert_symbol

支持的语言

Go、TypeScript、JavaScript、TSX、Python、Rust、Java、Kotlin、Swift、C、C++、Objective-C、PHP、Ruby、C#、Scala、Bash、YAML

📖 全部文件:

💡 工具帮助系统(how_to_use)

Remembrances MCP包括一个智能帮助系统,该系统提供按需文档,同时最大限度地减少初始上下文令牌的消耗。

用法

# Get complete overview of all tools
how_to_use()

# Get documentation for a tool group
how_to_use("memory")    # Memory tools (facts, vectors, graph)
how_to_use("kb")        # Knowledge base tools
how_to_use("code")      # Code indexing tools

# Get documentation for a specific tool
how_to_use("remembrance_save_fact")
how_to_use("kb_add_document")
how_to_use("search_code")

好处

  • 减少约85% 在初始上下文中,令牌消费
  • 按需文档 -只装载你需要的东西
  • 全面帮助 -完整的论据、示例和相关工具

📖 全部文件:参见 docs/TOOL_HELP_SYSTEM.md

用法

使用CLI标志或环境变量运行服务器:

go run ./cmd/remembrances-mcp/main.go [flags]

配置文件

服务器可以使用YAML配置文件进行配置。如果 --config 如果未指定,服务器将自动在以下标准位置查找配置文件:

  • Linux: ~/.config/remembrances/config.yaml
  • macOS: ~/Library/Application Support/remembrances/config.yaml

如果找不到配置文件,服务器将使用环境变量和默认值。

CLI标志

  • --config:YAML配置文件的路径(可选,自动定位见上文)
  • --sse (默认值:false):启用SSE传输
  • --sse-addr (默认值:3000):绑定SSE传输的地址(主机:端口)。也可以通过以下方式设置 GOMEM_SSE_ADDR.
  • --http (默认值:false):启用HTTP JSON API传输
  • --http-addr (默认值:8080):绑定HTTP传输的地址(主机:端口)。也可以通过以下方式设置 GOMEM_HTTP_ADDR.
  • --rest-api-serve:启用REST API服务器
  • --knowledge-base:知识库目录路径
  • --db-path:嵌入式SurealDB数据库的路径(默认值:./rememories.db)
  • --surrealdb-url:远程SurrealDB实例的URL
  • --surrealdb-user:SurrealDB用户名(默认:root)
  • --surrealdb-pass:SurrealDB密码(默认:root)
  • --surrealdb-namespace:SurrealDB命名空间(默认:test)
  • --surrealdb-database:SurrealDB数据库(默认:测试)
  • --gguf-model-path:本地嵌入的GGUF模型文件路径(新)
  • --gguf-threads:GGUF模型的线程数(0=自动检测)(新)
  • --gguf-gpu-layers:GGUF模型的GPU层数(0=仅CPU)(新)
  • --ollama-url:ollama服务器URL(默认值:http://localhost:11434)
  • --ollama-model:Olama嵌入模型
  • --openai-key:OpenAI API密钥
  • --openai-url:OpenAI基本URL(默认值:https://api.openai.com/v1)
  • --openai-model:用于嵌入的OpenAI模型(默认:text-embedding-3-large)
  • --surrealdb-start-cmd:当无法建立初始连接时,启动外部SurrealDB实例的可选命令。也可以通过以下方式设置 GOMEM_SURREALDB_START_CMD.

环境变量

所有标志都可以通过前缀为的环境变量进行设置 GOMEM_ 破折号被下划线取代。例如:

  • GOMEM_SSE
  • GOMEM_SSE_ADDR (例如。 :30000.0.0.0:3000)
  • GOMEM_HTTP
  • GOMEM_HTTP_ADDR (例如。 :80800.0.0.0:8080)
  • GOMEM_REST_API_SERVE
  • GOMEM_KNOWLEDGE_BASE
  • GOMEM_DB_PATH
  • GOMEM_SURREALDB_URL
  • GOMEM_SURREALDB_USER
  • GOMEM_SURREALDB_PASS
  • GOMEM_SURREALDB_NAMESPACE
  • GOMEM_SURREALDB_DATABASE
  • GOMEM_GGUF_MODEL_PATH
  • GOMEM_GGUF_THREADS
  • GOMEM_GGUF_GPU_LAYERS
  • GOMEM_OLLAMA_URL
  • GOMEM_OLLAMA_MODEL
  • GOMEM_OPENAI_KEY
  • GOMEM_OPENAI_URL
  • GOMEM_OPENAI_MODEL
  • GOMEM_CODE_GGUF_MODEL_PATH -代码嵌入的GGUF模型
  • GOMEM_CODE_OLLAMA_MODEL -代码嵌入的Ollama模型
  • GOMEM_CODE_OPENAI_MODEL -代码嵌入的OpenAI模型

此外,还有一个可选的环境变量/标志,用于在服务器启动时无法连接时帮助自动启动本地SurrealDB:

  • GOMEM_SURREALDB_START_CMD / --surrealdb-start-cmd

代码特定嵌入模型(可选)

对于代码索引,您可以使用针对源代码语义进行优化的专用代码嵌入模型。如果未配置,默认嵌入器也用于代码索引。

推荐的代码嵌入模型:

提供者型号备注
GGUF。 coderankembed.Q4_K_M.ggufCodeRankEmbed-针对代码进行了优化
奥拉马jina/jina-embeddings-v2-base-codeJina代码嵌入
OpenAItext-embedding-3-large也适用于代码

配置:

# Use CodeRankEmbed for code, nomic-embed-text for general text
export GOMEM_GGUF_MODEL_PATH="/path/to/nomic-embed-text-v1.5.Q4_K_M.gguf"
export GOMEM_CODE_GGUF_MODEL_PATH="/path/to/coderankembed.Q4_K_M.gguf"

# Or via CLI flags
remembrances-mcp --gguf-model-path /path/to/nomic.gguf --code-gguf-model-path /path/to/coderank.gguf

YAML配置

您还可以使用YAML文件配置服务器。使用 --config 标志指定YAML配置文件的路径。

YAML文件应包含使用与CLI标志相同的键的配置选项(必要时用下划线替换破折号,但与 mapstructure 标签)。CLI标志和环境变量会覆盖YAML设置。

YAML配置文件示例(config.yaml):

# Enable SSE transport
sse: true
sse-addr: ":4000"

# Database configuration
db-path: "./mydata.db"

# Embedder configuration
ollama-model: "llama2"

# Logging
log: "./server.log"

示例用法:

go run ./cmd/remembrances-mcp/main.go --config config.yaml

中提供了一个包含所有选项和默认值的示例配置文件 config.sample.yaml.

示例用法(通过env提供的start命令):

export GOMEM_SURREALDB_START_CMD="surreal start --user root --pass root surrealkv:///path/to/surreal_data"
go run ./cmd/remembrances-mcp/main.go --knowledge-base ./kb

# Start SSE transport on a custom address via CLI flag
go run ./cmd/remembrances-mcp/main.go --sse --sse-addr=":3000"

# Or via environment variable
GOMEM_SSE=true GOMEM_SSE_ADDR=":3000" go run ./cmd/remembrances-mcp/main.go --sse

# Start HTTP JSON API transport
go run ./cmd/remembrances-mcp/main.go --http --http-addr=":8080"

# Or via environment variable
GOMEM_HTTP=true GOMEM_HTTP_ADDR=":8080" go run ./cmd/remembrances-mcp/main.go

运输选项

服务器支持三种传输模式:

  1. stdio(默认):MCP协议通信的标准输入/输出
  2. 上海证券交易所:基于web的客户端的服务器发送事件
  3. 超文本传输协议:简单的HTTP JSON API,用于直接的REST式访问

HTTP传输端点

使用时 --http,服务器公开这些端点:

  • GET /health -健康检查端点
  • GET /mcp/tools -列出可用的MCP工具
  • POST /mcp/tools/call -调用MCP工具

HTTP使用示例:

# List available tools
curl http://localhost:8080/mcp/tools

# Call a tool
curl -X POST http://localhost:8080/mcp/tools/call \
  -H "Content-Type: application/json" \
  -d '{"name": "remembrance_save_fact", "arguments": {"key": "test", "value": "example"}}'

行为:当程序启动时,它将尝试连接到SurrealDB。如果连接失败并且提供了启动命令,程序将生成提供的命令(使用 /bin/sh -c ""),将其stdout/stderr流式传输到正在运行的进程,并以指数回退方式轮询数据库连接长达30秒。如果数据库可用,服务器将继续启动。如果启动命令失败或数据库在超时后仍然无法访问,程序将记录一个描述性错误并退出。

需求

  • 转到1.20+
  • SurrealDB(嵌入式或外部)
  • Ollama(可选,用于本地嵌入)
  • OpenAI API密钥(可选,用于云嵌入)

构建

go mod tidy
go build -o remembrances-mcp ./cmd/remembrances-mcp

示例

GOMEM_OPENAI_KEY=sk-xxx \
GOMEM_DB_PATH=./data.db \
go run ./cmd/remembrances-mcp/main.go --knowledge-base ./kb --rest-api-serve

许可证

LICENSE.txt.

任务

构建

构建项目

go mod tidy
go build -o dist/remembrances-mcp ./cmd/remembrances-mcp
#try to copy to project root if error, remove the binary in the project root first
cp dist/remembrances-mcp ./remembrances-mcp || (rm -f ./remembrances-mcp && cp dist/remembrances-mcp ./remembrances-mcp)

构建和复制

构建项目并将二进制文件复制到路径

交互式:true

make BUILD_TYPE=cuda build
cp ./build/libs/cuda/*.so ./build/
rm -f ~/bin/remembrances-mcp
cp ./build/libs/cuda/*.so ~/bin/
cp ./build/remembrances-mcp ~/bin/
rm -f *.log

启动surraldb

启动SurrealDB实例

交互式:true

surreal start --user root --pass root surrealkv://~/www/MCP/remembrances-mcp/surreal_data

运行测试

运行测试套件

交互式:true

./tests/run_all.sh

运行全部测试

运行完整的Go单元测试以及上面执行的MCP集成测试。

交互式:true

go test ./...
python3 tests/test_user_stats.py
python3 tests/test_kb_simple.py
python3 tests/test_kb_comprehensive.py

标签

为仓库部署一个新标签。

使用版本指定主要/次要/补丁

环境:预发布=0,版本=次要,强制版本=0 输入:版本、预发布、FORCE_VERSION

# https://github.com/unegma/bash-functions/blob/main/update.sh

CURRENT_VERSION=`git describe --abbrev=0 --tags 2>/dev/null`
CURRENT_VERSION_PARTS=(${CURRENT_VERSION//./ })
VNUM1=${CURRENT_VERSION_PARTS[0]}
# remove v
VNUM1=${VNUM1:1}
VNUM2=${CURRENT_VERSION_PARTS[1]}
VNUM3=${CURRENT_VERSION_PARTS[2]}

if [[ $VERSION == 'major' ]]
then
  VNUM1=$((VNUM1+1))
  VNUM2=0
  VNUM3=0
elif [[ $VERSION == 'minor' ]]
then
  VNUM2=$((VNUM2+1))
  VNUM3=0
elif [[ $VERSION == 'patch' ]]
then
  VNUM3=$((VNUM3+1))
else
  echo "Invalid version"
  exit 1
fi

NEW_TAG="v$VNUM1.$VNUM2.$VNUM3"

# if command convco is available, use it to check the version
if command -v convco &> /dev/null
then
  # if the version is a prerelease, add the prerelease tag
  if [[ $PRERELEASE == '1' ]]
  then
    NEW_TAG=v$(convco version -b --prerelease)
  else
    NEW_TAG=v$(convco version -b)
  fi
fi

# if $FORCE_VERSION is different to 0 then use it as the version
if [[ $FORCE_VERSION != '0' ]]
then
  NEW_TAG=v$FORCE_VERSION
fi

echo Adding git tag with version ${NEW_TAG}
git tag ${NEW_TAG}
git push origin ${NEW_TAG}

更新日志

为仓库生成变更日志。

convco changelog > CHANGELOG.md
git add CHANGELOG.md
git commit -m "Update changelog"
git push

发布

将新版本发布到仓库中。

goreleaser release --clean --skip sign

发布快照

将新的快照版本发布到仓库中。

goreleaser release --snapshot --skip sign --clean

构建便携式骆驼cpp

在便携模式下构建llama.cpp(兼容Intel/AMD)

交互式:true

GO_LLAMA_DIR=/www/MCP/Remembrances/go-llama.cpp PORTABLE=1 ./scripts/build-cuda-libs.sh

构建骆驼cpp

使用当前CPU的优化构建llama.cpp

交互式:true

GO_LLAMA_DIR=/www/MCP/Remembrances/go-llama.cpp PORTABLE=0 ./scripts/build-cuda-libs.sh

距离

创建分发包

rm -rf dist-variants/*

echo "Creating distribution package linux amd64 cuda portable (AMD Ryzen compatible)..."
xc build-llama-cpp-portable
mkdir -p dist-variants/linux-amd64-cuda-amd-ryzen
cp ./build/*.so ./dist-variants/linux-amd64-cuda-amd-ryzen/
make BUILD_TYPE=cuda build
cp ./build/remembrances-mcp ./dist-variants/linux-amd64-cuda-amd-ryzen/
cp config.*.yaml ./dist-variants/linux-amd64-cuda-amd-ryzen/
cd ./dist-variants/linux-amd64-cuda-amd-ryzen/
zip -9 ../remembrances-mcp-linux-amd64-nvidia-portable.zip *
cd ../../

echo "Creating distribution package linux amd64 cuda (optimized for current CPU)..."
xc build-llama-cpp
mkdir -p dist-variants/linux-amd64-cuda
cp ./build/*.so ./dist-variants/linux-amd64-cuda/
make BUILD_TYPE=cuda build
cp ./build/remembrances-mcp ./dist-variants/linux-amd64-cuda/
cp config.*.yaml ./dist-variants/linux-amd64-cuda/
cd ./dist-variants/linux-amd64-cuda/
zip -9 ../remembrances-mcp-linux-amd64-nvidia.zip *
cd ../../

echo "Creating distribution package linux amd64 cpu (optimized for current CPU)..."
xc build-llama-cpp
mkdir -p dist-variants/linux-amd64-cpu
cp ./build/*.so ./dist-variants/linux-amd64-cpu/
make BUILD_TYPE=cpu build
cp ./build/remembrances-mcp ./dist-variants/linux-amd64-cpu/
cp config.*.yaml ./dist-variants/linux-amd64-cpu/
cd ./dist-variants/linux-amd64-cpu/
zip -9 ../remembrances-mcp-linux-amd64-cpu-only.zip *
cd ../../

echo "Creating distribution package OSX arm64 metal (M1/M2 optimized)..."
ssh mac-mini-de-digio "cd www/MCP/remembrances-mcp;pwd;/usr/local/bin/xc build-libs-osx"
mkdir -p dist-variants/darwin-arm64-metal
scp mac-mini-de-digio:~/www/MCP/remembrances-mcp/build/*.dylib ./dist-variants/darwin-arm64-metal/
ssh mac-mini-de-digio "cd www/MCP/remembrances-mcp;pwd;/usr/local/bin/xc build-osx"
scp mac-mini-de-digio:~/www/MCP/remembrances-mcp/build/remembrances-mcp ./dist-variants/darwin-arm64-metal/
cp config.*.yaml ./dist-variants/darwin-arm64-metal/
zip -9 ./dist-variants/remembrances-mcp-darwin-aarch64.zip ./dist-variants/darwin-arm64-metal/*

echo "Creating docker images..."
make docker-prepare-cpu
make docker-build-cpu
make docker-push-cpu

构建osx

为macOS构建(arm64金属)

交互式:true

export PATH=$HOME/bin:$HOME/.local/bin:/usr/local/bin:/opt/homebrew/bin:$PATH
make BUILD_TYPE=metal build

构建libs-osx

为macOS构建库(arm64-metal)

交互式:true

export PATH=$HOME/bin:$HOME/.local/bin:/usr/local/bin:/opt/homebrew/bin:$PATH
make dist-darwin-arm64

目录标签

目录标签

代码索引向量数据库Shell知识管理本地部署AI代理长期记忆

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

17

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP