Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions cartridges/chromadb-mcp/cartridge.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
"$schema": "https://boj.dev/schemas/cartridge/v1.json",
"spdx": "MPL-2.0",
"copyright": "Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) <j.d.a.jewell@open.ac.uk>",
"name": "chromadb-mcp",
"version": "0.1.0",
"description": "Chroma vector DB — embedded (local persistent) or client/server; LLM-app-focused; metadata + document storage alongside vectors.",
"domain": "vector",
"tier": "Teranga",
"protocols": ["MCP", "REST"],
"auth": { "method": "optional_bearer", "env_var": "CHROMA_AUTH_TOKEN", "credential_source": "Optional — embedded mode has no auth; client/server may use bearer token." },
"api": { "base_url": "local://chromadb-mcp", "content_type": "application/json" },
"tools": [
{ "name": "vector_authenticate", "description": "Store Chroma endpoint URL (or 'embedded' for in-process) + optional bearer.", "inputSchema": { "type": "object", "properties": { "endpoint": { "type": "string" }, "auth_token": { "type": "string" }, "embedding_function": { "type": "string" } }, "required": ["endpoint"] } },
{ "name": "vector_list_collections", "description": "List collections.", "inputSchema": { "type": "object", "properties": {} } },
{ "name": "vector_create_collection", "description": "Create a collection with optional embedding function + metadata.", "inputSchema": { "type": "object", "properties": { "name": { "type": "string" }, "metadata": { "type": "object" }, "embedding_function": { "type": "string" } }, "required": ["name"] } },
{ "name": "vector_delete_collection", "description": "Delete a collection.", "inputSchema": { "type": "object", "properties": { "name": { "type": "string" } }, "required": ["name"] } },
{ "name": "vector_upsert", "description": "Add documents + vectors + metadata. Chroma computes embeddings if not provided.", "inputSchema": { "type": "object", "properties": { "collection": { "type": "string" }, "ids": { "type": "array" }, "documents": { "type": "array" }, "embeddings": { "type": "array" }, "metadatas": { "type": "array" } }, "required": ["collection", "ids"] } },
{ "name": "vector_query", "description": "Query by text or embedding with where-filter + document-content filter.", "inputSchema": { "type": "object", "properties": { "collection": { "type": "string" }, "query_texts": { "type": "array" }, "query_embeddings": { "type": "array" }, "n_results": { "type": "integer" }, "where": { "type": "object" }, "where_document": { "type": "object" } }, "required": ["collection"] } },
{ "name": "vector_delete", "description": "Delete documents by id or where-filter.", "inputSchema": { "type": "object", "properties": { "collection": { "type": "string" }, "ids": { "type": "array" }, "where": { "type": "object" } }, "required": ["collection"] } }
]
}
19 changes: 19 additions & 0 deletions cartridges/elevenlabs-mcp/cartridge.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"$schema": "https://boj.dev/schemas/cartridge/v1.json",
"spdx": "MPL-2.0",
"copyright": "Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) <j.d.a.jewell@open.ac.uk>",
"name": "elevenlabs-mcp",
"version": "0.1.0",
"description": "Text-to-speech via ElevenLabs API — high-quality voices, multilingual, voice cloning (premium tier), streaming output.",
"domain": "multimodal",
"tier": "Teranga",
"protocols": ["MCP", "REST"],
"auth": { "method": "api_key", "env_var": "ELEVENLABS_API_KEY", "credential_source": "ElevenLabs account → Profile → API Keys." },
"api": { "base_url": "local://elevenlabs-mcp", "content_type": "application/json" },
"tools": [
{ "name": "audio_authenticate", "description": "Store ElevenLabs API key.", "inputSchema": { "type": "object", "properties": { "api_key": { "type": "string" } }, "required": ["api_key"] } },
{ "name": "audio_synthesize", "description": "Generate speech from text. Returns audio (mp3 / pcm / opus).", "inputSchema": { "type": "object", "properties": { "text": { "type": "string" }, "voice_id": { "type": "string" }, "model_id": { "type": "string", "enum": ["eleven_multilingual_v2", "eleven_turbo_v2", "eleven_monolingual_v1"] }, "output_format": { "type": "string", "enum": ["mp3_44100_128", "pcm_44100", "opus_48000_128"] }, "stability": { "type": "number" }, "similarity_boost": { "type": "number" } }, "required": ["text", "voice_id"] } },
{ "name": "audio_list_voices", "description": "List available voices on the account (preset + custom).", "inputSchema": { "type": "object", "properties": {} } },
{ "name": "audio_clone_voice", "description": "Create a custom voice from sample audio (premium tier only).", "inputSchema": { "type": "object", "properties": { "name": { "type": "string" }, "samples": { "type": "array" }, "description": { "type": "string" } }, "required": ["name", "samples"] } }
]
}
21 changes: 21 additions & 0 deletions cartridges/ffmpeg-mcp/cartridge.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"$schema": "https://boj.dev/schemas/cartridge/v1.json",
"spdx": "MPL-2.0",
"copyright": "Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) <j.d.a.jewell@open.ac.uk>",
"name": "ffmpeg-mcp",
"version": "0.1.0",
"description": "Local FFmpeg gateway — probe metadata, transcode formats, extract audio, extract frames, concatenate, trim. Glue between whisper / replicate / browser screenshots. Local-only — requires host ffmpeg binary; not Worker-compatible.",
"domain": "multimodal",
"tier": "Teranga",
"protocols": ["MCP", "REST"],
"auth": { "method": "none", "env_var": null, "credential_source": "No auth — operates on local files. Sandbox via FFMPEG_ALLOWED_PATHS env if exposing to multi-tenant deployments." },
"api": { "base_url": "local://ffmpeg-mcp", "content_type": "application/json" },
"tools": [
{ "name": "media_probe", "description": "Probe metadata (codec, duration, streams, dimensions). Read-only.", "inputSchema": { "type": "object", "properties": { "input": { "type": "string" } }, "required": ["input"] } },
{ "name": "media_transcode", "description": "Convert between formats with optional bitrate / resolution / codec overrides.", "inputSchema": { "type": "object", "properties": { "input": { "type": "string" }, "output": { "type": "string" }, "video_codec": { "type": "string" }, "audio_codec": { "type": "string" }, "video_bitrate": { "type": "string" }, "resolution": { "type": "string" } }, "required": ["input", "output"] } },
{ "name": "media_extract_audio", "description": "Extract audio track to its own file (mp3 / wav / opus). Useful as a Whisper input prep step.", "inputSchema": { "type": "object", "properties": { "input": { "type": "string" }, "output": { "type": "string" }, "format": { "type": "string", "enum": ["mp3", "wav", "opus", "aac"] } }, "required": ["input", "output"] } },
{ "name": "media_extract_frames", "description": "Extract frames at a given interval or specific timestamps. Useful as Replicate vision-model input prep.", "inputSchema": { "type": "object", "properties": { "input": { "type": "string" }, "output_pattern": { "type": "string" }, "fps": { "type": "number" }, "timestamps": { "type": "array" } }, "required": ["input", "output_pattern"] } },
{ "name": "media_concat", "description": "Concatenate multiple files into one (same codec required, or transcode-then-concat).", "inputSchema": { "type": "object", "properties": { "inputs": { "type": "array" }, "output": { "type": "string" } }, "required": ["inputs", "output"] } },
{ "name": "media_trim", "description": "Trim/cut to a specific time range.", "inputSchema": { "type": "object", "properties": { "input": { "type": "string" }, "output": { "type": "string" }, "start": { "type": "string" }, "end": { "type": "string" }, "duration": { "type": "string" } }, "required": ["input", "output", "start"] } }
]
}
22 changes: 22 additions & 0 deletions cartridges/pinecone-mcp/cartridge.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
"$schema": "https://boj.dev/schemas/cartridge/v1.json",
"spdx": "MPL-2.0",
"copyright": "Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) <j.d.a.jewell@open.ac.uk>",
"name": "pinecone-mcp",
"version": "0.1.0",
"description": "Pinecone hosted vector DB — serverless indexes, upsert, similarity search, namespaces, metadata filtering.",
"domain": "vector",
"tier": "Teranga",
"protocols": ["MCP", "REST"],
"auth": { "method": "api_key", "env_var": "PINECONE_API_KEY", "credential_source": "Pinecone console; environment-scoped." },
"api": { "base_url": "local://pinecone-mcp", "content_type": "application/json" },
"tools": [
{ "name": "vector_authenticate", "description": "Store Pinecone API key.", "inputSchema": { "type": "object", "properties": { "api_key": { "type": "string" }, "environment": { "type": "string" } }, "required": ["api_key"] } },
{ "name": "vector_list_collections", "description": "List indexes (Pinecone calls them indexes).", "inputSchema": { "type": "object", "properties": {} } },
{ "name": "vector_create_collection", "description": "Create a new index. Pinecone-specific: dimension + metric required.", "inputSchema": { "type": "object", "properties": { "name": { "type": "string" }, "dimension": { "type": "integer" }, "metric": { "type": "string", "enum": ["cosine", "euclidean", "dotproduct"] } }, "required": ["name", "dimension"] } },
{ "name": "vector_delete_collection", "description": "Delete an index.", "inputSchema": { "type": "object", "properties": { "name": { "type": "string" } }, "required": ["name"] } },
{ "name": "vector_upsert", "description": "Insert/update vectors with optional metadata + namespace.", "inputSchema": { "type": "object", "properties": { "collection": { "type": "string" }, "vectors": { "type": "array" }, "namespace": { "type": "string" } }, "required": ["collection", "vectors"] } },
{ "name": "vector_query", "description": "Similarity search. Supports metadata filter + namespace.", "inputSchema": { "type": "object", "properties": { "collection": { "type": "string" }, "query": { "type": "array" }, "top_k": { "type": "integer" }, "namespace": { "type": "string" }, "filter": { "type": "object" } }, "required": ["collection", "query"] } },
{ "name": "vector_delete", "description": "Delete vectors by id, namespace, or filter.", "inputSchema": { "type": "object", "properties": { "collection": { "type": "string" }, "ids": { "type": "array" }, "namespace": { "type": "string" }, "filter": { "type": "object" } }, "required": ["collection"] } }
]
}
22 changes: 22 additions & 0 deletions cartridges/qdrant-mcp/cartridge.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
"$schema": "https://boj.dev/schemas/cartridge/v1.json",
"spdx": "MPL-2.0",
"copyright": "Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) <j.d.a.jewell@open.ac.uk>",
"name": "qdrant-mcp",
"version": "0.1.0",
"description": "Qdrant vector DB — Rust-native; payloads + filtering; sparse + dense vectors; self-host or Qdrant Cloud.",
"domain": "vector",
"tier": "Teranga",
"protocols": ["MCP", "REST", "gRPC"],
"auth": { "method": "api_key", "env_var": "QDRANT_API_KEY", "credential_source": "Qdrant Cloud dashboard or self-hosted bearer." },
"api": { "base_url": "local://qdrant-mcp", "content_type": "application/json" },
"tools": [
{ "name": "vector_authenticate", "description": "Store Qdrant URL + API key.", "inputSchema": { "type": "object", "properties": { "url": { "type": "string" }, "api_key": { "type": "string" } }, "required": ["url"] } },
{ "name": "vector_list_collections", "description": "List collections.", "inputSchema": { "type": "object", "properties": {} } },
{ "name": "vector_create_collection", "description": "Create a collection. Vector params: size (dim) + distance metric.", "inputSchema": { "type": "object", "properties": { "name": { "type": "string" }, "vector_size": { "type": "integer" }, "distance": { "type": "string", "enum": ["Cosine", "Euclid", "Dot"] } }, "required": ["name", "vector_size"] } },
{ "name": "vector_delete_collection", "description": "Delete a collection.", "inputSchema": { "type": "object", "properties": { "name": { "type": "string" } }, "required": ["name"] } },
{ "name": "vector_upsert", "description": "Insert/update points with payload.", "inputSchema": { "type": "object", "properties": { "collection": { "type": "string" }, "points": { "type": "array" } }, "required": ["collection", "points"] } },
{ "name": "vector_query", "description": "Search by vector with payload filter + score threshold.", "inputSchema": { "type": "object", "properties": { "collection": { "type": "string" }, "vector": { "type": "array" }, "limit": { "type": "integer" }, "filter": { "type": "object" }, "score_threshold": { "type": "number" } }, "required": ["collection", "vector"] } },
{ "name": "vector_delete", "description": "Delete points by id or filter.", "inputSchema": { "type": "object", "properties": { "collection": { "type": "string" }, "ids": { "type": "array" }, "filter": { "type": "object" } }, "required": ["collection"] } }
]
}
20 changes: 20 additions & 0 deletions cartridges/replicate-mcp/cartridge.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"$schema": "https://boj.dev/schemas/cartridge/v1.json",
"spdx": "MPL-2.0",
"copyright": "Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) <j.d.a.jewell@open.ac.uk>",
"name": "replicate-mcp",
"version": "0.1.0",
"description": "Replicate hosted ML models — image generation (Stable Diffusion, FLUX), video (Veo, Kling), upscaling, vision (LLaVA), audio (MusicGen). Async prediction model with polling.",
"domain": "multimodal",
"tier": "Teranga",
"protocols": ["MCP", "REST"],
"auth": { "method": "api_token", "env_var": "REPLICATE_API_TOKEN", "credential_source": "Replicate account → API tokens." },
"api": { "base_url": "local://replicate-mcp", "content_type": "application/json" },
"tools": [
{ "name": "media_authenticate", "description": "Store Replicate API token.", "inputSchema": { "type": "object", "properties": { "api_token": { "type": "string" } }, "required": ["api_token"] } },
{ "name": "media_run_model", "description": "Run a model by owner/name:version with inputs. Returns prediction_id; poll via media_get_prediction.", "inputSchema": { "type": "object", "properties": { "model": { "type": "string", "description": "Format owner/name or owner/name:version" }, "inputs": { "type": "object" }, "webhook": { "type": "string" } }, "required": ["model", "inputs"] } },
{ "name": "media_list_models", "description": "Search or list models in the Replicate catalog by collection/owner/name.", "inputSchema": { "type": "object", "properties": { "query": { "type": "string" }, "owner": { "type": "string" }, "collection": { "type": "string" } } } },
{ "name": "media_get_prediction", "description": "Get status + output of a prediction.", "inputSchema": { "type": "object", "properties": { "prediction_id": { "type": "string" } }, "required": ["prediction_id"] } },
{ "name": "media_cancel_prediction", "description": "Cancel a running prediction.", "inputSchema": { "type": "object", "properties": { "prediction_id": { "type": "string" } }, "required": ["prediction_id"] } }
]
}
22 changes: 22 additions & 0 deletions cartridges/weaviate-mcp/cartridge.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
"$schema": "https://boj.dev/schemas/cartridge/v1.json",
"spdx": "MPL-2.0",
"copyright": "Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) <j.d.a.jewell@open.ac.uk>",
"name": "weaviate-mcp",
"version": "0.1.0",
"description": "Weaviate vector DB — hybrid (vector + BM25 + filter) search, schema-driven classes, modular vectorisers; self-host or cloud.",
"domain": "vector",
"tier": "Teranga",
"protocols": ["MCP", "REST", "gRPC", "GraphQL"],
"auth": { "method": "api_key", "env_var": "WEAVIATE_API_KEY", "credential_source": "Weaviate Cloud Console or self-hosted instance bearer." },
"api": { "base_url": "local://weaviate-mcp", "content_type": "application/json" },
"tools": [
{ "name": "vector_authenticate", "description": "Store Weaviate endpoint URL + API key.", "inputSchema": { "type": "object", "properties": { "endpoint": { "type": "string" }, "api_key": { "type": "string" } }, "required": ["endpoint"] } },
{ "name": "vector_list_collections", "description": "List classes (Weaviate calls collections 'classes').", "inputSchema": { "type": "object", "properties": {} } },
{ "name": "vector_create_collection", "description": "Create a class with property schema + vectoriser.", "inputSchema": { "type": "object", "properties": { "name": { "type": "string" }, "properties": { "type": "array" }, "vectorizer": { "type": "string" } }, "required": ["name"] } },
{ "name": "vector_delete_collection", "description": "Delete a class and all its objects.", "inputSchema": { "type": "object", "properties": { "name": { "type": "string" } }, "required": ["name"] } },
{ "name": "vector_upsert", "description": "Insert/update objects; vectoriser computes embedding if not provided.", "inputSchema": { "type": "object", "properties": { "collection": { "type": "string" }, "objects": { "type": "array" } }, "required": ["collection", "objects"] } },
{ "name": "vector_query", "description": "Hybrid (vector + BM25 + filter) search. Set alpha to weight vector vs BM25.", "inputSchema": { "type": "object", "properties": { "collection": { "type": "string" }, "query": { "type": "string" }, "vector": { "type": "array" }, "alpha": { "type": "number" }, "limit": { "type": "integer" }, "where": { "type": "object" } }, "required": ["collection"] } },
{ "name": "vector_delete", "description": "Delete objects by id or where-filter.", "inputSchema": { "type": "object", "properties": { "collection": { "type": "string" }, "ids": { "type": "array" }, "where": { "type": "object" } }, "required": ["collection"] } }
]
}
19 changes: 19 additions & 0 deletions cartridges/whisper-mcp/cartridge.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"$schema": "https://boj.dev/schemas/cartridge/v1.json",
"spdx": "MPL-2.0",
"copyright": "Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) <j.d.a.jewell@open.ac.uk>",
"name": "whisper-mcp",
"version": "0.1.0",
"description": "Speech-to-text via OpenAI Whisper API + local whisper.cpp fallback. Transcription, language detection, optional translation to English.",
"domain": "multimodal",
"tier": "Teranga",
"protocols": ["MCP", "REST"],
"auth": { "method": "optional_api_key", "env_var": "OPENAI_API_KEY", "credential_source": "Required for API backend; local whisper.cpp backend needs no auth." },
"api": { "base_url": "local://whisper-mcp", "content_type": "application/json" },
"tools": [
{ "name": "audio_authenticate", "description": "Store OpenAI key (for API backend) or path to whisper.cpp binary (for local).", "inputSchema": { "type": "object", "properties": { "backend": { "type": "string", "enum": ["openai", "local"] }, "api_key": { "type": "string" }, "model_path": { "type": "string" } }, "required": ["backend"] } },
{ "name": "audio_transcribe", "description": "Transcribe audio file or URL to text. Word-level timestamps optional.", "inputSchema": { "type": "object", "properties": { "source": { "type": "string" }, "language": { "type": "string" }, "timestamps": { "type": "boolean" }, "model": { "type": "string", "enum": ["whisper-1", "tiny", "base", "small", "medium", "large", "large-v3"] } }, "required": ["source"] } },
{ "name": "audio_detect_language", "description": "Detect spoken language from a short audio sample.", "inputSchema": { "type": "object", "properties": { "source": { "type": "string" } }, "required": ["source"] } },
{ "name": "audio_translate", "description": "Transcribe and translate any source language to English.", "inputSchema": { "type": "object", "properties": { "source": { "type": "string" }, "model": { "type": "string" } }, "required": ["source"] } }
]
}
Loading
Loading