@@ -30,14 +30,14 @@ def main():
30
30
parser .add_argument (
31
31
"--host" ,
32
32
type = str ,
33
- default = os .environ .get ("VECTOR_DB_HOST " , "localhost" ),
34
- help = "Vector database host (default: localhost)"
33
+ default = os .environ .get ("MCP_HOST " , "localhost" ),
34
+ help = "MCP interface host (default: localhost)"
35
35
)
36
36
parser .add_argument (
37
37
"--port" ,
38
38
type = int ,
39
- default = int (os .environ .get ("VECTOR_DB_PORT " , "6333 " )),
40
- help = "Vector database port (default: 6333 )"
39
+ default = int (os .environ .get ("MCP_PORT " , "3000 " )),
40
+ help = "MCP interface port (default: 3000 )"
41
41
)
42
42
parser .add_argument (
43
43
"--embedding-model" ,
@@ -61,25 +61,106 @@ def main():
61
61
logging .getLogger ().setLevel (getattr (logging , args .log_level ))
62
62
63
63
logger .info (f"Starting Files-DB-MCP Claude MCP Server with the following settings:" )
64
- logger .info (f"Vector DB Host: { args .host } " )
65
- logger .info (f"Vector DB Port: { args .port } " )
66
- logger .info (f"Embedding Model: { args .embedding_model } " )
64
+ logger .info (f"MCP Interface Host: { args .host } " )
65
+ logger .info (f"MCP Interface Port: { args .port } " )
67
66
logger .info (f"Log Level: { args .log_level } " )
68
67
69
68
try :
70
69
# Import here to avoid module import issues
71
- from src . vector_search import VectorSearch
70
+ import requests
72
71
from src .claude_mcp import ClaudeMCP
73
72
74
- # Create the vector search engine
75
- vector_search = VectorSearch (
76
- host = args .host ,
77
- port = args .port ,
78
- embedding_model = args .embedding_model
79
- )
73
+ # Create a class to handle communication with MCP interface
74
+ class MCPInterface :
75
+ def __init__ (self , host , port ):
76
+ self .base_url = f"http://{ host } :{ port } "
77
+
78
+ def search (self , query , limit = 10 , file_type = None , path_prefix = None , file_extensions = None , threshold = 0.6 ):
79
+ """Search via the MCP interface"""
80
+ try :
81
+ response = requests .post (
82
+ f"{ self .base_url } /mcp" ,
83
+ json = {
84
+ "function" : "vector_search" ,
85
+ "parameters" : {
86
+ "query" : query ,
87
+ "limit" : limit ,
88
+ "file_type" : file_type ,
89
+ "path_prefix" : path_prefix ,
90
+ "file_extensions" : file_extensions ,
91
+ "threshold" : threshold
92
+ }
93
+ }
94
+ )
95
+ response .raise_for_status ()
96
+ return response .json ()
97
+ except requests .RequestException as e :
98
+ logger .error (f"Error connecting to MCP interface: { e } " )
99
+ raise ConnectionError (f"Failed to connect to MCP interface: { e } " )
100
+
101
+ def get_file_content (self , file_path ):
102
+ """Get file content via the MCP interface"""
103
+ try :
104
+ response = requests .post (
105
+ f"{ self .base_url } /mcp" ,
106
+ json = {
107
+ "function" : "get_file_content" ,
108
+ "parameters" : {
109
+ "file_path" : file_path
110
+ }
111
+ }
112
+ )
113
+ response .raise_for_status ()
114
+ return response .json ()
115
+ except requests .RequestException as e :
116
+ logger .error (f"Error connecting to MCP interface: { e } " )
117
+ raise ConnectionError (f"Failed to connect to MCP interface: { e } " )
118
+
119
+ def get_model_info (self ):
120
+ """Get model info via the MCP interface"""
121
+ try :
122
+ response = requests .post (
123
+ f"{ self .base_url } /mcp" ,
124
+ json = {
125
+ "function" : "get_model_info" ,
126
+ "parameters" : {}
127
+ }
128
+ )
129
+ response .raise_for_status ()
130
+ return response .json ()
131
+ except requests .RequestException as e :
132
+ logger .error (f"Error connecting to MCP interface: { e } " )
133
+ raise ConnectionError (f"Failed to connect to MCP interface: { e } " )
134
+
135
+ def get_collection_stats (self ):
136
+ """Get collection stats via the health endpoint"""
137
+ try :
138
+ response = requests .get (f"{ self .base_url } /health" )
139
+ response .raise_for_status ()
140
+ data = response .json ()
141
+ return {
142
+ "total_files" : data .get ("indexed_files" , 0 )
143
+ }
144
+ except requests .RequestException as e :
145
+ logger .error (f"Error connecting to MCP interface health endpoint: { e } " )
146
+ raise ConnectionError (f"Failed to connect to MCP interface: { e } " )
147
+
148
+ # Check if MCP interface is available
149
+ try :
150
+ logger .info (f"Checking MCP interface at { args .host } :{ args .port } " )
151
+ response = requests .get (f"http://{ args .host } :{ args .port } /health" )
152
+ response .raise_for_status ()
153
+ logger .info (f"Successfully connected to MCP interface" )
154
+ except requests .RequestException as e :
155
+ logger .error (f"Failed to connect to MCP interface: { e } " )
156
+ logger .error (f"Make sure Files-DB-MCP is running and accessible at { args .host } :{ args .port } " )
157
+ sys .exit (1 )
158
+
159
+ # Create MCP interface wrapper
160
+ mcp_interface = MCPInterface (args .host , args .port )
80
161
81
162
# Create and start the MCP server
82
- mcp_server = ClaudeMCP (vector_search = vector_search )
163
+ mcp_server = ClaudeMCP (vector_search = mcp_interface )
83
164
mcp_server .start ()
84
165
85
166
except Exception as e :
0 commit comments