Skip to main content
Glama
appwrite

Appwrite MCP Server

Official
by appwrite

tables_db_create_table

Create a new table in an Appwrite database to organize and store structured data with configurable permissions and row-level security.

Instructions

Create a new Table. Before using this route, you should create a new database resource using either a server integration API or directly from your database console.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
database_idYesDatabase ID.
table_idYesUnique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.
nameYesTable name. Max length: 128 chars.
permissionsNoAn array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](https://appwrite.io/docs/permissions).
row_securityNoEnables configuring permissions for individual rows. A user needs one of row or table level permissions to access a row. [Learn more about permissions](https://appwrite.io/docs/permissions).
enabledNoIs table enabled? When set to 'disabled', users cannot access the table but Server SDKs with and API key can still read and write to the table. No data is lost when this is toggled.

Implementation Reference

  • Registers the TablesDB Appwrite service instance with service_name='tables_db'. This triggers dynamic tool generation for all public methods of TablesDB, naming them 'tables_db_<method_name>', including 'tables_db_create_table'.
    tools_manager.register_service(Service(TablesDB(client), "tables_db"))
  • Default registration of TablesDB service if no other services specified, same as above.
    tools_manager.register_service(Service(TablesDB(client), "tables_db"))
  • Dynamically generates the tool definition and input schema for each method of the service (e.g., TablesDB.create_table becomes 'tables_db_create_table' tool with schema from type hints and docstrings).
    # Get the overridden name if it exists tool_name = self._method_name_overrides.get(name, f"{self.service_name}_{name}") docstring = parse(original_func.__doc__) signature = inspect.signature(original_func) type_hints = get_type_hints(original_func) properties = {} required = [] for param_name, param in signature.parameters.items(): if param_name == 'self': continue param_type = type_hints.get(param_name, str) properties[param_name] = self.python_type_to_json_schema(param_type) properties[param_name]["description"] = f"Parameter '{param_name}'" for doc_param in docstring.params: if doc_param.arg_name == param_name: properties[param_name]["description"] = doc_param.description if param.default is param.empty: required.append(param_name) tool_definition = Tool( name=tool_name, description=f"{docstring.short_description or "No description available"}", inputSchema={ "type": "object", "properties": properties, "required": required } )
  • MCP tool call handler that retrieves the bound method (TablesDB.create_table) from the registry and executes it with provided arguments, returning the result as TextContent.
    try: tool_info = tools_manager.get_tool(name) if not tool_info: raise McpError(f"Tool {name} not found") bound_method = tool_info["function"] result = bound_method(**(arguments or {})) if hasattr(result, 'to_dict'): result_dict = result.to_dict() return [types.TextContent(type="text", text=str(result_dict))] return [types.TextContent(type="text", text=str(result))] except AppwriteException as e: return [types.TextContent(type="text", text=f"Appwrite Error: {str(e)}")] except Exception as e: return [types.TextContent(type="text", text=f"Error: {str(e)}")]
  • ToolManager registers services and aggregates their tools into a registry, used by list_tools and call_tool.
    def register_service(self, service: Service): """Register a new service and its tools""" self.services.append(service) self.tools_registry.update(service.list_tools())

Other Tools

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/appwrite/mcp-for-api'

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