Skip to main content
Glama

Convex MCP server

Official
by get-convex
storage.rs1.7 kB
use common::sync::spsc; use deno_core::{ serde_v8, v8::{ self, }, }; use super::OpProvider; use crate::{ environment::AsyncOpRequest, request_scope::StreamListener, }; pub fn async_op_storage_store<'b, P: OpProvider<'b>>( provider: &mut P, args: v8::FunctionCallbackArguments, resolver: v8::Global<v8::PromiseResolver>, ) -> anyhow::Result<()> { let stream_id = serde_v8::from_v8(provider.scope(), args.get(1))?; let (body_sender, body_receiver) = spsc::unbounded_channel(); match stream_id { Some(stream_id) => { provider.new_stream_listener(stream_id, StreamListener::RustStream(body_sender))?; }, None => drop(body_sender), }; let content_type: Option<String> = serde_v8::from_v8(provider.scope(), args.get(2))?; let content_type = content_type.filter(|ct| !ct.is_empty()); let content_length = serde_v8::from_v8(provider.scope(), args.get(3))?; let digest = serde_v8::from_v8(provider.scope(), args.get(4))?; provider.start_async_op( AsyncOpRequest::StorageStore { body_stream: body_receiver, content_type, content_length, digest, }, resolver, ) } pub fn async_op_storage_get<'b, P: OpProvider<'b>>( provider: &mut P, args: v8::FunctionCallbackArguments, resolver: v8::Global<v8::PromiseResolver>, ) -> anyhow::Result<()> { let storage_id = serde_v8::from_v8(provider.scope(), args.get(1))?; let stream_id = provider.create_stream()?; provider.start_async_op( AsyncOpRequest::StorageGet { storage_id, stream_id, }, resolver, ) }

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/get-convex/convex-backend'

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