Skip to content

Commit 7003493

Browse files
authored
Add a dynamic resource for memories (#1)
1 parent c97ad8c commit 7003493

File tree

4 files changed

+46
-1
lines changed

4 files changed

+46
-1
lines changed

src/httpServer.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { apiFactories } from './apis/index.js';
44
import { context, serverInfo } from './serverInfo.js';
55
import { log } from './shared/boilerplate/src/logger.js';
66
import { runMigrations } from './migrate.js';
7+
import { additionalSetup } from './resources.js';
78

89
try {
910
log.info('Running database migrations...');
@@ -18,4 +19,5 @@ export const { registerCleanupFn } = httpServerFactory({
1819
...serverInfo,
1920
context,
2021
apiFactories,
22+
additionalSetup,
2123
});

src/resources.ts

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import {
2+
McpServer,
3+
ResourceTemplate,
4+
} from '@modelcontextprotocol/sdk/server/mcp.js';
5+
import { AdditionalSetupArgs } from './shared/boilerplate/src/mcpServer.js';
6+
import { Memory, ServerContext } from './types.js';
7+
8+
export const additionalSetup = ({
9+
context: { pgPool, schema },
10+
server,
11+
}: AdditionalSetupArgs<ServerContext>) => {
12+
server.registerResource(
13+
'memories',
14+
new ResourceTemplate('memory://{key}', { list: undefined }),
15+
{
16+
title: 'Memories',
17+
description: 'A collection of memories',
18+
},
19+
async (uri, { key }) => {
20+
const result = await pgPool.query<Memory>(
21+
/* sql */ `
22+
SELECT id, content, created_at, updated_at
23+
FROM ${schema}.memory
24+
WHERE key = $1 AND deleted_at IS NULL
25+
`,
26+
[key],
27+
);
28+
29+
return {
30+
contents: [
31+
{
32+
uri: uri.href,
33+
text: `Memories: key=\`${key}\`, count=${result.rows.length}
34+
${result.rows.map((m) => `- (${m.id}) ${m.content}`).join('\n')}
35+
`,
36+
},
37+
],
38+
};
39+
},
40+
);
41+
};

src/stdio.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,11 @@
22
import { stdioServerFactory } from './shared/boilerplate/src/stdio.js';
33
import { apiFactories } from './apis/index.js';
44
import { context, serverInfo } from './serverInfo.js';
5+
import { additionalSetup } from './resources.js';
56

67
stdioServerFactory({
78
...serverInfo,
89
context,
910
apiFactories,
11+
additionalSetup,
1012
});

0 commit comments

Comments
 (0)