Skip to main content
Glama
openserverless-mcp

openserverless-mcp

Official
by apache

openserverless mcp

An MCP server for OpenServerless. It exposes the OpenServerless action tools (previously the @opencode-ai/plugin tools under trustable-app/tools/) over the Model Context Protocol so any MCP-capable agent can drive them.

Tools

Tool

Description

action_new

Idempotently create an API endpoint (__main__.py + module file). public defaults to true.

action_invoke

Run ops invoke <endpoint> with key=value params and return the JSON result.

action_requirements

Add a library to an endpoint's requirements.txt (skips preinstalled libs).

action_add_secret

Wire a .env secret into an endpoint's context as ctx.<SECRET>.

secret_status

Check secret presence and endpoint bindings without reading its value.

secret_bind

Atomically bind the same secret to multiple endpoints.

secret_unbind

Atomically remove an obsolete generated binding without reading or deleting the secret.

auth_setup

Atomically wire Redis into all token-issuing, protected/session, and logout endpoints; never writes .env or configures JWT.

action_add_s3

Add bucket-scoped S3 to an endpoint's context (ctx.S3_CLIENT, ctx.S3_DATA, ctx.S3_WEB, ctx.S3_PUBLIC); forbids list_buckets and requires put_object → get_object/compare → delete_object for read/write verification.

action_add_postgresql

Add PostgreSQL (ctx.POSTGRESQL).

action_add_redis

Add Redis (ctx.REDIS, ctx.REDIS_PREFIX) and its Python runtime dependency; use it for opaque authenticated sessions.

action_add_milvus

Add Milvus vector DB (ctx.MILVUS).

action_add_mongodb

Add MongoDB (ctx.MONGODB_CLIENT, ctx.MONGODB).

The endpoint argument is either name (uses the v1 package) or package/name. Both segments must start with a letter and contain only letters, numbers, and hyphens. Use flat hyphenated names such as v1/employees-photo; underscores, spaces, nested routes, and forms such as v1/employees_photo or v1/employees/photo are invalid. Repeating action_new for a compatible existing endpoint is a successful check that leaves its files unchanged; incomplete paths and visibility conflicts are reported as MCP errors.

Secret values are never returned by these tools. Missing secrets and invalid endpoints are MCP errors (isError: true), so clients cannot mistake an incomplete binding for a successful tool call. action_add_secret remains as the single-endpoint compatibility tool; use secret_bind when several actions must share one user-configured credential.

Application .env and .env.production files are owned by Trustant's user-facing configuration flow. The MCP performs only value-free presence checks needed for binding validation and never creates, edits, imports, synchronizes, regenerates, or automatically populates those files. A missing variable must be added by the user through Trustant.

Application authentication uses Redis-backed opaque sessions. Create login, registration, me/session, every protected endpoint, and logout, then call auth_setup once with those complete endpoint sets. Store token-to-identity mappings under keys derived from ctx.REDIS_PREFIX with a bounded TTL; never use JWT or an application signing secret as a substitute.

Related MCP server: anyapi-mcp-server

Working directory

All path-based tools operate on paths relative to the process working directory: they read/write packages/<pkg>/<name>/... and .env. The server must therefore be launched with the user's app checkout as its CWD (this is how opencode launches type: "local" MCP servers).

Layout

src/
  index.ts            entrypoint — registers every tool over stdio
  lib.ts              shared helpers (endpoint parsing, connector injection, types)
  secrets.ts          secret name, .env, status, and atomic binding helpers
  tools/
    new.ts            action_new
    invoke.ts         action_invoke
    requirements.ts   action_requirements
    add-secret.ts     action_add_secret
    add-s3.ts         action_add_s3
    add-postgresql.ts action_add_postgresql
    add-redis.ts      action_add_redis
    add-milvus.ts     action_add_milvus
    add-mongodb.ts    action_add_mongodb
    secret-status.ts  secret_status
    secret-bind.ts    secret_bind
    secret-unbind.ts  secret_unbind
    auth-setup.ts     auth_setup

Each file under tools/ default-exports a Tool (defineTool({ name, config, handler })); index.ts imports them all and registers them in a loop. To add a tool, drop a file in tools/ and add it to the array in index.ts.

Run

Requires Node 18+ and ops on the PATH. TypeScript runs directly via tsx.

npm install
npm start          # tsx src/index.ts — speaks MCP over stdio

Wire into opencode

Add to the app's opencode.json:

{
  "mcp": {
    "openserverless": {
      "type": "local",
      "command": ["npx", "tsx", "/path/to/mcp/src/index.ts"],
      "enabled": true
    }
  }
}

Available Tools

8 tools
action_add_milvusB

Add Milvus vector DB connection to an endpoint's context. Provides ctx.MILVUS.

Inputs: endpoint (required).

action_add_postgresqlC

Add PostgreSQL connection to an endpoint's context. Provides ctx.POSTGRESQL.

Inputs: endpoint (required).

action_add_redisB

Add Redis connection to an endpoint's context. Provides ctx.REDIS and ctx.REDIS_PREFIX.

Inputs: endpoint (required).

action_add_s3A

Add S3 connection to an endpoint's context. Provides ctx.S3_CLIENT, ctx.S3_DATA, ctx.S3_WEB, ctx.S3_PUBLIC.

Inputs: endpoint (required).

action_add_secretB

Add a secret to an endpoint's context. The secret must exist in .env.

Inputs: secret (required), endpoint (required).

action_invokeB

Invoke an API action. Executes ops action invoke with the given endpoint and key=value parameters.

Inputs: endpoint (required), params.

action_newA

Create a new API endpoint. Creates the action folder with main.py and module file.

Inputs: endpoint (required), public.

action_requirementsB

Add a library to an endpoint's requirements.txt. Skips if the library is preinstalled.

Inputs: library (required), endpoint (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.5/5.0

    Scored across 8 tools

    Disambiguation5/5

    Each tool targets a unique purpose: adding specific connection types (Milvus, PostgreSQL, Redis, S3, secret), creating a new action, invoking an action, or adding a library requirement. There is no overlap in functionality, and the descriptions clearly distinguish each tool's role.

    Naming Consistency4/5

    All tools use a consistent 'action_' prefix and snake_case, but the verb structure varies: some include a noun after 'add' (e.g., action_add_milvus), while others lack a noun (action_invoke, action_new, action_requirements). This minor inconsistency prevents a perfect score, but the pattern is still predictable.

    Tool Count5/5

    With 8 tools, the set is well-scoped for a server focused on managing OpenServerless actions. It covers creation, invocation, dependency management, and integration with external services without being overwhelming or too sparse.

    Completeness3/5

    The tool surface covers core action creation and invocation, along with adding various connections and dependencies. However, it lacks tools for deleting, updating, or listing actions, as well as removing connections or secrets. These gaps could hinder agents needing full lifecycle management.

    Maintenance

    ActivitySlowing
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers