Skip to main content
Glama
evangstav

Memory MCP Server

by evangstav

Memory MCP Server

メモリ内のエンティティ、関係、および観測を管理するためのナレッジグラフ機能を提供するModel Context Protocol (MCP) サーバーです。データの整合性を維持するための厳格な検証ルールを備えています。

インストール

Claude Desktopにサーバーをインストールします:

mcp install main.py -v MEMORY_FILE_PATH=/path/to/memory.jsonl

Related MCP server: MCP Memory Server - HTTP Streaming

データ検証ルール

エンティティ名

  • 小文字で始まる必要があります

  • 小文字、数字、ハイフンを含めることができます

  • 最大長は100文字です

  • グラフ内で一意である必要があります

  • 有効な名前の例: python-project, meeting-notes-2024, user-john

エンティティタイプ

以下のエンティティタイプがサポートされています:

  • person: 人物エンティティ

  • concept: 抽象的なアイデアや原則

  • project: 作業イニシアチブやタスク

  • document: あらゆる形式のドキュメント

  • tool: ソフトウェアツールやユーティリティ

  • organization: 企業やグループ

  • location: 物理的または仮想的な場所

  • event: 時間制限のある出来事

観測

  • 空ではない文字列

  • 最大長は500文字です

  • エンティティごとに一意である必要があります

  • 事実に基づいた客観的な記述であるべきです

  • 関連する場合はタイムスタンプを含めてください

関係

以下の関係タイプがサポートされています:

  • knows: 人と人のつながり

  • contains: 親/子の関係

  • uses: エンティティが別のエンティティを利用する関係

  • created: 著作権/作成関係

  • belongs-to: 所属/所有関係

  • depends-on: 依存関係

  • related-to: 一般的な関係

その他の関係ルール:

  • ソースエンティティとターゲットエンティティの両方が存在する必要があります

  • 自己参照関係は許可されません

  • 循環依存は許可されません

  • 定義済みの関係タイプを使用する必要があります

使用方法

サーバーはナレッジグラフを管理するためのツールを提供します:

エンティティの取得

result = await session.call_tool("get_entity", {
    "entity_name": "example"
})
if not result.success:
    if result.error_type == "NOT_FOUND":
        print(f"Entity not found: {result.error}")
    elif result.error_type == "VALIDATION_ERROR":
        print(f"Invalid input: {result.error}")
    else:
        print(f"Error: {result.error}")
else:
    entity = result.data
    print(f"Found entity: {entity}")

グラフの取得

result = await session.call_tool("get_graph", {})
if result.success:
    graph = result.data
    print(f"Graph data: {graph}")
else:
    print(f"Error retrieving graph: {result.error}")

エンティティの作成

# Valid entity creation
entities = [
    Entity(
        name="python-project",  # Lowercase with hyphens
        entityType="project",   # Must be a valid type
        observations=["Started development on 2024-01-29"]
    ),
    Entity(
        name="john-doe",
        entityType="person",
        observations=["Software engineer", "Joined team in 2024"]
    )
]
result = await session.call_tool("create_entities", {
    "entities": entities
})
if not result.success:
    if result.error_type == "VALIDATION_ERROR":
        print(f"Invalid entity data: {result.error}")
    else:
        print(f"Error creating entities: {result.error}")

観測の追加

# Valid observation
result = await session.call_tool("add_observation", {
    "entity": "python-project",
    "observation": "Completed initial prototype"  # Must be unique for entity
})
if not result.success:
    if result.error_type == "NOT_FOUND":
        print(f"Entity not found: {result.error}")
    elif result.error_type == "VALIDATION_ERROR":
        print(f"Invalid observation: {result.error}")
    else:
        print(f"Error adding observation: {result.error}")

関係の作成

# Valid relation
result = await session.call_tool("create_relation", {
    "from_entity": "john-doe",
    "to_entity": "python-project",
    "relation_type": "created"  # Must be a valid type
})
if not result.success:
    if result.error_type == "NOT_FOUND":
        print(f"Entity not found: {result.error}")
    elif result.error_type == "VALIDATION_ERROR":
        print(f"Invalid relation data: {result.error}")
    else:
        print(f"Error creating relation: {result.error}")

