1+ import { describe , expect , test , vi } from 'vitest'
2+ import type { MetaParams , ProviderSettings } from '@openctx/provider'
3+ import proxy from './index.js'
4+
5+ vi . mock ( '@modelcontextprotocol/sdk/client/index.js' , ( ) => ( {
6+ Client : vi . fn ( ) . mockImplementation ( ( ) => ( {
7+ connect : vi . fn ( ) ,
8+ getServerVersion : vi . fn ( ) . mockReturnValue ( { name : 'Test MCP Server' } ) ,
9+ request : vi . fn ( ) . mockImplementation ( async ( req ) => {
10+ if ( req . method === 'resources/list' ) {
11+ return { resources : [
12+ { uri : 'test://resource' , name : 'Test Resource' , description : 'Test Description' }
13+ ] }
14+ }
15+ if ( req . method === 'resources/read' ) {
16+ return { contents : [
17+ { uri : 'test://resource' , text : 'Test Content' , mimeType : 'text/plain' }
18+ ] }
19+ }
20+ } ) ,
21+ setNotificationHandler : vi . fn ( ) ,
22+ setRequestHandler : vi . fn ( ) ,
23+ close : vi . fn ( )
24+ } ) )
25+ } ) )
26+
27+ vi . mock ( '@modelcontextprotocol/sdk/client/stdio.js' , ( ) => ( {
28+ StdioClientTransport : vi . fn ( )
29+ } ) )
30+
31+ describe ( 'MCP Provider' , ( ) => {
32+ const settings : ProviderSettings = {
33+ 'mcp.provider.uri' : 'file:///path/to/your/mcp/provider.js' ,
34+ 'nodeCommand' : 'node' ,
35+ 'mcp.provider.args' : [ '--some-arg' , 'value' ]
36+ }
37+
38+ test ( 'meta returns provider info' , async ( ) => {
39+ const result = await proxy . meta ( { } as MetaParams , settings )
40+ expect ( result ) . toMatchObject ( {
41+ name : expect . any ( String ) ,
42+ mentions : {
43+ label : expect . any ( String )
44+ }
45+ } )
46+ } )
47+
48+ test ( 'mentions returns resources' , async ( ) => {
49+ const result = await proxy . mentions ?.( {
50+ query : 'test'
51+ } , settings )
52+
53+ expect ( result ) . toBeDefined ( )
54+ expect ( Array . isArray ( result ) ) . toBe ( true )
55+ } )
56+
57+ test ( 'items returns content' , async ( ) => {
58+ const result = await proxy . items ?.( {
59+ mention : {
60+ uri : 'test://resource' ,
61+ title : 'Test Resource'
62+ }
63+ } , settings )
64+
65+ expect ( result ) . toBeDefined ( )
66+ expect ( Array . isArray ( result ) ) . toBe ( true )
67+ } )
68+ } )
0 commit comments