Update README

This commit is contained in:
Anibal Angulo
2026-02-22 16:02:46 +00:00
parent dcc05d697e
commit bd107a027a

View File

@@ -0,0 +1,87 @@
# knowledge-search-mcp
An MCP (Model Context Protocol) server that exposes a `knowledge_search` tool for semantic search over a knowledge base backed by Vertex AI Vector Search and Google Cloud Storage.
## How it works
1. A natural-language query is embedded using a Gemini embedding model.
2. The embedding is sent to a Vertex AI Matching Engine index endpoint to find nearest neighbors.
3. The matched document contents are fetched from a GCS bucket and returned to the caller.
## Prerequisites
- Python ≥ 3.12
- [uv](https://docs.astral.sh/uv/) for dependency management
- A Google Cloud project with:
- A Vertex AI Vector Search index and deployed endpoint
- A GCS bucket containing the indexed document chunks
- Application Default Credentials (or a service account) with appropriate permissions
## Configuration
Create a `.env` file (see `Settings` in `main.py` for all options):
```env
PROJECT_ID=my-gcp-project
LOCATION=us-central1
BUCKET=my-knowledge-bucket
INDEX_NAME=my-index
DEPLOYED_INDEX_ID=my-deployed-index
ENDPOINT_NAME=projects/…/locations/…/indexEndpoints/…
ENDPOINT_DOMAIN=123456789.us-central1-aiplatform.googleapis.com
# optional
EMBEDDING_MODEL=gemini-embedding-001
SEARCH_LIMIT=10
```
## Usage
### Install dependencies
```bash
uv sync
```
### Run the MCP server (stdio)
```bash
uv run python main.py
```
### Run the MCP server (SSE, e.g. for remote clients)
```bash
uv run python main.py --transport sse --port 8080
```
### Run the interactive agent (ADK)
The bundled agent spawns the MCP server as a subprocess and provides a REPL:
```bash
uv run python agent.py
```
Or connect to an already-running SSE server:
```bash
uv run python agent.py --remote http://localhost:8080/sse
```
## Docker
```bash
docker build -t knowledge-search-mcp .
docker run -p 8080:8080 --env-file .env knowledge-search-mcp
```
The container starts the server in SSE mode on the port specified by `PORT` (default `8080`).
## Project structure
```
main.py MCP server, vector search client, and GCS storage helper
agent.py Interactive ADK agent that consumes the MCP server
Dockerfile Multi-stage build for Cloud Run / containerized deployment
pyproject.toml Project metadata and dependencies
```