fix(palace): wire palace MCP tools into register-note-tools registry

This commit is contained in:
saravanakumardb1 2026-04-10 01:41:28 -07:00
parent 97662d1dc0
commit 1ae35a7e21
2 changed files with 24 additions and 6 deletions

View File

@ -29,26 +29,39 @@ const { executableToolsMock, toolNames } = vi.hoisted(() => ({
vi.mock('./note-tools.js', () => ({
NotesExecutableMcpTools: executableToolsMock,
}));
vi.mock('./palace-tools.js', () => ({
PalaceMcpToolDefinitions: [
{
name: 'notes.mempalace.search',
description: 'Search palace',
requiredRole: 'viewer' as const,
inputSchema: { safeParse: vi.fn() },
execute: vi.fn(async () => []),
readOnly: true,
},
],
}));
import { getNotesMcpToolsForRegistration, registerNotesMcpTools } from './register-note-tools.js';
describe('register note tools adapter', () => {
it('returns a registration-friendly tool list', () => {
it('returns a registration-friendly tool list including palace tools', () => {
const tools = getNotesMcpToolsForRegistration();
expect(tools).toHaveLength(2);
expect(tools).toHaveLength(3);
expect(tools.map(tool => tool.name)).toEqual([
toolNames.list,
toolNames.createDraft,
'notes.mempalace.search',
]);
});
it('registers every executable tool through the provided callback', () => {
it('registers every executable tool (notes + palace) through the provided callback', () => {
const registerTool = vi.fn();
registerNotesMcpTools(registerTool);
expect(registerTool).toHaveBeenCalledTimes(2);
expect(registerTool).toHaveBeenCalledTimes(3);
expect(registerTool).toHaveBeenNthCalledWith(
1,
expect.objectContaining({ name: toolNames.list, requiredRole: 'viewer' })
@ -57,5 +70,9 @@ describe('register note tools adapter', () => {
2,
expect.objectContaining({ name: toolNames.createDraft, requiredRole: 'admin' })
);
expect(registerTool).toHaveBeenNthCalledWith(
3,
expect.objectContaining({ name: 'notes.mempalace.search', requiredRole: 'viewer' })
);
});
});

View File

@ -1,5 +1,6 @@
import type { ZodTypeAny } from 'zod';
import { NotesExecutableMcpTools } from './note-tools.js';
import { PalaceMcpToolDefinitions } from './palace-tools.js';
export interface RegisterableMcpTool<TInput = unknown> {
name: string;
@ -12,7 +13,7 @@ export interface RegisterableMcpTool<TInput = unknown> {
export type RegisterToolFn = (tool: RegisterableMcpTool) => void;
export function registerNotesMcpTools(registerTool: RegisterToolFn): void {
for (const tool of NotesExecutableMcpTools) {
for (const tool of [...NotesExecutableMcpTools, ...PalaceMcpToolDefinitions]) {
registerTool({
name: tool.name,
description: tool.description,
@ -24,7 +25,7 @@ export function registerNotesMcpTools(registerTool: RegisterToolFn): void {
}
export function getNotesMcpToolsForRegistration(): RegisterableMcpTool[] {
return NotesExecutableMcpTools.map(tool => ({
return [...NotesExecutableMcpTools, ...PalaceMcpToolDefinitions].map(tool => ({
name: tool.name,
description: tool.description,
requiredRole: tool.requiredRole,