メモリの検索

result = await session.call_tool("search_memory", {
    "query": "most recent workout"  # Supports natural language queries
})
if result.success:
    if result.error_type == "NO_RESULTS":
        print(f"No results found: {result.error}")
    else:
        results = result.data
        print(f"Search results: {results}")
else:
    print(f"Error searching memory: {result.error}")

検索機能は以下をサポートしています:

  • 時間的なクエリ(例: "most recent", "last", "latest")

  • アクティビティクエリ(例: "workout", "exercise")

  • 一般的なエンティティ検索

  • 80%の類似度しきい値によるあいまい一致

  • 重み付け検索:

    • エンティティ名(重み: 1.0)

    • エンティティタイプ(重み: 0.8)

    • 観測(重み: 0.6)

エンティティの削除

result = await session.call_tool("delete_entities", {
    "names": ["python-project", "john-doe"]
})
if not result.success:
    if result.error_type == "NOT_FOUND":
        print(f"Entity not found: {result.error}")
    else:
        print(f"Error deleting entities: {result.error}")

関係の削除

result = await session.call_tool("delete_relation", {
    "from_entity": "john-doe",
    "to_entity": "python-project"
})
if not result.success:
    if result.error_type == "NOT_FOUND":
        print(f"Entity not found: {result.error}")
    else:
        print(f"Error deleting relation: {result.error}")

メモリのフラッシュ

result = await session.call_tool("flush_memory", {})
if not result.success:
    print(f"Error flushing memory: {result.error}")

エラータイプ

サーバーは以下のエラータイプを使用します:

  • NOT_FOUND: エンティティまたはリソースが見つかりません

  • VALIDATION_ERROR: 無効な入力データ

  • INTERNAL_ERROR: サーバー側のエラー

  • ALREADY_EXISTS: リソースは既に存在します

  • INVALID_RELATION: エンティティ間の無効な関係

レスポンスモデル

すべてのツールは、これらのモデルを使用して型指定されたレスポンスを返します:

EntityResponse

class EntityResponse(BaseModel):
    success: bool
    data: Optional[Dict[str, Any]] = None
    error: Optional[str] = None
    error_type: Optional[str] = None

GraphResponse

class GraphResponse(BaseModel):
    success: bool
    data: Optional[Dict[str, Any]] = None
    error: Optional[str] = None
    error_type: Optional[str] = None

OperationResponse

class OperationResponse(BaseModel):
    success: bool
    error: Optional[str] = None
    error_type: Optional[str] = None

開発

テストの実行

pytest tests/

新機能の追加

  1. validation.py の検証ルールを更新します

  2. tests/test_validation.py にテストを追加します

  3. knowledge_graph_manager.py に変更を実装します

A
license - permissive license
Not graded
quality - not tested
D
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables creation and management of knowledge graphs with entities, relationships, and observations through HTTP streaming. Supports persistent storage, search functionality, and CRUD operations for building and querying interconnected knowledge bases.
    2
  • A
    license
    C
    quality
    D
    maintenance
    Provides persistent memory and knowledge graph capabilities for AI assistants using local SQLite storage. Enables creating, searching, and managing entities, relationships, and observations with vector search support across conversations.
    7
    10
    15
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides LLMs with persistent memory across conversations using a knowledge graph that stores entities, relationships, and observations with support for PostgreSQL or SQLite backends.
    102
    24
    MIT

View all related MCP servers

Related MCP Connectors

  • Manage TTRPG campaigns: NPCs, locations, factions, quests, sessions, lore, and knowledge graphs.

  • AI knowledge graph for architecture, portfolio, and digital strategy management.

  • End-to-end agent-managed company brain. Docs, diagrams, plans, Knowledge Graph. Lean & affordable.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/evangstav/python-memory-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server