Web crawling and RAG for agents: crawl sites, store content in Supabase and run semantic search over it.
Setup
Choose your client, copy the config, then fill in any required environment variables.
claude mcp add crawl4ai-rag --env NEO4J_PASSWORD='<NEO4J_PASSWORD>' --env NEO4J_URI='<NEO4J_URI>' --env NEO4J_USER='<NEO4J_USER>' --env OPENAI_API_KEY='<OPENAI_API_KEY>' --env SUPABASE_SERVICE_KEY='<SUPABASE_SERVICE_KEY>' --env SUPABASE_URL='<SUPABASE_URL>' --env TRANSPORT='<TRANSPORT>' --env USE_KNOWLEDGE_GRAPH='<USE_KNOWLEDGE_GRAPH>' -- uv run path/to/your/main.py~/.codex/config.toml
[mcp_servers.crawl4ai-rag]
command = "uv"
args = ["run", "path/to/your/main.py"]
env = { NEO4J_PASSWORD = "<NEO4J_PASSWORD>", NEO4J_URI = "<NEO4J_URI>", NEO4J_USER = "<NEO4J_USER>", OPENAI_API_KEY = "<OPENAI_API_KEY>", SUPABASE_SERVICE_KEY = "<SUPABASE_SERVICE_KEY>", SUPABASE_URL = "<SUPABASE_URL>", TRANSPORT = "<TRANSPORT>", USE_KNOWLEDGE_GRAPH = "<USE_KNOWLEDGE_GRAPH>" }
# codex mcp add crawl4ai-rag --env NEO4J_PASSWORD='<NEO4J_PASSWORD>' --env NEO4J_URI='<NEO4J_URI>' --env NEO4J_USER='<NEO4J_USER>' --env OPENAI_API_KEY='<OPENAI_API_KEY>' --env SUPABASE_SERVICE_KEY='<SUPABASE_SERVICE_KEY>' --env SUPABASE_URL='<SUPABASE_URL>' --env TRANSPORT='<TRANSPORT>' --env USE_KNOWLEDGE_GRAPH='<USE_KNOWLEDGE_GRAPH>' -- uv run path/to/your/main.py~/.cursor/mcp.json
{
"mcpServers": {
"crawl4ai-rag": {
"command": "uv",
"args": [
"run",
"path/to/your/main.py"
],
"env": {
"NEO4J_PASSWORD": "<NEO4J_PASSWORD>",
"NEO4J_URI": "<NEO4J_URI>",
"NEO4J_USER": "<NEO4J_USER>",
"OPENAI_API_KEY": "<OPENAI_API_KEY>",
"SUPABASE_SERVICE_KEY": "<SUPABASE_SERVICE_KEY>",
"SUPABASE_URL": "<SUPABASE_URL>",
"TRANSPORT": "<TRANSPORT>",
"USE_KNOWLEDGE_GRAPH": "<USE_KNOWLEDGE_GRAPH>"
}
}
}
}.vscode/mcp.json
{
"servers": {
"crawl4ai-rag": {
"type": "stdio",
"command": "uv",
"args": [
"run",
"path/to/your/main.py"
],
"env": {
"NEO4J_PASSWORD": "<NEO4J_PASSWORD>",
"NEO4J_URI": "<NEO4J_URI>",
"NEO4J_USER": "<NEO4J_USER>",
"OPENAI_API_KEY": "<OPENAI_API_KEY>",
"SUPABASE_SERVICE_KEY": "<SUPABASE_SERVICE_KEY>",
"SUPABASE_URL": "<SUPABASE_URL>",
"TRANSPORT": "<TRANSPORT>",
"USE_KNOWLEDGE_GRAPH": "<USE_KNOWLEDGE_GRAPH>"
}
}
}
}~/.gemini/settings.json
{
"mcpServers": {
"crawl4ai-rag": {
"command": "uv",
"args": [
"run",
"path/to/your/main.py"
],
"env": {
"NEO4J_PASSWORD": "<NEO4J_PASSWORD>",
"NEO4J_URI": "<NEO4J_URI>",
"NEO4J_USER": "<NEO4J_USER>",
"OPENAI_API_KEY": "<OPENAI_API_KEY>",
"SUPABASE_SERVICE_KEY": "<SUPABASE_SERVICE_KEY>",
"SUPABASE_URL": "<SUPABASE_URL>",
"TRANSPORT": "<TRANSPORT>",
"USE_KNOWLEDGE_GRAPH": "<USE_KNOWLEDGE_GRAPH>"
}
}
}
}claude_desktop_config.json
{
"mcpServers": {
"crawl4ai-rag": {
"command": "uv",
"args": [
"run",
"path/to/your/main.py"
],
"env": {
"NEO4J_PASSWORD": "<NEO4J_PASSWORD>",
"NEO4J_URI": "<NEO4J_URI>",
"NEO4J_USER": "<NEO4J_USER>",
"OPENAI_API_KEY": "<OPENAI_API_KEY>",
"SUPABASE_SERVICE_KEY": "<SUPABASE_SERVICE_KEY>",
"SUPABASE_URL": "<SUPABASE_URL>",
"TRANSPORT": "<TRANSPORT>",
"USE_KNOWLEDGE_GRAPH": "<USE_KNOWLEDGE_GRAPH>"
}
}
}
}.trae/mcp.json
{
"mcpServers": {
"crawl4ai-rag": {
"command": "uv",
"args": [
"run",
"path/to/your/main.py"
],
"env": {
"NEO4J_PASSWORD": "<NEO4J_PASSWORD>",
"NEO4J_URI": "<NEO4J_URI>",
"NEO4J_USER": "<NEO4J_USER>",
"OPENAI_API_KEY": "<OPENAI_API_KEY>",
"SUPABASE_SERVICE_KEY": "<SUPABASE_SERVICE_KEY>",
"SUPABASE_URL": "<SUPABASE_URL>",
"TRANSPORT": "<TRANSPORT>",
"USE_KNOWLEDGE_GRAPH": "<USE_KNOWLEDGE_GRAPH>"
}
}
}
}Environment variables
NEO4J_PASSWORDNEO4J_URINEO4J_USEROPENAI_API_KEYSUPABASE_SERVICE_KEYSUPABASE_URLTRANSPORTUSE_KNOWLEDGE_GRAPH
Replace the placeholders with your own credentials and keep them out of version control.