geo-mcp-server 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,482 @@
1
+ import { Graph, SystemIds, IdUtils } from '@geoprotocol/geo-sdk';
2
+ import { z } from 'zod';
3
+ export function registerAdvancedTools(server, session) {
4
+ // ── generate_id ──────────────────────────────────────────────────────
5
+ server.tool('generate_id', 'Generate one or more unique Geo knowledge graph IDs (dashless UUID v4)', {
6
+ count: z.number().int().min(1).max(100).optional().describe('Number of IDs to generate (default 1)'),
7
+ }, async ({ count }) => {
8
+ const n = count ?? 1;
9
+ const ids = Array.from({ length: n }, () => IdUtils.generate());
10
+ return {
11
+ content: [
12
+ {
13
+ type: 'text',
14
+ text: JSON.stringify(n === 1 ? { id: ids[0] } : { ids }, null, 2),
15
+ },
16
+ ],
17
+ };
18
+ });
19
+ // ── build_schema ─────────────────────────────────────────────────────
20
+ server.tool('build_schema', 'Build a complete schema (properties + types) in one call. Creates all properties first, then creates types that reference those properties by name.', {
21
+ properties: z
22
+ .array(z.object({
23
+ name: z.string().describe('Property name'),
24
+ dataType: z
25
+ .enum([
26
+ 'TEXT',
27
+ 'INTEGER',
28
+ 'FLOAT',
29
+ 'BOOLEAN',
30
+ 'DATE',
31
+ 'TIME',
32
+ 'DATETIME',
33
+ 'SCHEDULE',
34
+ 'POINT',
35
+ 'BYTES',
36
+ 'DECIMAL',
37
+ 'EMBEDDING',
38
+ 'RELATION',
39
+ ])
40
+ .describe('Data type for the property'),
41
+ description: z.string().optional().describe('Optional description'),
42
+ }))
43
+ .describe('Properties to create'),
44
+ types: z
45
+ .array(z.object({
46
+ name: z.string().describe('Type name'),
47
+ propertyNames: z.array(z.string()).describe('Names of properties to attach (must match property names above or be existing property IDs)'),
48
+ description: z.string().optional().describe('Optional description'),
49
+ }))
50
+ .describe('Types to create'),
51
+ }, async ({ properties, types }) => {
52
+ const propertyMap = new Map();
53
+ const createdProperties = [];
54
+ let totalOps = 0;
55
+ // Create all properties
56
+ for (const prop of properties) {
57
+ const result = Graph.createProperty({
58
+ name: prop.name,
59
+ dataType: prop.dataType,
60
+ description: prop.description,
61
+ });
62
+ propertyMap.set(prop.name, result.id);
63
+ createdProperties.push({ name: prop.name, id: result.id });
64
+ session.addOps(result.ops, {
65
+ id: result.id,
66
+ type: 'property',
67
+ name: prop.name,
68
+ opsCount: result.ops.length,
69
+ });
70
+ totalOps += result.ops.length;
71
+ }
72
+ // Create all types
73
+ const createdTypes = [];
74
+ for (const t of types) {
75
+ const propertyIds = t.propertyNames.map((name) => {
76
+ const id = propertyMap.get(name);
77
+ // If not found in current batch, treat as an existing property ID
78
+ return id ?? name;
79
+ });
80
+ const result = Graph.createType({
81
+ name: t.name,
82
+ description: t.description,
83
+ properties: propertyIds,
84
+ });
85
+ createdTypes.push({ name: t.name, id: result.id });
86
+ session.addOps(result.ops, {
87
+ id: result.id,
88
+ type: 'type',
89
+ name: t.name,
90
+ opsCount: result.ops.length,
91
+ });
92
+ totalOps += result.ops.length;
93
+ }
94
+ return {
95
+ content: [
96
+ {
97
+ type: 'text',
98
+ text: JSON.stringify({ properties: createdProperties, types: createdTypes, totalOps }, null, 2),
99
+ },
100
+ ],
101
+ };
102
+ });
103
+ // ── create_knowledge_graph ───────────────────────────────────────────
104
+ server.tool('create_knowledge_graph', 'Create a complete knowledge graph in one call: schema (properties + types), entities with values, and relations between entities. All name-based references are resolved automatically.', {
105
+ schema: z.object({
106
+ properties: z
107
+ .array(z.object({
108
+ name: z.string().describe('Property name'),
109
+ dataType: z
110
+ .enum([
111
+ 'TEXT',
112
+ 'INTEGER',
113
+ 'FLOAT',
114
+ 'BOOLEAN',
115
+ 'DATE',
116
+ 'TIME',
117
+ 'DATETIME',
118
+ 'SCHEDULE',
119
+ 'POINT',
120
+ 'BYTES',
121
+ 'DECIMAL',
122
+ 'EMBEDDING',
123
+ 'RELATION',
124
+ ])
125
+ .describe('Data type'),
126
+ }))
127
+ .describe('Properties to create'),
128
+ types: z
129
+ .array(z.object({
130
+ name: z.string().describe('Type name'),
131
+ propertyNames: z.array(z.string()).describe('Property names to attach to this type'),
132
+ }))
133
+ .describe('Types to create'),
134
+ }),
135
+ entities: z
136
+ .array(z.object({
137
+ name: z.string().describe('Entity name'),
138
+ typeName: z.string().describe('Name of the type (must match a type name from schema)'),
139
+ values: z
140
+ .array(z.object({
141
+ propertyName: z.string().describe('Property name (must match a property name from schema)'),
142
+ type: z
143
+ .enum(['text', 'integer', 'float', 'boolean', 'date', 'time', 'datetime', 'schedule', 'point'])
144
+ .describe('Value type'),
145
+ value: z.union([z.string(), z.number(), z.boolean()]).describe('The value'),
146
+ }))
147
+ .optional()
148
+ .describe('Property values for this entity'),
149
+ }))
150
+ .optional()
151
+ .describe('Entities to create'),
152
+ relations: z
153
+ .array(z.object({
154
+ fromEntityName: z.string().describe('Name of the source entity'),
155
+ toEntityName: z.string().describe('Name of the target entity'),
156
+ relationType: z.string().describe('Relation type name'),
157
+ }))
158
+ .optional()
159
+ .describe('Relations between entities'),
160
+ }, async ({ schema, entities, relations }) => {
161
+ const propertyMap = new Map();
162
+ const typeMap = new Map();
163
+ const entityMap = new Map();
164
+ const relationTypeMap = new Map();
165
+ let totalOps = 0;
166
+ const createdProperties = [];
167
+ const createdTypes = [];
168
+ const createdRelationTypes = [];
169
+ const createdEntities = [];
170
+ const createdRelations = [];
171
+ // 1. Create all properties
172
+ for (const prop of schema.properties) {
173
+ const result = Graph.createProperty({
174
+ name: prop.name,
175
+ dataType: prop.dataType,
176
+ });
177
+ propertyMap.set(prop.name, result.id);
178
+ createdProperties.push({ name: prop.name, id: result.id });
179
+ session.addOps(result.ops, {
180
+ id: result.id,
181
+ type: 'property',
182
+ name: prop.name,
183
+ opsCount: result.ops.length,
184
+ });
185
+ totalOps += result.ops.length;
186
+ }
187
+ // 2. Create all types
188
+ for (const t of schema.types) {
189
+ const propertyIds = t.propertyNames.map((name) => propertyMap.get(name) ?? name);
190
+ const result = Graph.createType({
191
+ name: t.name,
192
+ properties: propertyIds,
193
+ });
194
+ typeMap.set(t.name, result.id);
195
+ createdTypes.push({ name: t.name, id: result.id });
196
+ session.addOps(result.ops, {
197
+ id: result.id,
198
+ type: 'type',
199
+ name: t.name,
200
+ opsCount: result.ops.length,
201
+ });
202
+ totalOps += result.ops.length;
203
+ }
204
+ // 3. Create relation type entities for unique relation types
205
+ if (relations) {
206
+ const uniqueRelationTypes = new Set(relations.map((r) => r.relationType));
207
+ for (const relTypeName of uniqueRelationTypes) {
208
+ const result = Graph.createEntity({
209
+ name: relTypeName,
210
+ types: [SystemIds.RELATION_TYPE],
211
+ });
212
+ relationTypeMap.set(relTypeName, result.id);
213
+ createdRelationTypes.push({ name: relTypeName, id: result.id });
214
+ session.addOps(result.ops, {
215
+ id: result.id,
216
+ type: 'entity',
217
+ name: `RelationType: ${relTypeName}`,
218
+ opsCount: result.ops.length,
219
+ });
220
+ totalOps += result.ops.length;
221
+ }
222
+ }
223
+ // 4. Create all entities with their values
224
+ if (entities) {
225
+ for (const entity of entities) {
226
+ const typeId = typeMap.get(entity.typeName) ?? entity.typeName;
227
+ const values = entity.values?.map((v) => {
228
+ const propertyId = propertyMap.get(v.propertyName) ?? v.propertyName;
229
+ return buildTypedValue(propertyId, v.type, v.value);
230
+ });
231
+ const result = Graph.createEntity({
232
+ name: entity.name,
233
+ types: [typeId],
234
+ values,
235
+ });
236
+ entityMap.set(entity.name, result.id);
237
+ createdEntities.push({ name: entity.name, id: result.id });
238
+ session.addOps(result.ops, {
239
+ id: result.id,
240
+ type: 'entity',
241
+ name: entity.name,
242
+ opsCount: result.ops.length,
243
+ });
244
+ totalOps += result.ops.length;
245
+ }
246
+ }
247
+ // 5. Create all relations between entities
248
+ if (relations) {
249
+ for (const rel of relations) {
250
+ const fromId = entityMap.get(rel.fromEntityName) ?? rel.fromEntityName;
251
+ const toId = entityMap.get(rel.toEntityName) ?? rel.toEntityName;
252
+ const relTypeId = relationTypeMap.get(rel.relationType) ?? rel.relationType;
253
+ const result = Graph.createRelation({
254
+ fromEntity: fromId,
255
+ toEntity: toId,
256
+ type: relTypeId,
257
+ });
258
+ createdRelations.push({ id: result.id });
259
+ session.addOps(result.ops, {
260
+ id: result.id,
261
+ type: 'relation',
262
+ name: `${rel.fromEntityName} -> ${rel.toEntityName} (${rel.relationType})`,
263
+ opsCount: result.ops.length,
264
+ });
265
+ totalOps += result.ops.length;
266
+ }
267
+ }
268
+ return {
269
+ content: [
270
+ {
271
+ type: 'text',
272
+ text: JSON.stringify({
273
+ schema: {
274
+ properties: createdProperties,
275
+ types: createdTypes,
276
+ relationTypes: createdRelationTypes,
277
+ },
278
+ entities: createdEntities,
279
+ relations: createdRelations,
280
+ totalOps,
281
+ }, null, 2),
282
+ },
283
+ ],
284
+ };
285
+ });
286
+ // ── add_values_to_entity ─────────────────────────────────────────────
287
+ server.tool('add_values_to_entity', 'Add multiple property values to an existing entity in one call.', {
288
+ entityId: z.string().describe('ID of the entity to update'),
289
+ values: z
290
+ .array(z.object({
291
+ property: z.string().describe('Property ID'),
292
+ type: z
293
+ .enum(['text', 'integer', 'float', 'boolean', 'date', 'time', 'datetime', 'schedule', 'point'])
294
+ .describe('Value type'),
295
+ value: z.union([z.string(), z.number(), z.boolean()]).describe('The value'),
296
+ }))
297
+ .describe('Values to add'),
298
+ }, async ({ entityId, values }) => {
299
+ try {
300
+ const typedValues = values.map((v) => buildTypedValue(v.property, v.type, v.value));
301
+ const result = Graph.updateEntity({
302
+ id: entityId,
303
+ values: typedValues,
304
+ });
305
+ session.addOps(result.ops, {
306
+ id: result.id,
307
+ type: 'entity',
308
+ name: `Update entity ${entityId}`,
309
+ opsCount: result.ops.length,
310
+ });
311
+ return {
312
+ content: [
313
+ {
314
+ type: 'text',
315
+ text: JSON.stringify({
316
+ entityId: result.id,
317
+ valuesAdded: values.length,
318
+ opsCount: result.ops.length,
319
+ }, null, 2),
320
+ },
321
+ ],
322
+ };
323
+ }
324
+ catch (error) {
325
+ return {
326
+ content: [
327
+ {
328
+ type: 'text',
329
+ text: JSON.stringify({
330
+ error: `Failed to add values: ${error instanceof Error ? error.message : String(error)}`,
331
+ }),
332
+ },
333
+ ],
334
+ isError: true,
335
+ };
336
+ }
337
+ });
338
+ // ── get_system_ids ───────────────────────────────────────────────────
339
+ server.tool('get_system_ids', 'Get well-known system entity IDs from the Geo knowledge graph. Returns commonly used type, property, and data type IDs.', {
340
+ category: z
341
+ .enum(['types', 'properties', 'data_types', 'all'])
342
+ .describe('Category of system IDs to return'),
343
+ }, async ({ category }) => {
344
+ const typeIds = {
345
+ PERSON_TYPE: SystemIds.PERSON_TYPE,
346
+ COMPANY_TYPE: SystemIds.COMPANY_TYPE,
347
+ PROJECT_TYPE: SystemIds.PROJECT_TYPE,
348
+ POST_TYPE: SystemIds.POST_TYPE,
349
+ SPACE_TYPE: SystemIds.SPACE_TYPE,
350
+ IMAGE_TYPE: SystemIds.IMAGE_TYPE,
351
+ SCHEMA_TYPE: SystemIds.SCHEMA_TYPE,
352
+ ACADEMIC_FIELD_TYPE: SystemIds.ACADEMIC_FIELD_TYPE,
353
+ DAO_TYPE: SystemIds.DAO_TYPE,
354
+ GOVERNMENT_ORG_TYPE: SystemIds.GOVERNMENT_ORG_TYPE,
355
+ INDUSTRY_TYPE: SystemIds.INDUSTRY_TYPE,
356
+ INTEREST_TYPE: SystemIds.INTEREST_TYPE,
357
+ NONPROFIT_TYPE: SystemIds.NONPROFIT_TYPE,
358
+ PROTOCOL_TYPE: SystemIds.PROTOCOL_TYPE,
359
+ REGION_TYPE: SystemIds.REGION_TYPE,
360
+ RELATION_TYPE: SystemIds.RELATION_TYPE,
361
+ ROLE_TYPE: SystemIds.ROLE_TYPE,
362
+ DEFAULT_TYPE: SystemIds.DEFAULT_TYPE,
363
+ ACCOUNT_TYPE: SystemIds.ACCOUNT_TYPE,
364
+ NETWORK_TYPE: SystemIds.NETWORK_TYPE,
365
+ TAB_TYPE: SystemIds.TAB_TYPE,
366
+ GOAL_TYPE: SystemIds.GOAL_TYPE,
367
+ PAGE_TYPE: SystemIds.PAGE_TYPE,
368
+ VIEW_TYPE: SystemIds.VIEW_TYPE,
369
+ VIDEO_TYPE: SystemIds.VIDEO_TYPE,
370
+ BOUNTY_TYPE: SystemIds.BOUNTY_TYPE,
371
+ DIFFICULTY_TYPE: SystemIds.DIFFICULTY_TYPE,
372
+ RANK_TYPE: SystemIds.RANK_TYPE,
373
+ };
374
+ const propertyIds = {
375
+ NAME_PROPERTY: SystemIds.NAME_PROPERTY,
376
+ DESCRIPTION_PROPERTY: SystemIds.DESCRIPTION_PROPERTY,
377
+ TYPES_PROPERTY: SystemIds.TYPES_PROPERTY,
378
+ COVER_PROPERTY: SystemIds.COVER_PROPERTY,
379
+ PROPERTIES: SystemIds.PROPERTIES,
380
+ EMAIL_PROPERTY: SystemIds.EMAIL_PROPERTY,
381
+ PHONE_NUMBER_PROPERTY: SystemIds.PHONE_NUMBER_PROPERTY,
382
+ STREET_ADDRESS_PROPERTY: SystemIds.STREET_ADDRESS_PROPERTY,
383
+ ADDRESS_PROPERTY: SystemIds.ADDRESS_PROPERTY,
384
+ ACCOUNTS_PROPERTY: SystemIds.ACCOUNTS_PROPERTY,
385
+ NETWORK_PROPERTY: SystemIds.NETWORK_PROPERTY,
386
+ GEO_LOCATION_PROPERTY: SystemIds.GEO_LOCATION_PROPERTY,
387
+ GOALS_PROPERTY: SystemIds.GOALS_PROPERTY,
388
+ MISSION_PROPERTY: SystemIds.MISSION_PROPERTY,
389
+ VISION_PROPERTY: SystemIds.VISION_PROPERTY,
390
+ VALUES_PROPERTY: SystemIds.VALUES_PROPERTY,
391
+ WORKS_AT_PROPERTY: SystemIds.WORKS_AT_PROPERTY,
392
+ TABS_PROPERTY: SystemIds.TABS_PROPERTY,
393
+ MARKDOWN_CONTENT: SystemIds.MARKDOWN_CONTENT,
394
+ IMAGE_URL_PROPERTY: SystemIds.IMAGE_URL_PROPERTY,
395
+ IMAGE_WIDTH_PROPERTY: SystemIds.IMAGE_WIDTH_PROPERTY,
396
+ IMAGE_HEIGHT_PROPERTY: SystemIds.IMAGE_HEIGHT_PROPERTY,
397
+ IMAGE_FILE_TYPE_PROPERTY: SystemIds.IMAGE_FILE_TYPE_PROPERTY,
398
+ VIDEO_URL_PROPERTY: SystemIds.VIDEO_URL_PROPERTY,
399
+ REGION_PROPERTY: SystemIds.REGION_PROPERTY,
400
+ RELATED_TOPICS_PROPERTY: SystemIds.RELATED_TOPICS_PROPERTY,
401
+ CREATOR_PROPERTY: SystemIds.CREATOR_PROPERTY,
402
+ REWARD_PROPERTY: SystemIds.REWARD_PROPERTY,
403
+ DIFFICULTY_PROPERTY: SystemIds.DIFFICULTY_PROPERTY,
404
+ VERIFIED_SOURCE_PROPERTY: SystemIds.VERIFIED_SOURCE_PROPERTY,
405
+ SOURCE_SPACE_PROPERTY: SystemIds.SOURCE_SPACE_PROPERTY,
406
+ VIEW_PROPERTY: SystemIds.VIEW_PROPERTY,
407
+ DATA_SOURCE_PROPERTY: SystemIds.DATA_SOURCE_PROPERTY,
408
+ SELECTOR_PROPERTY: SystemIds.SELECTOR_PROPERTY,
409
+ };
410
+ const dataTypeIds = {
411
+ TEXT: SystemIds.TEXT,
412
+ INTEGER: SystemIds.INTEGER,
413
+ FLOAT: SystemIds.FLOAT,
414
+ BOOLEAN: SystemIds.BOOLEAN,
415
+ DATE: SystemIds.DATE,
416
+ TIME: SystemIds.TIME,
417
+ DATETIME: SystemIds.DATETIME,
418
+ DECIMAL: SystemIds.DECIMAL,
419
+ BYTES: SystemIds.BYTES,
420
+ SCHEDULE: SystemIds.SCHEDULE,
421
+ POINT: SystemIds.POINT,
422
+ EMBEDDING: SystemIds.EMBEDDING,
423
+ RELATION: SystemIds.RELATION,
424
+ URL: SystemIds.URL,
425
+ IMAGE: SystemIds.IMAGE,
426
+ DATA_TYPE: SystemIds.DATA_TYPE,
427
+ };
428
+ let result;
429
+ switch (category) {
430
+ case 'types':
431
+ result = { types: typeIds };
432
+ break;
433
+ case 'properties':
434
+ result = { properties: propertyIds };
435
+ break;
436
+ case 'data_types':
437
+ result = { dataTypes: dataTypeIds };
438
+ break;
439
+ case 'all':
440
+ result = { types: typeIds, properties: propertyIds, dataTypes: dataTypeIds };
441
+ break;
442
+ }
443
+ return {
444
+ content: [
445
+ {
446
+ type: 'text',
447
+ text: JSON.stringify(result, null, 2),
448
+ },
449
+ ],
450
+ };
451
+ });
452
+ }
453
+ /**
454
+ * Build a PropertyValueParam from simplified inputs.
455
+ */
456
+ function buildTypedValue(property, type, value) {
457
+ switch (type) {
458
+ case 'text':
459
+ return { property, type: 'text', value: String(value) };
460
+ case 'integer':
461
+ return { property, type: 'integer', value: typeof value === 'number' ? value : Number(value) };
462
+ case 'float':
463
+ return { property, type: 'float', value: typeof value === 'number' ? value : Number(value) };
464
+ case 'boolean':
465
+ return { property, type: 'boolean', value: Boolean(value) };
466
+ case 'date':
467
+ return { property, type: 'date', value: String(value) };
468
+ case 'time':
469
+ return { property, type: 'time', value: String(value) };
470
+ case 'datetime':
471
+ return { property, type: 'datetime', value: String(value) };
472
+ case 'schedule':
473
+ return { property, type: 'schedule', value: String(value) };
474
+ case 'point':
475
+ // Expect value as "lon,lat" string
476
+ const [lon, lat] = String(value).split(',').map(Number);
477
+ return { property, type: 'point', lon, lat };
478
+ default:
479
+ return { property, type: 'text', value: String(value) };
480
+ }
481
+ }
482
+ //# sourceMappingURL=advanced.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"advanced.js","sourceRoot":"","sources":["../../src/tools/advanced.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import type { EditSession } from '../state/session.js';
3
+ export declare function registerGraphTools(server: McpServer, session: EditSession): void;
4
+ //# sourceMappingURL=graph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/tools/graph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAkEvD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,QAmOzE"}