Skip to content

Commit 7f2fc19

Browse files
committed
fix: update MCP server to connect to API interface instead of vector database
1 parent f347c89 commit 7f2fc19

File tree

1 file changed

+96
-15
lines changed

1 file changed

+96
-15
lines changed

src/claude_mcp_server.py

Lines changed: 96 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,14 @@ def main():
3030
parser.add_argument(
3131
"--host",
3232
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)"
3535
)
3636
parser.add_argument(
3737
"--port",
3838
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)"
4141
)
4242
parser.add_argument(
4343
"--embedding-model",
@@ -61,25 +61,106 @@ def main():
6161
logging.getLogger().setLevel(getattr(logging, args.log_level))
6262

6363
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}")
6766
logger.info(f"Log Level: {args.log_level}")
6867

6968
try:
7069
# Import here to avoid module import issues
71-
from src.vector_search import VectorSearch
70+
import requests
7271
from src.claude_mcp import ClaudeMCP
7372

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)
80161

81162
# Create and start the MCP server
82-
mcp_server = ClaudeMCP(vector_search=vector_search)
163+
mcp_server = ClaudeMCP(vector_search=mcp_interface)
83164
mcp_server.start()
84165

85166
except Exception as e:

0 commit comments

Comments
 (0)