Memory MCP Server
メモリ内のエンティティ、関係、および観測を管理するためのナレッジグラフ機能を提供するModel Context Protocol (MCP) サーバーです。データの整合性を維持するための厳格な検証ルールを備えています。
インストール
Claude Desktopにサーバーをインストールします:
mcp install main.py -v MEMORY_FILE_PATH=/path/to/memory.jsonlRelated MCP server: Qualitative Researcher MCP Server
データ検証ルール
エンティティ名
小文字で始まる必要があります
小文字、数字、ハイフンを含めることができます
最大長は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] = NoneGraphResponse
class GraphResponse(BaseModel):
success: bool
data: Optional[Dict[str, Any]] = None
error: Optional[str] = None
error_type: Optional[str] = NoneOperationResponse
class OperationResponse(BaseModel):
success: bool
error: Optional[str] = None
error_type: Optional[str] = None開発
テストの実行
pytest tests/新機能の追加
validation.pyの検証ルールを更新しますtests/test_validation.pyにテストを追加しますknowledge_graph_manager.pyに変更を実装します
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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
