import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
import type Database from 'better-sqlite3';
import type { SqliteVectorStore } from '../services/sqlite-vector-store.js';
import type { SemanticCache } from '../services/semantic-cache.js';
import type { ProxyManager } from '../services/proxy-manager.js';
import { registerContextPack } from '../tools/context-pack.js';
import { registerMemorySearch } from '../tools/memory-search.js';
import { registerMemoryUpsert } from '../tools/memory-upsert.js';
import { registerContextCompress } from '../tools/context-compress.js';
import { registerProxyCall } from '../tools/proxy-call.js';
export interface McpDependencies {
db: Database.Database;
vectorStore: SqliteVectorStore;
cache: SemanticCache;
proxyManager: ProxyManager;
}
export function createMcpServer(deps: McpDependencies): McpServer {
const server = new McpServer(
{
name: 'mcp-context-hub',
version: '0.1.0',
},
{
capabilities: {
tools: {},
logging: {},
},
}
);
// Register all tools
registerContextPack(server, deps);
registerMemorySearch(server, deps);
registerMemoryUpsert(server, deps);
registerContextCompress(server, deps);
registerProxyCall(server, deps);
return server;
}