tags : AI, MCP

Cipher

Overview campfirein/cipher: Cipher is an opensource memory layer specifically designed for coding agents. Compatible with Cursor, Windsurf, Claude Desktop, Claude Code, Gemini CLI, AWS’s Kiro, VS Code, and Roo Code through MCP, and coding agents, such as Kimi K2. Built by https://byterover.dev/ AIエージェントに「長期記憶」を与えるCipherを徹底解説!|まさお@未経験からプロまでAI活用

プロジェクトの文脈、過去の修正内容、そして「なぜそうしたのか」という思考プロセスを記憶する MCP。 複数のエージェントをまたいで使用可能。

導入手順

qdrant を使う(現状 sqlit が不安定なため)

VECTOR_STORE_COLLECTION に、プロジェクト固有の名称をつけることで、ほかの DB と衝突することを防ぐ。 open ai か ollama によって、cipher-openai.yml, cipher-ollama.yml を選ぶ。

claude mcp add-json cipher \
  -s local \
  '{
    "type": "stdio",
    "command": "cipher",
    "args": ["--mode", "mcp", "--agent", "/Users/sumisonic/.config/cipher/cipher-openai.yml"],
    "env": {
      "VECTOR_STORE_TYPE": "qdrant",
      "VECTOR_STORE_HOST": "localhost",
      "VECTOR_STORE_PORT": "6333",
      "VECTOR_STORE_URL": "http://localhost:6333",
      "VECTOR_STORE_COLLECTION": "<project name>-memory",
      "VECTOR_STORE_DIMENSION": "3072"
    }
  }'

gitignore に下記を追加

# Cipher data files
data/cipher-*

ollama を使い場合(現状このやり方で進める)

.cipher 以下に設定とデータをまとめたい。

mcp設定

プロジェクト単位で設定する localhost の ollama を参照しているので、local にする

claude mcp add-json cipher \
  -s local \
  '{
    "type": "stdio",
    "command": "cipher",
    "args": ["--mode", "mcp", "--agent", "/Users/sumisonic/.config/cipher/cipher-ollama.yml"],
    "env": {
      "STORAGE_DATABASE_TYPE": "sqlite",
      "STORAGE_DATABASE_PATH": "./.cipher/data",
      "STORAGE_DATABASE_NAME": "memory.db"
    }
  }'

これで下記の .mcp.json が作られる

{
  "mcpServers": {
    "cipher": {
      "type": "stdio",
      "command": "cipher",
      "args": ["--mode", "mcp", "--agent", "/Users/sumisonic/.config/cipher/cipher-ollama.yml"],
      "env": {
        "STORAGE_DATABASE_TYPE": "sqlite",
        "STORAGE_DATABASE_PATH": "./.cipher/data",
        "STORAGE_DATABASE_NAME": "memory.db"
      }
    }
  }
}

.env 下記をプロジェクトルートに置かないと動かないので注意 zshrc で管理した [macOS Keychain を使って環境変数(APIキーなど)を安全に管理する方法](macOS Keychain を使って環境変数(APIキーなど)を安全に管理する方法.md)

# Cipher Environment Variables
# Ollama Configuration (no API key required)
OLLAMA_BASE_URL=http://localhost:11434

.cipher/cipher.yml

下記のファイルを Users/sumisonic.claude/cipher/cipher-ollama.yml に置く cipher.yml は、何の llm を使うかの共通の設定なので .claude 以下に置くようにする。

mcpServers: {}
 
# LLM Configuration (必須)
llm:
  provider: ollama
  model: qwen2.5-coder:7b-instruct-q6_K
 
# Embedding Configuration
embedding:
  type: ollama
  model: bge-m3
 
# System Prompt
systemPrompt: |
  日本語でコード関連の記憶とプロジェクト仕様を管理します。
  あなたは以下を得意とするAIプログラミングアシスタントです:
  - クリーンで効率的なコードの記述
  - デバッグと問題解決
  - コードレビューと最適化
  - 複雑な技術概念の説明
  - プログラミングチャレンジの推論

openai を使う場合

claude mcp add-json cipher \
  -s local \
  '{
    "type": "stdio",
    "command": "cipher",
    "args": ["--mode", "mcp", "--agent", "/Users/sumisonic/.config/cipher/cipher-openai.yml"],
    "env": {
      "STORAGE_DATABASE_TYPE": "sqlite",
      "STORAGE_DATABASE_PATH": "./.cipher/data",
      "STORAGE_DATABASE_NAME": "memory.db"
    }
  }'
 
claude mcp add-json cipher \
  -s local \
  '{
    "type": "stdio",
    "command": "cipher",
    "args": ["--mode", "mcp", "--agent", "/Users/sumisonic/.config/cipher/cipher-openai.yml"],
    "env": {
      "VECTOR_STORE_TYPE": "qdrant",
      "VECTOR_STORE_HOST": "localhost",
      "VECTOR_STORE_PORT": "6333",
      "VECTOR_STORE_URL": "http://localhost:6333",
      "VECTOR_STORE_COLLECTION": "<project name>-memory",
      "VECTOR_STORE_DIMENSION": "3072"
    }
  }'

OPENAI_API_KEY は mcp.json の環境変数で別に設定した方がよい。 [macOS Keychain を使って環境変数(APIキーなど)を安全に管理する方法](macOS Keychain を使って環境変数(APIキーなど)を安全に管理する方法.md)

使い方

プロンプトで下記のように入力するだけ。

cipher を使って○○を記憶して