Skip to main content
Glama

upsert_document_by_id

Insert or update a document in Couchbase using its ID, returning success status. Specify bucket, scope, collection, ID, and content for document management.

Instructions

Insert or update a document by its ID. Returns True on success, False on failure.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
bucket_nameYes
scope_nameYes
collection_nameYes
document_idYes
document_contentYes

Implementation Reference

  • The handler function that executes the upsert_document_by_id tool logic, connecting to Couchbase and performing the upsert operation.
    def upsert_document_by_id(
        ctx: Context,
        bucket_name: str,
        scope_name: str,
        collection_name: str,
        document_id: str,
        document_content: dict[str, Any],
    ) -> bool:
        """Insert or update a document by its ID.
        Returns True on success, False on failure."""
        cluster = get_cluster_connection(ctx)
        bucket = connect_to_bucket(cluster, bucket_name)
        try:
            collection = bucket.scope(scope_name).collection(collection_name)
            collection.upsert(document_id, document_content)
            logger.info(f"Successfully upserted document {document_id}")
            return True
        except Exception as e:
            logger.error(f"Error upserting document {document_id}: {e}")
            return False
  • Registers all tools, including upsert_document_by_id, with the FastMCP server instance.
    # Register all tools
    for tool in ALL_TOOLS:
        mcp.add_tool(tool)
  • Imports and exposes the upsert_document_by_id function for inclusion in the ALL_TOOLS list used for registration.
    # Key-Value tools
    from .kv import (
        delete_document_by_id,
        get_document_by_id,
        upsert_document_by_id,
    )
    
    # Query tools
    from .query import (
        get_longest_running_queries,
        get_most_frequent_queries,
        get_queries_not_selective,
        get_queries_not_using_covering_index,
        get_queries_using_primary_index,
        get_queries_with_large_result_count,
        get_queries_with_largest_response_sizes,
        get_schema_for_collection,
        run_sql_plus_plus_query,
    )
    
    # Server tools
    from .server import (
        get_buckets_in_cluster,
        get_cluster_health_and_services,
        get_collections_in_scope,
        get_scopes_and_collections_in_bucket,
        get_scopes_in_bucket,
        get_server_configuration_status,
        test_cluster_connection,
    )
    
    # List of all tools for easy registration
    ALL_TOOLS = [
        get_buckets_in_cluster,
        get_server_configuration_status,
        test_cluster_connection,
        get_scopes_and_collections_in_bucket,
        get_collections_in_scope,
        get_scopes_in_bucket,
        get_document_by_id,
        upsert_document_by_id,
        delete_document_by_id,
        get_schema_for_collection,
        run_sql_plus_plus_query,
        get_index_advisor_recommendations,
        list_indexes,
        get_cluster_health_and_services,
        get_queries_not_selective,
        get_queries_not_using_covering_index,
        get_queries_using_primary_index,
        get_queries_with_large_result_count,
        get_queries_with_largest_response_sizes,
        get_longest_running_queries,
        get_most_frequent_queries,
    ]

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Couchbase-Ecosystem/mcp-server-couchbase'

If you have feedback or need assistance with the MCP directory API, please join our Discord server