init
This commit is contained in:
13
chroma-mcp-sse/Dockerfile
Normal file
13
chroma-mcp-sse/Dockerfile
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
FROM python:3.11-slim
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
COPY requirements.txt .
|
||||||
|
RUN pip install --no-cache-dir -r requirements.txt
|
||||||
|
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
# On expose le port 8080 pour correspondre à la config de main.py
|
||||||
|
EXPOSE 8080
|
||||||
|
|
||||||
|
CMD ["python", "main.py"]
|
||||||
22
chroma-mcp-sse/main.py
Normal file
22
chroma-mcp-sse/main.py
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
from mcp.server.fastmcp import FastMCP
|
||||||
|
import chromadb
|
||||||
|
import os
|
||||||
|
|
||||||
|
# On définit l'hôte sur 0.0.0.0 et le port sur 8080 pour le container Docker
|
||||||
|
mcp = FastMCP("Chroma-Server", host="0.0.0.0", port=8080)
|
||||||
|
|
||||||
|
# Initialisation du client ChromaDB
|
||||||
|
CHROMA_URL = os.getenv("CHROMA_URL", "http://chroma-db:8000")
|
||||||
|
client = chromadb.HttpClient(host="chroma-db", port=8000)
|
||||||
|
|
||||||
|
@mcp.tool()
|
||||||
|
async def query_chroma(collection_name: str, query_text: str, n_results: int = 5):
|
||||||
|
"""Interroge une collection ChromaDB pour trouver des documents similaires."""
|
||||||
|
collection = client.get_collection(name=collection_name)
|
||||||
|
results = collection.query(query_texts=[query_text], n_results=n_results)
|
||||||
|
return str(results)
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
# On lance le serveur en mode SSE (Server-Sent Events)
|
||||||
|
# C'est ce que LM Studio et la plupart des clients attendent
|
||||||
|
mcp.run(transport="sse")
|
||||||
3
chroma-mcp-sse/requirements.txt
Normal file
3
chroma-mcp-sse/requirements.txt
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
mcp[server]
|
||||||
|
uvicorn
|
||||||
|
chromadb
|
||||||
19
docker-compose.yml
Normal file
19
docker-compose.yml
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
services:
|
||||||
|
chroma-db:
|
||||||
|
image: chromadb/chroma:latest
|
||||||
|
container_name: chroma-db
|
||||||
|
environment:
|
||||||
|
- IS_PERSISTENT=TRUE
|
||||||
|
- PERSIST_DIRECTORY=/chroma-data
|
||||||
|
volumes:
|
||||||
|
- ./chroma_data:/chroma-data
|
||||||
|
ports:
|
||||||
|
- "8000:8000"
|
||||||
|
|
||||||
|
chroma-mcp:
|
||||||
|
build: ./chroma-mcp-sse
|
||||||
|
container_name: chroma-mcp
|
||||||
|
depends_on:
|
||||||
|
- chroma-db
|
||||||
|
ports:
|
||||||
|
- "8080:8080"
|
||||||
Reference in New Issue
Block a user