Sunbeam Memory MCP server
2026년 8월 27일 커밋벡터 임베딩을 사용하여 AI 어시스턴트가 사실, 코드, 문서를 저장하고 검색할 수 있는 개인용 시맨틱 메모리 서버를 제공합니다.
다른 이름 sunbeamdotpt/memory
- 스타
- 23
- Tools
- —
- 다운로드, 30일
- —
- 최신 버전
- —
- 마지막 커밋
- 2026년 8월 27일
- 라이선스
- MIT
Sunbeam Memory MCP란?
Sunbeam Memory은(는) MCP server입니다. 벡터 임베딩을 사용하여 AI 어시스턴트가 사실, 코드, 문서를 저장하고 검색할 수 있는 개인용 시맨틱 메모리 서버를 제공합니다.
프로젝트 README에서 생성된 요약
Sunbeam Memory MCP server 정보
Sunbeam Memory는 AI 어시스턴트가 벡터 임베딩을 사용하여 정보를 저장하고 검색할 수 있는 시맨틱 메모리 계층을 제공합니다. 사용자는 사실, 코드 스니펫, 노트, 문서를 저장할 수 있으며, 단순한 키워드 매칭이 아닌 의미 기반의 검색이 가능합니다. 이 서버는 Claude Desktop을 위해 설정이 필요 없는 로컬 stdio 프로세스로 배포하거나, 여러 기기에서 접근할 수 있는 원격 HTTP 서버로 배포할 수 있습니다.
개발자는 디렉토리, git repository 또는 PDF 및 텍스트 문서와 같은 특정 파일을 감시하여 데이터를 자동으로 수집하는 데 이 서버를 사용할 수 있습니다. git 브랜치의 변경 사항을 추적하고 그에 따라 사실을 업데이트하는 내장 인덱서를 갖추고 있습니다. 원격 설정의 경우, 서버는 간단한 bearer token 또는 Keycloak이나 Auth0와 같은 OIDC 제공업체를 통한 인증을 지원합니다. 데이터는 SQLite 데이터베이스 내에서 관리되며, 시스템은 정보를 처리하기 위해 BGE 임베딩 모델을 사용합니다.
활용 사례
- 1시맨틱 정보 검색AI 어시스턴트에게 정확한 문구가 아닌 개념을 바탕으로 특정 정보를 찾아달라고 요청하세요.
- 2자동 프로젝트 동기화로컬 코드 repository를 지정하여 AI의 메모리를 자동으로 최신 상태로 유지하세요.
- 3원격 메모리 접근개인 지식 베이스를 중앙 서버에 호스팅하여 어디서든 모든 MCP 클라이언트와 함께 사용하세요.
- 4구조화된 데이터 추적고유 식별자를 사용하여 저장된 모든 정보의 출처를 명확하게 기록하세요.
프로젝트의 README를 바탕으로 작성되었습니다. 모든 활용 사례는 해당 내용의 인용문과 대조하여 확인합니다.
구성
MCP_AUTH_TOKENMCP_MEMORY_BASE_DIRMCP_OIDC_AUDIENCEMCP_OIDC_ISSUER
| 이름 | 설명 | 유형 |
|---|---|---|
| MCP_AUTH_TOKEN | — | |
| MCP_MEMORY_BASE_DIR | — | |
| MCP_OIDC_AUDIENCE | — | |
| MCP_OIDC_ISSUER | — |
자동 검사
2026년 11월 14일에 실행됨전체 보고서 →아직 인증되지 않았습니다. 서버는 80점 이상의 점수, 심각한 결함 없음, 그리고 검사에 충분한 데이터를 갖추어야 합니다. 검사 방식 · 점수를 높이기 위해 수정할 항목
- 소스 저장소 연결 및 접근 가능sunbeamdotpt/memory is public and reachablegithub.com/sunbeamdotpt/memory ↗통과
- 패키지가 이 저장소를 소스로 명시검사되지 않음
- 빌드 출처(Sigstore 증명)검사되지 않음
- 오픈 소스 라이선스 (OSI)MITspdx.org/licenses/MIT.html ↗통과
- 최근 1년 내 커밋 또는 릴리스Last commit or release 2026-08-27github.com/sunbeamdotpt/memory ↗통과
- OpenSSF Scorecard검사되지 않음
- 패키지 이름이 인기 패키지와 유사하지 않음검사되지 않음
- 패키지 및 해당 종속성에 중요한 보안 권고 없음검사되지 않음
- 모델에 대한 숨겨진 지침 없음0 tool descriptions and the README read; no override phrases, credential paths or hidden characters통과
- 파괴적인 도구에 라벨 표시됨검사되지 않음
- 원격 엔드포인트가 MCP 핸드셰이크에 응답검사되지 않음
README
GitHub에서 보기title: Sunbeam Memory
sunbeam-memory
A personal semantic memory server for AI assistants. Store facts, code snippets, notes, and documents with vector embeddings — then let your AI search them by meaning, not just keywords.
Also watches directories and auto-ingests files (code, PDFs, text) so your memory stays in sync with your projects.
Works as a local stdio MCP server (zero config, Claude Desktop) or as a remote HTTP server so you can access your memory from any machine.
Built on the official rmcp Rust SDK for native MCP protocol support. Also exposes a ConnectRPC (protobuf over HTTP/2) API for programmatic access from scripts and services.
Install
Requirements: Rust 1.75+ — the first build downloads the BGE embedding model (~130 MB).
git clone https://github.com/your-org/sunbeam-memory
cd sunbeam-memory/mcp-server
cargo build --release
# binary at target/release/sunbeam-memory
Or run directly without a permanent binary:
cargo run --release -- http --port 3456
Local use with Claude Desktop
The simplest setup: Claude Desktop talks to the server over stdio. No network, no auth.
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"memory": {
"command": "/path/to/sunbeam-memory"
}
}
}
The server stores data in the platform data directory by default:
- macOS:
~/Library/Application Support/sunbeam/memory - Linux:
~/.local/share/sunbeam/memory - Windows:
%APPDATA%/sunbeam/memory
Set MCP_MEMORY_BASE_DIR to change it:
{
"mcpServers": {
"memory": {
"command": "/path/to/sunbeam-memory",
"env": {
"MCP_MEMORY_BASE_DIR": "/Users/you/.local/share/sunbeam-memory"
}
}
}
}
Remote use (HTTP mode)
Run the server on a VPS or home server so you can access your memory from any machine or AI client.
1. Generate a token:
openssl rand -hex 32
# e.g. a3f8c2e1b4d7...
2. Start the server with the token:
MCP_AUTH_TOKEN=a3f8c2e1b4d7... cargo run --release -- http --port 3456
With MCP_AUTH_TOKEN set, the server binds to 0.0.0.0 and requires Authorization: Bearer <token> on every request.
3. Configure Claude Desktop (or any MCP client) to use the remote server:
{
"mcpServers": {
"memory": {
"type": "http",
"url": "http://your-server:3456/mcp",
"headers": {
"Authorization": "Bearer a3f8c2e1b4d7..."
}
}
}
}
Tip: Put a reverse proxy (nginx, Caddy) in front with TLS so your token travels over HTTPS.
Run as a systemd user daemon (Kimi Code / local HTTP)
You can keep the HTTP server running in the background as a user-scoped systemd service. This is the easiest way to connect Kimi Code (or any local MCP client) over HTTP without managing a terminal window on Linux.
1. Create the service file
~/.config/systemd/user/sunbeam-memory.service:
[Unit]
Description=Sunbeam Memory MCP Server
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/sunbeam-memory http --port 3456
Restart=on-failure
Environment="MCP_MEMORY_BASE_DIR=%h/.local/share/sunbeam/memory"
[Install]
WantedBy=default.target
Adjust ExecStart to the path of your sunbeam-memory binary (for example, ExecStart=%h/development/sunbeam/memory/target/release/sunbeam-memory http --port 3456 if you are running from a local build).
2. Start and enable the service
systemctl --user daemon-reload
systemctl --user enable sunbeam-memory.service
systemctl --user start sunbeam-memory.service
systemctl --user status sunbeam-memory.service
3. Configure Kimi Code
Add the server to ~/.kimi-code/mcp.json:
{
"mcpServers": {
"memory": {
"url": "http://127.0.0.1:3456/mcp"
}
}
}
Because no MCP_AUTH_TOKEN is set, the server binds to 127.0.0.1 only and does not require authentication, which is safe for a local daemon.
OIDC / OAuth2 authentication
If you already have an OIDC provider (Keycloak, Auth0, Dex, Kratos+Hydra, etc.), you can use it instead of a raw token. The server fetches the JWKS at startup and validates RS256/ES256 JWTs on every request.
MCP_OIDC_ISSUER=https://auth.example.com \
MCP_OIDC_AUDIENCE=sunbeam-memory \ # optional — leave out to skip aud check
cargo run --release -- http --port 3456
Your MCP client then gets a token from the provider and passes it as a Bearer token:
{
"mcpServers": {
"memory": {
"type": "http",
"url": "http://your-server:3456/mcp",
"headers": {
"Authorization": "Bearer <access_token>"
}
}
}
}
OIDC takes priority over MCP_AUTH_TOKEN if both are set.
Environment variables
| Variable | Default | Description |
|---|---|---|
MCP_MEMORY_BASE_DIR |
platform data dir | Where the SQLite database and model cache are stored |
MCP_AUTH_TOKEN |
(unset) | Simple bearer token for remote hosting. Unset = localhost-only |
MCP_OIDC_ISSUER |
(unset) | OIDC issuer URL. When set, validates JWT bearer tokens via JWKS |
MCP_OIDC_AUDIENCE |
(unset) | Expected aud claim. Leave unset to skip audience validation |
MCP_STDIO_KEEPALIVE_SECONDS |
30 |
Interval between MCP ping requests over stdio; 0 disables |
MCP_SSE_KEEPALIVE_SECONDS |
15 |
Interval between SSE keep-alive comments in HTTP mode; 0 disables |
MCP_SESSION_KEEPALIVE_SECONDS |
300 |
Idle timeout before an inactive HTTP session is closed; 0 disables |
Tools
Memory tools
store_fact
Embed and store a piece of text. Returns the fact ID.
content (required) Text to store
namespace (optional) Logical group — e.g. "code", "notes", "docs". Default: "default"
source (optional) smem URN identifying where this came from (see below)
search_facts
Semantic search — finds content by meaning, not exact words.
query (required) What you're looking for
limit (optional) Max results. Default: 10
namespace (optional) Restrict search to one namespace
update_fact
Update an existing fact in place. Keeps the same ID, re-embeds the new content.
id (required) Fact ID from store_fact or search_facts
content (required) New text content
source (optional) New smem URN
delete_fact
Delete a fact by ID.
id (required) Fact ID
list_facts
List facts in a namespace, newest first. Supports date filtering.
namespace (optional) Namespace to list. Default: "default"
limit (optional) Max results. Default: 50
from (optional) Only show facts stored on or after this time (RFC 3339 or Unix timestamp)
to (optional) Only show facts stored on or before this time
Indexer tools (file watching & ingestion)
Point the server at directories, git repos, or individual files and it will automatically ingest them into searchable memory. PDFs are extracted page-by-page. Binary files are skipped. Git state is tracked so edits on the same branch update facts in place, while new branches create new facts.
add_watch_target
Start watching a path. Supports globs (* ? [...]). Respects .gitignore when scanning git repositories.
path (required) Directory, file, or glob pattern to watch
namespace (optional) Namespace for ingested facts. Default: "default"
type (optional) "file" | "directory" | "git_repo". Default: inferred from path
Examples:
add_watch_targetwithpath: "/home/me/project/src"add_watch_targetwithpath: "/home/me/docs/**/*.pdf",namespace: "docs"add_watch_targetwithpath: "/home/me/notes/*.{md,txt}",namespace: "notes"add_watch_targetwithpath: "/home/me/project",type: "git_repo",namespace: "project"
remove_watch_target
Stop watching a target by ID.
target_id (required) ID returned by add_watch_target
list_watch_targets
List all active watch targets. No inputs.
sync_watch_target
Force a full re-scan of a target right now.
target_id (required) ID of the target to sync
get_index_progress
Check ingestion progress for a target: files pending, completed, failed, and current file.
target_id (required) ID of the target
restore_stale_fact
Restore a stale (soft-deleted) fact so it appears in search again.
id (required) Fact ID to restore
URN tools
build_source_urn
Build a valid smem URN from components. Use this before passing source to store_fact.
content_type (required) code | doc | web | data | note | conf
origin (required) git | fs | https | http | db | api | manual
locator (required) Origin-specific path (see describe_urn_schema)
fragment (optional) Line reference: L42 or L10-L30
parse_source_urn
Parse and validate a smem URN. Returns structured components or an error.
urn (required) The URN to parse, e.g. urn:smem:code:fs:/path/to/file.rs#L10
describe_urn_schema
Returns the full smem URN taxonomy: content types, origins, locator shapes, and examples. No inputs.
Observability tools
get_recent_errors
List recent ingestion or system errors so you can be informed of failures.
component (optional) Filter to a specific component (e.g. "indexer", "extractor")
limit (optional) Max errors to return. Default: 10
resolve_error
Mark a logged error as resolved so it no longer appears in get_recent_errors.
error_id (required) ID of the error to resolve
Source URNs
Every fact can carry a source URN that records where it came from:
urn:smem:<type>:<origin>:<locator>[#<fragment>]
Types: code doc web data note conf
Origins and locator shapes:
| Origin | Locator | Example |
|---|---|---|
fs |
[hostname:]<absolute-path> |
urn:smem:code:fs:/home/me/project/main.rs#L10-L30 |
git |
<host>:<org>:<repo>:<branch>:<path> |
urn:smem:code:git:github.com:org:repo:main:src/lib.rs |
https |
<host>/<path> |
urn:smem:doc:https:docs.example.com/guide |
db |
<driver>/<host>/<db>/<table>/<pk> |
urn:smem:data:db:postgres/localhost/app/users/42 |
api |
<host>/<path> |
urn:smem:data:api:api.example.com/v1/items/99 |
manual |
<label> |
urn:smem:note:manual:meeting-2026-03-04 |
Use build_source_urn to construct one without memorising the format. Use describe_urn_schema for the full spec.
Data
Facts are stored in a SQLite database (semantic.db) in MCP_MEMORY_BASE_DIR. The embedding model is cached by fastembed on first run.
To back up your memory: copy the semantic.db file. It's self-contained.
Architecture
┌─────────────────┐ ┌─────────────────┐
│ MCP client │ │ gRPC/HTTP │
│ (stdio / HTTP) │ │ client │
└────────┬────────┘ └────────┬────────┘
│ │
▼ ▼
mcp/server.rs connect/service.rs
(rmcp tools) (ConnectRPC proto)
│ │
└───────────┬───────────┘
▼
core/service.rs ← validation, orchestration
│
memory/service.rs ← embed, search, CRUD
│
┌───────────┴───────────┐
▼ ▼
semantic/store.rs indexer/
(HNSW + SQLite) (watcher, scanner, PDF)
MCP Protocol: MCP 2025-06-18 via rmcp (stdio + Streamable HTTP).
Programmatic API: ConnectRPC (sunbeam.memory.v1.MemoryService) via protobuf + HTTP/2.
Embeddings: BGE-Base-English-v1.5 via fastembed, 768 dimensions, ~130 MB model download on first run.
Vector search: usearch HNSW index with cosine similarity, persisted as a blob inside SQLite.
Search strategy: Fused BM25 + vector search via Reciprocal Rank Fusion (RRF).
Sunbeam Memory MCP 질문
서버에서 파일 업데이트는 어떻게 처리하나요?
서버가 디렉토리를 감시하며 코드, PDF, 텍스트 등의 파일을 자동으로 수집합니다. git repository의 경우 상태를 추적하므로, 동일한 브랜치에서의 수정 사항은 기존 사실을 그 자리에서 업데이트합니다.
다른 기기에서도 메모리에 접근할 수 있나요?
네, VPS나 홈 서버에서 HTTP 모드로 서버를 실행하면 어떤 기기나 AI 클라이언트에서도 메모리에 접근할 수 있습니다.
저장된 데이터를 어떻게 백업하나요?
데이터가 독립적인 SQLite 데이터베이스에 저장되므로, semantic.db 파일을 복사하는 것만으로 간단히 백업할 수 있습니다.
원격 사용을 위한 인증을 지원하나요?
네, MCP_AUTH_TOKEN을 통해 간단한 bearer token을 사용하거나 Keycloak 또는 Auth0와 같은 OIDC 제공업체와 통합할 수 있습니다.