@@ -4,15 +4,22 @@ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
44import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js' ;
55import { Endpoint , endpoints , HandlerFunction , query } from './tools' ;
66import { CallToolRequestSchema , ListToolsRequestSchema , Tool } from '@modelcontextprotocol/sdk/types.js' ;
7+ import { ClientOptions } from 'scan-documents' ;
78import ScanDocuments from 'scan-documents' ;
89import {
910 applyCompatibilityTransformations ,
1011 ClientCapabilities ,
1112 defaultClientCapabilities ,
13+ knownClients ,
1214 parseEmbeddedJSON ,
1315} from './compat' ;
1416import { dynamicTools } from './dynamic-tools' ;
15- import { ParsedOptions } from './options' ;
17+ import { McpOptions } from './options' ;
18+
19+ export { McpOptions } from './options' ;
20+ export { ClientType } from './compat' ;
21+ export { Filter } from './tools' ;
22+ export { ClientOptions } from 'scan-documents' ;
1623export { endpoints } from './tools' ;
1724
1825// Create server instance
@@ -32,6 +39,21 @@ export const server = new McpServer(
3239 * Initializes the provided MCP Server with the given tools and handlers.
3340 * If not provided, the default client, tools and handlers will be used.
3441 */
42+ export function initMcpServer ( params : {
43+ server : Server | McpServer ;
44+ clientOptions : ClientOptions ;
45+ mcpOptions : McpOptions ;
46+ endpoints ?: { tool : Tool ; handler : HandlerFunction } [ ] ;
47+ } ) {
48+ const transformedEndpoints = selectTools ( endpoints , params . mcpOptions ) ;
49+ const client = new ScanDocuments ( params . clientOptions ) ;
50+ const capabilities = {
51+ ...defaultClientCapabilities ,
52+ ...( params . mcpOptions . client ? knownClients [ params . mcpOptions . client ] : params . mcpOptions . capabilities ) ,
53+ } ;
54+ init ( { server : params . server , client, endpoints : transformedEndpoints , capabilities } ) ;
55+ }
56+
3557export function init ( params : {
3658 server : Server | McpServer ;
3759 client ?: ScanDocuments ;
@@ -65,24 +87,27 @@ export function init(params: {
6587/**
6688 * Selects the tools to include in the MCP Server based on the provided options.
6789 */
68- export function selectTools ( endpoints : Endpoint [ ] , options : ParsedOptions ) {
90+ export function selectTools ( endpoints : Endpoint [ ] , options : McpOptions ) {
6991 const filteredEndpoints = query ( options . filters , endpoints ) ;
7092
71- const includedTools = filteredEndpoints ;
93+ let includedTools = filteredEndpoints ;
7294
73- if ( options . includeAllTools && includedTools . length === 0 ) {
74- includedTools . push ( ...endpoints ) ;
75- }
76-
77- if ( options . includeDynamicTools ) {
78- includedTools . push ( ...dynamicTools ( endpoints ) ) ;
79- }
80-
81- if ( includedTools . length === 0 ) {
82- includedTools . push ( ...endpoints ) ;
95+ if ( includedTools . length > 0 ) {
96+ if ( options . includeDynamicTools ) {
97+ includedTools = dynamicTools ( includedTools ) ;
98+ }
99+ } else {
100+ if ( options . includeAllTools ) {
101+ includedTools = endpoints ;
102+ } else if ( options . includeDynamicTools ) {
103+ includedTools = dynamicTools ( endpoints ) ;
104+ } else {
105+ includedTools = endpoints ;
106+ }
83107 }
84108
85- return applyCompatibilityTransformations ( includedTools , options . capabilities ) ;
109+ const capabilities = { ...defaultClientCapabilities , ...options . capabilities } ;
110+ return applyCompatibilityTransformations ( includedTools , capabilities ) ;
86111}
87112
88113/**
0 commit comments