The Central Memory MCP Server is a serverless Azure Functions (.NET 10 isolated worker) application exposing Model Context Protocol (MCP) memory & knowledge graph operations. It stores entities, relations, observations, and statistics in Azure Table Storage with strong workspace isolation.
Serverless Azure Functions (.NET 10 isolated) implementing a minimal MCP memory graph (alpha). Current scope: entities + relations with basic CRUD and graph read. Workspace isolation via WorkspaceName partition key.
flowchart LR
C[Client / MCP Tool] -->|read_graph / upsert_entity / upsert_relation / get_entity_relations| F[GraphFunctions]
F --> S[KnowledgeGraphService]
F --> R[RelationService]
S --> T1[entities Table]
R --> T2[relations Table]
/api/health, /api/ready.EntityModel, RelationModel, WorkspaceModel (workspace not yet used in tool surface).public record EntityModel(string WorkspaceName, string Name, string EntityType, List<string> Observations, string? Metadata)
// PartitionKey = WorkspaceName, RowKey = Guid (Id)
// Observations persisted joined by "||" delimiter
public record RelationModel(string WorkspaceName, Guid FromEntityId, Guid ToEntityId, string RelationType, string? Metadata)
// PartitionKey = WorkspaceName, RowKey = Guid (Id)
sequenceDiagram
participant Tool as MCP Tool
participant Func as GraphFunctions.UpsertEntity
participant Svc as KnowledgeGraphService
participant Tbl as Azure Table (entities)
Tool->>Func: UpsertEntityRequest
Func->>Svc: UpsertEntityAsync(model)
Svc->>Svc: Lookup existing by name
Svc->>Tbl: UpsertEntity
Tbl-->>Svc: Success
Svc-->>Func: EntityModel (Id preserved/reused)
Func-->>Tool: { success, id, name }
{ success=false, message="..." }.(Planned) Structured logging with workspace scope; currently minimal.
Development assumes trusted environment; add auth (Azure AD) before external exposure.
Publish via dotnet publish and Azure Functions tooling. Health endpoints for readiness probes.