@zhangzichao2008/mcp-graphiti
Version:
Graphiti MCP Server - Temporal Knowledge Graph for AI Agents
86 lines • 2.73 kB
JavaScript
import { z } from 'zod';
// Basic Graph Types
export const NodeSchema = z.object({
id: z.string(),
type: z.string(),
name: z.string(),
summary: z.string().optional(),
created_at: z.string(),
valid_at: z.string().optional(),
invalid_at: z.string().optional(),
attributes: z.record(z.any()).optional(),
});
export const EdgeSchema = z.object({
id: z.string(),
type: z.string(),
source_id: z.string(),
target_id: z.string(),
name: z.string(),
summary: z.string().optional(),
created_at: z.string(),
valid_at: z.string().optional(),
invalid_at: z.string().optional(),
attributes: z.record(z.any()).optional(),
source_node: NodeSchema.optional(),
target_node: NodeSchema.optional(),
});
export const GraphSchema = z.object({
nodes: z.array(NodeSchema),
edges: z.array(EdgeSchema),
});
// MCP Tool Input/Output Types
export const AddEpisodesInputSchema = z.object({
episodes: z
.array(z.object({
name: z.string(),
content: z.string(),
source_description: z.string().optional(),
source: z.string().optional(),
reference_time: z.string().optional(),
}))
.min(1, 'At least one episode is required'),
});
export const SearchInputSchema = z.object({
query: z.string(),
num_results: z.number().int().min(1).max(100).default(10),
center_node_uuid: z.string().optional(),
search_type: z.enum(['semantic', 'keyword', 'hybrid']).default('hybrid'),
});
export const GetEntitiesInputSchema = z.object({
name: z.string(),
entity_type: z.string().optional(),
});
export const GetFactsInputSchema = z.object({
source_node_name: z.string().optional(),
target_node_name: z.string().optional(),
fact_type: z.string().optional(),
});
// Database Configuration
export const DatabaseConfigSchema = z.object({
uri: z.string(),
user: z.string(),
password: z.string(),
database: z.string().optional(),
});
// LLM Configuration (OpenAI Compatible API)
export const LLMConfigSchema = z.object({
provider: z.literal('openai'), // 统一使用openai协议
api_key: z.string(),
api_url: z.string().optional(),
model: z.string().optional(),
});
// Embedding Configuration (智谱AI)
export const EmbeddingConfigSchema = z.object({
api_key: z.string(),
api_url: z.string(),
model: z.string(),
});
// Graphiti Configuration
export const GraphitiConfigSchema = z.object({
database: DatabaseConfigSchema,
llm: LLMConfigSchema,
embedding: EmbeddingConfigSchema,
embedding_dimension: z.number().int().default(1536),
log_level: z.enum(['debug', 'info', 'warn', 'error']).default('info'),
});
//# sourceMappingURL=index.js.map