|
5 | 5 | "io.github.stacklok": { |
6 | 6 | "docker.io/mcp/redis:latest": { |
7 | 7 | "metadata": { |
8 | | - "last_updated": "2026-04-04T03:00:40Z", |
9 | | - "stars": 471 |
| 8 | + "last_updated": "2026-05-07T03:06:47Z", |
| 9 | + "stars": 504 |
10 | 10 | }, |
11 | 11 | "overview": "## Redis MCP Server\n\nThe redis MCP server enables LLMs to interact with Redis key-value databases through a set of standardized tools. The server connects to Redis databases and provides MCP tools for basic operations (CRUD operations, database management), data structures (full support for strings, hashes, lists, sets, sorted sets, JSON), vector search functionality, and streams/Pub/Sub features for messaging and time-series data handling.", |
12 | 12 | "permissions": { |
|
341 | 341 | }, |
342 | 342 | "name": "hset" |
343 | 343 | }, |
| 344 | + { |
| 345 | + "annotations": {}, |
| 346 | + "description": "\nPerform a hybrid search combining a Redis filter expression with KNN vector similarity.\n\nHybrid search pre-filters documents by metadata before ranking by vector similarity —\nthe standard pattern for production RAG and semantic search pipelines.\n\nFilter expression examples:\n \"*\" → no filter, pure vector search (same as vector_search_hash)\n \"@category:{news}\" → tag filter\n \"@year:[2020 2024]\" → numeric range\n \"@lang:{en} @year:[2022 +inf]\" → combined tag + range\n \"@title:redis\" → full-text match on a text field\n\nFull filter syntax: https://redis.io/docs/latest/develop/interact/search-and-query/query/\n\nArgs:\n query_vector: List of floats to use as the query vector.\n filter_expression: Redis filter expression to restrict candidates before KNN ranking.\n Defaults to '*' (no filter).\n index_name: Name of the Redis index (default: 'vector_index').\n vector_field: Name of the indexed vector field (default: 'vector').\n k: Number of nearest neighbors to return.\n return_fields: Additional fields to include in results (optional).\n\nReturns:\n A list of matched documents with their similarity score, or an error message.\n", |
| 347 | + "inputSchema": { |
| 348 | + "properties": { |
| 349 | + "filter_expression": { |
| 350 | + "default": "*", |
| 351 | + "title": "Filter Expression", |
| 352 | + "type": "string" |
| 353 | + }, |
| 354 | + "index_name": { |
| 355 | + "default": "vector_index", |
| 356 | + "title": "Index Name", |
| 357 | + "type": "string" |
| 358 | + }, |
| 359 | + "k": { |
| 360 | + "default": 5, |
| 361 | + "title": "K", |
| 362 | + "type": "integer" |
| 363 | + }, |
| 364 | + "query_vector": { |
| 365 | + "items": { |
| 366 | + "type": "number" |
| 367 | + }, |
| 368 | + "title": "Query Vector", |
| 369 | + "type": "array" |
| 370 | + }, |
| 371 | + "return_fields": { |
| 372 | + "anyOf": [ |
| 373 | + { |
| 374 | + "items": { |
| 375 | + "type": "string" |
| 376 | + }, |
| 377 | + "type": "array" |
| 378 | + }, |
| 379 | + { |
| 380 | + "type": "null" |
| 381 | + } |
| 382 | + ], |
| 383 | + "default": null, |
| 384 | + "title": "Return Fields" |
| 385 | + }, |
| 386 | + "vector_field": { |
| 387 | + "default": "vector", |
| 388 | + "title": "Vector Field", |
| 389 | + "type": "string" |
| 390 | + } |
| 391 | + }, |
| 392 | + "required": [ |
| 393 | + "query_vector" |
| 394 | + ], |
| 395 | + "type": "object" |
| 396 | + }, |
| 397 | + "name": "hybrid_search" |
| 398 | + }, |
344 | 399 | { |
345 | 400 | "annotations": {}, |
346 | 401 | "description": "Get Redis server information and statistics.\n\nArgs:\n section: The section of the info command (default, memory, cpu, etc.).\n\nReturns:\n A dictionary of server information or an error message.\n", |
|
1019 | 1074 | }, |
1020 | 1075 | "name": "vector_search_hash" |
1021 | 1076 | }, |
| 1077 | + { |
| 1078 | + "annotations": {}, |
| 1079 | + "description": "Acknowledge entries that were processed by a consumer group.\n\nArgs:\n key (str): The stream key.\n group_name (str): The consumer group name.\n entry_ids (List[str]): Entry IDs to acknowledge.\n\nReturns:\n str: Confirmation message or an error message.\n", |
| 1080 | + "inputSchema": { |
| 1081 | + "properties": { |
| 1082 | + "entry_ids": { |
| 1083 | + "items": { |
| 1084 | + "type": "string" |
| 1085 | + }, |
| 1086 | + "title": "Entry Ids", |
| 1087 | + "type": "array" |
| 1088 | + }, |
| 1089 | + "group_name": { |
| 1090 | + "title": "Group Name", |
| 1091 | + "type": "string" |
| 1092 | + }, |
| 1093 | + "key": { |
| 1094 | + "title": "Key", |
| 1095 | + "type": "string" |
| 1096 | + } |
| 1097 | + }, |
| 1098 | + "required": [ |
| 1099 | + "key", |
| 1100 | + "group_name", |
| 1101 | + "entry_ids" |
| 1102 | + ], |
| 1103 | + "type": "object" |
| 1104 | + }, |
| 1105 | + "name": "xack" |
| 1106 | + }, |
1022 | 1107 | { |
1023 | 1108 | "annotations": {}, |
1024 | 1109 | "description": "Add an entry to a Redis stream with an optional expiration time.\n\nArgs:\n key (str): The stream key.\n fields (dict): The fields and values for the stream entry.\n expiration (int, optional): Expiration time in seconds.\n\nReturns:\n str: The ID of the added entry or an error message.\n", |
|
1076 | 1161 | }, |
1077 | 1162 | "name": "xdel" |
1078 | 1163 | }, |
| 1164 | + { |
| 1165 | + "annotations": {}, |
| 1166 | + "description": "Create a consumer group for a Redis stream.\n\nArgs:\n key (str): The stream key.\n group_name (str): The consumer group name.\n start_id (str, optional): Stream ID from which the group starts consuming.\n mkstream (bool, optional): Create the stream if it does not exist.\n\nReturns:\n str: Confirmation message or an error message.\n", |
| 1167 | + "inputSchema": { |
| 1168 | + "properties": { |
| 1169 | + "group_name": { |
| 1170 | + "title": "Group Name", |
| 1171 | + "type": "string" |
| 1172 | + }, |
| 1173 | + "key": { |
| 1174 | + "title": "Key", |
| 1175 | + "type": "string" |
| 1176 | + }, |
| 1177 | + "mkstream": { |
| 1178 | + "default": true, |
| 1179 | + "title": "Mkstream", |
| 1180 | + "type": "boolean" |
| 1181 | + }, |
| 1182 | + "start_id": { |
| 1183 | + "default": "$", |
| 1184 | + "title": "Start Id", |
| 1185 | + "type": "string" |
| 1186 | + } |
| 1187 | + }, |
| 1188 | + "required": [ |
| 1189 | + "key", |
| 1190 | + "group_name" |
| 1191 | + ], |
| 1192 | + "type": "object" |
| 1193 | + }, |
| 1194 | + "name": "xgroup_create" |
| 1195 | + }, |
| 1196 | + { |
| 1197 | + "annotations": {}, |
| 1198 | + "description": "Destroy a consumer group for a Redis stream.\n\nArgs:\n key (str): The stream key.\n group_name (str): The consumer group name.\n\nReturns:\n str: Confirmation message or an error message.\n", |
| 1199 | + "inputSchema": { |
| 1200 | + "properties": { |
| 1201 | + "group_name": { |
| 1202 | + "title": "Group Name", |
| 1203 | + "type": "string" |
| 1204 | + }, |
| 1205 | + "key": { |
| 1206 | + "title": "Key", |
| 1207 | + "type": "string" |
| 1208 | + } |
| 1209 | + }, |
| 1210 | + "required": [ |
| 1211 | + "key", |
| 1212 | + "group_name" |
| 1213 | + ], |
| 1214 | + "type": "object" |
| 1215 | + }, |
| 1216 | + "name": "xgroup_destroy" |
| 1217 | + }, |
1079 | 1218 | { |
1080 | 1219 | "annotations": {}, |
1081 | 1220 | "description": "Read entries from a Redis stream.\n\nArgs:\n key (str): The stream key.\n count (int, optional): Number of entries to retrieve.\n\nReturns:\n str: The retrieved stream entries or an error message.\n", |
|
1098 | 1237 | }, |
1099 | 1238 | "name": "xrange" |
1100 | 1239 | }, |
| 1240 | + { |
| 1241 | + "annotations": {}, |
| 1242 | + "description": "Read entries from a Redis stream using a consumer group.\n\nArgs:\n key (str): The stream key.\n group_name (str): The consumer group name.\n consumer_name (str): The consumer name.\n count (int, optional): Maximum number of entries to retrieve.\n block_ms (int, optional): Maximum time to block waiting for entries.\n Use None for a non-blocking read. 0 is rejected because Redis treats\n BLOCK 0 as an indefinite wait.\n stream_id (str, optional): Stream ID to read from. Use \"\u003e\" for new messages.\n\nReturns:\n str: The retrieved stream entries or an error message.\n", |
| 1243 | + "inputSchema": { |
| 1244 | + "properties": { |
| 1245 | + "block_ms": { |
| 1246 | + "anyOf": [ |
| 1247 | + { |
| 1248 | + "type": "integer" |
| 1249 | + }, |
| 1250 | + { |
| 1251 | + "type": "null" |
| 1252 | + } |
| 1253 | + ], |
| 1254 | + "default": null, |
| 1255 | + "title": "Block Ms" |
| 1256 | + }, |
| 1257 | + "consumer_name": { |
| 1258 | + "title": "Consumer Name", |
| 1259 | + "type": "string" |
| 1260 | + }, |
| 1261 | + "count": { |
| 1262 | + "default": 1, |
| 1263 | + "title": "Count", |
| 1264 | + "type": "integer" |
| 1265 | + }, |
| 1266 | + "group_name": { |
| 1267 | + "title": "Group Name", |
| 1268 | + "type": "string" |
| 1269 | + }, |
| 1270 | + "key": { |
| 1271 | + "title": "Key", |
| 1272 | + "type": "string" |
| 1273 | + }, |
| 1274 | + "stream_id": { |
| 1275 | + "default": "\u003e", |
| 1276 | + "title": "Stream Id", |
| 1277 | + "type": "string" |
| 1278 | + } |
| 1279 | + }, |
| 1280 | + "required": [ |
| 1281 | + "key", |
| 1282 | + "group_name", |
| 1283 | + "consumer_name" |
| 1284 | + ], |
| 1285 | + "type": "object" |
| 1286 | + }, |
| 1287 | + "name": "xreadgroup" |
| 1288 | + }, |
1101 | 1289 | { |
1102 | 1290 | "annotations": {}, |
1103 | 1291 | "description": "Add a member to a Redis sorted set with an optional expiration time.\n\nArgs:\n key (str): The sorted set key.\n score (float): The score of the member.\n member (str): The member to add.\n expiration (int, optional): Expiration time in seconds.\n\nReturns:\n str: Confirmation message or an error message.\n", |
|
1208 | 1396 | "hget", |
1209 | 1397 | "hgetall", |
1210 | 1398 | "hset", |
| 1399 | + "hybrid_search", |
1211 | 1400 | "info", |
1212 | 1401 | "json_del", |
1213 | 1402 | "json_get", |
|
1233 | 1422 | "type", |
1234 | 1423 | "unsubscribe", |
1235 | 1424 | "vector_search_hash", |
| 1425 | + "xack", |
1236 | 1426 | "xadd", |
1237 | 1427 | "xdel", |
| 1428 | + "xgroup_create", |
| 1429 | + "xgroup_destroy", |
1238 | 1430 | "xrange", |
| 1431 | + "xreadgroup", |
1239 | 1432 | "zadd", |
1240 | 1433 | "zrange", |
1241 | 1434 | "zrem" |
|
0 commit comments