Back to list
cdrury526

mcp-bridge

by cdrury526

Real estate transaction management platform - Agents fork

0🍴 0📅 Dec 8, 2025

SKILL.md


name: mcp-bridge description: > Use the MCP Code Execution Bridge for context-efficient access to Supabase and shadcn tools. Provides API-based database operations (query, insert, update, delete) that work without Docker/MCP servers. Use when you need database access or component management without loading all tool definitions into context. allowed-tools: Bash, Read, Write, Edit, Glob, Grep

MCP Code Execution Bridge

Use scripts/mcp/ for context-efficient MCP tool access. This follows the "Code Execution with MCP" pattern - instead of loading all MCP tool definitions into context, you discover and execute tools through CLI/API wrappers.

When to Use This Skill

Use the MCP Bridge when:

  1. Database Operations - Query, insert, update, delete data via REST API
  2. MCP Servers Disabled - API tools work without MCP servers enabled
  3. No Docker Available - API tools don't require local Supabase
  4. Reducing Context Overhead - Avoid loading all MCP definitions upfront
  5. Component Management - Search and install shadcn components

For best performance, use the unified HTTP server instead of CLI:

Start the server:

npm run mcp:server

Access the WebUI:

http://localhost:3456/ui

Features:

  • 🚀 ~50ms per call (vs ~800ms CLI)
  • 🔄 Hot reload when tools are added
  • 🖥️ WebUI for browsing and executing tools
  • 📊 Execution history tracking
  • 🔒 Single-instance protection

API Endpoints:

# Discovery
curl http://localhost:3456/mcp/servers
curl http://localhost:3456/mcp/stats
curl "http://localhost:3456/mcp/tools/search?q=database"

# Execute tools
curl -X POST http://localhost:3456/mcp/servers/supabase/tools/list-users/run \
  -H "Content-Type: application/json" -d '{}'

# View history
curl http://localhost:3456/mcp/history

Quick Start - Database Queries

Query a table:

npm run mcp -- run supabase query-table '{"table":"profiles","limit":5}'

Query with filters:

npm run mcp -- run supabase query-table '{"table":"transactions","select":"id,status,property_address","filter":"status=eq.active","limit":10}'

Insert a row:

npm run mcp -- run supabase insert-row '{"table":"contacts","data":{"name":"John","email":"john@example.com"}}'

Update rows:

npm run mcp -- run supabase update-rows '{"table":"profiles","filter":"id=eq.abc-123","data":{"name":"Updated"}}'

Delete rows:

npm run mcp -- run supabase delete-rows '{"table":"contacts","filter":"id=eq.abc-123"}'

Quick Start - SQL Queries (Most Powerful)

Execute any SQL:

npm run mcp -- run supabase run-sql '{"query":"SELECT * FROM profiles LIMIT 5"}'

List all tables:

npm run mcp -- run supabase run-sql '{"query":"SELECT tablename FROM pg_tables WHERE schemaname = '\''public'\'' ORDER BY tablename"}'

Create a table:

npm run mcp -- run supabase run-sql '{"query":"CREATE TABLE test (id serial PRIMARY KEY, name text)"}'

Check RLS policies:

npm run mcp -- run supabase run-sql '{"query":"SELECT tablename, policyname FROM pg_policies WHERE schemaname = '\''public'\''"}'

Quick Start - Storage

List buckets:

npm run mcp -- run supabase list-buckets '{}'

List files in bucket:

npm run mcp -- run supabase list-files '{"bucket":"documents","path":""}'

Get public URL:

npm run mcp -- run supabase get-public-url '{"bucket":"images","path":"logo.png"}'

Upload a file from local path (auto-detects content type):

npm run mcp -- run supabase upload-file '{"bucket":"documents","path":"contracts/deal.pdf","filePath":"./local/contract.pdf"}'

Upload a file (base64 encoded):

npm run mcp -- run supabase upload-file '{"bucket":"documents","path":"contracts/deal.pdf","content":"JVBERi0xLjQK...","contentType":"application/pdf"}'

Download a file:

npm run mcp -- run supabase download-file '{"bucket":"documents","path":"contracts/deal.pdf"}'

Quick Start - Auth Admin (User Management)

Create a user:

npm run mcp -- run supabase create-user '{"email":"agent@realty.com","password":"secure123","email_confirm":true}'

List users:

npm run mcp -- run supabase list-users '{"page":1,"per_page":50}'

Get user by ID:

npm run mcp -- run supabase get-user '{"id":"user-uuid-here"}'

Update user:

npm run mcp -- run supabase update-user '{"id":"user-uuid","email":"new@example.com","user_metadata":{"role":"admin"}}'

Ban user for 24 hours:

npm run mcp -- run supabase update-user '{"id":"user-uuid","ban_duration":"24h"}'

Delete user:

npm run mcp -- run supabase delete-user '{"id":"user-uuid"}'

Quick Start - Edge Functions

Invoke an Edge Function:

npm run mcp -- run supabase invoke-function '{"name":"hello-world","payload":{"name":"John"}}'

Invoke with service role key (for admin functions):

npm run mcp -- run supabase invoke-function '{"name":"admin-task","useServiceRole":true,"payload":{"action":"cleanup"}}'

List deployed Edge Functions:

npm run mcp -- run supabase list-functions '{}'

Quick Start - TypeScript Types (via API)

Generate types to console:

npm run mcp -- run supabase generate-types-api '{}'

Generate types to file:

npm run mcp -- run supabase generate-types-api '{"outputPath":"src/types/database.ts"}'

Generate types with multiple schemas:

npm run mcp -- run supabase generate-types-api '{"includedSchemas":["public","auth"]}'

Quick Start - BoldSign E-Signature

List documents with status filter:

npm run mcp -- run boldsign list-documents '{"status":"sent","pageSize":10}'

Get detailed document status:

npm run mcp -- run boldsign get-document-status '{"documentId":"your-document-id"}'

Send reminder to pending signers:

npm run mcp -- run boldsign send-reminder '{"documentId":"your-document-id"}'

Check webhook processing health:

npm run mcp -- run boldsign webhook-health '{"hours":24}'

List recent webhook events:

npm run mcp -- run boldsign list-webhook-events '{"limit":20}'

Get audit trail for compliance:

npm run mcp -- run boldsign get-audit-trail '{"documentId":"your-document-id","format":"json"}'

List available templates:

npm run mcp -- run boldsign list-templates '{"searchTerm":"purchase"}'

Test webhook endpoint:

npm run mcp -- run boldsign test-webhook '{"eventType":"document.completed"}'

Check BoldSign configuration:

npm run mcp -- run boldsign get-config-status '{}'

Quick Start - Stripe Payments

List customers:

npm run mcp -- run stripe list-customers '{"limit":10}'

Search customer by email:

npm run mcp -- run stripe list-customers '{"email":"customer@example.com"}'

Get customer with payment methods:

npm run mcp -- run stripe get-customer '{"customerId":"cus_abc123","includePaymentMethods":true}'

List recent payments:

npm run mcp -- run stripe list-payments '{"limit":10}'

Get payment details (debug failures):

npm run mcp -- run stripe get-payment '{"paymentIntentId":"pi_abc123"}'

List subscriptions by status:

npm run mcp -- run stripe list-subscriptions '{"status":"active","limit":10}'

Get subscription with upcoming invoice:

npm run mcp -- run stripe get-subscription '{"subscriptionId":"sub_abc123","includeUpcomingInvoice":true}'

List invoices for customer:

npm run mcp -- run stripe list-invoices '{"customerId":"cus_abc123","status":"paid"}'

List all products:

npm run mcp -- run stripe list-products '{"active":true}'

List subscription prices:

npm run mcp -- run stripe list-prices '{"type":"recurring","active":true}'

List prices for a product:

npm run mcp -- run stripe list-prices '{"productId":"prod_abc123"}'

Check account balance:

npm run mcp -- run stripe get-balance '{}'

List disputes (chargebacks):

npm run mcp -- run stripe list-disputes '{"limit":10}'

List webhook events:

npm run mcp -- run stripe list-webhook-events '{"type":"payment_intent.succeeded","limit":20}'

Check webhook health:

npm run mcp -- run stripe webhook-health '{"hours":24}'

Create test customer (test mode only):

npm run mcp -- run stripe create-test-customer '{"email":"test@example.com","addTestPaymentMethod":true}'

Check Stripe configuration:

npm run mcp -- run stripe get-config-status '{}'

Available Servers

Supabase (24 API tools + 6 CLI tools)

PostgREST API Tools (CRUD operations):

ToolDescriptionExample
query-tableQuery tables via PostgREST{"table":"profiles","limit":5}
insert-rowInsert a row{"table":"contacts","data":{...}}
update-rowsUpdate rows (filter required){"table":"profiles","filter":"id=eq.x","data":{...}}
delete-rowsDelete rows (filter required){"table":"contacts","filter":"id=eq.x"}

Management API Tools (SQL execution - MOST POWERFUL):

ToolDescriptionExample
run-sqlExecute ANY SQL query{"query":"SELECT * FROM profiles LIMIT 5"}

Storage Bucket Tools:

ToolDescriptionExample
list-bucketsList all storage buckets{}
create-bucketCreate a new bucket{"name":"images","public":true}
delete-bucketDelete bucket (must be empty){"name":"old-bucket"}
get-bucketGet bucket details{"name":"documents"}

Storage File Tools:

ToolDescriptionExample
list-filesList files in bucket{"bucket":"documents","path":""}
delete-fileDelete files{"bucket":"documents","paths":["old.pdf"]}
move-fileMove/rename file{"bucket":"docs","fromPath":"a.pdf","toPath":"b.pdf"}
get-public-urlGet public URL (public bucket){"bucket":"images","path":"logo.png"}
create-signed-urlGet temporary signed URL{"bucket":"docs","path":"contract.pdf"}
upload-fileUpload file (from path or base64){"bucket":"docs","path":"file.pdf","filePath":"./local.pdf"}
download-fileDownload file from bucket{"bucket":"docs","path":"contract.pdf"}

Auth Admin API Tools (user management):

ToolDescriptionExample
create-userCreate a new user{"email":"user@example.com","password":"secure123"}
list-usersList all users with pagination{"page":1,"per_page":50}
get-userGet user by ID{"id":"user-uuid"}
update-userUpdate user properties{"id":"user-uuid","email":"new@example.com"}
delete-userDelete a user{"id":"user-uuid"}

Edge Function Tools:

ToolDescriptionExample
invoke-functionInvoke an Edge Function{"name":"hello","payload":{"key":"value"}}
list-functionsList deployed functions{}

Management API Tools (requires access token):

ToolDescriptionExample
run-sqlExecute ANY SQL query{"query":"SELECT * FROM profiles LIMIT 5"}
generate-types-apiGenerate TypeScript types{"outputPath":"src/types/database.ts"}

CLI-Based Tools (require local Supabase/Docker):

ToolDescription
list-tablesList tables with schema info
execute-sqlExecute raw SQL
apply-migrationApply DDL migrations
get-logsGet service logs
get-advisorsSecurity/performance advisors
generate-typesGenerate TypeScript types

shadcn (4 tools)

ToolDescriptionExample
search-itemsSearch components{"registries":["@shadcn"],"query":"button"}
view-itemsView component details{"items":["@shadcn/button"]}
get-examplesGet usage examples{"registries":["@shadcn"],"query":"button-demo"}
get-add-commandGet install command{"items":["@shadcn/button","@shadcn/card"]}

BoldSign (13 tools)

Document Management:

ToolDescriptionExample
list-documentsList/search documents{"status":"sent","pageSize":10}
get-document-statusGet detailed status with signers{"documentId":"abc-123"}
send-reminderRemind pending signers{"documentId":"abc-123"}
extend-expiryExtend document deadline{"documentId":"abc-123","additionalDays":30}

Document Actions:

ToolDescriptionExample
get-audit-trailGet signing events and timestamps{"documentId":"abc-123","format":"json"}
revoke-documentCancel pending document{"documentId":"abc-123","reason":"Terms changed"}

Template Management:

ToolDescriptionExample
list-templatesList available templates{"searchTerm":"purchase","pageSize":10}
get-templateGet template details{"templateId":"abc-123"}
send-from-templateSend doc from template{"templateId":"abc-123","roles":[...]}

Webhook & Debugging:

ToolDescriptionExample
list-webhook-eventsQuery webhook history{"documentId":"abc-123","limit":10}
webhook-healthCheck webhook processing{"hours":24}
test-webhookSend test webhook payload{"eventType":"document.completed"}
get-config-statusCheck BoldSign config{}

Stripe (15 tools)

Customer Management:

ToolDescriptionExample
list-customersList/search customers{"email":"user@example.com","limit":10}
get-customerGet customer with payment methods{"customerId":"cus_abc","includePaymentMethods":true}

Payment Management:

ToolDescriptionExample
list-paymentsList PaymentIntents{"customerId":"cus_abc","status":"succeeded"}
get-paymentGet payment with charge details{"paymentIntentId":"pi_abc"}

Subscription Management:

ToolDescriptionExample
list-subscriptionsList subscriptions by status{"status":"active","limit":10}
get-subscriptionGet subscription with billing{"subscriptionId":"sub_abc","includeUpcomingInvoice":true}

Product & Pricing:

ToolDescriptionExample
list-productsList products (plans, one-time){"active":true,"limit":10}
list-pricesList prices by product/type{"type":"recurring","productId":"prod_abc"}

Invoice Management:

ToolDescriptionExample
list-invoicesList invoices for customer{"customerId":"cus_abc","status":"paid"}

Webhook & Debugging:

ToolDescriptionExample
list-webhook-eventsQuery Stripe events{"type":"payment_intent.succeeded","limit":20}
webhook-healthCheck webhook processing{"hours":24}

Financial Tools:

ToolDescriptionExample
get-balanceGet account balance{}
list-disputesList chargebacks{"limit":10}

Testing Tools:

ToolDescriptionExample
create-test-customerCreate test customer (test mode){"email":"test@example.com","addTestPaymentMethod":true}
get-config-statusCheck Stripe config{}

PostgREST Filter Syntax

The filter parameter uses PostgREST syntax:

OperatorMeaningExample
eqEqualsstatus=eq.active
neqNot equalsstatus=neq.cancelled
gtGreater thanprice=gt.100000
gteGreater than or equalprice=gte.100000
ltLess thanprice=lt.500000
lteLess than or equalprice=lte.500000
likePattern matchname=like.*John*
ilikeCase-insensitive patternname=ilike.*john*
inIn liststatus=in.(active,pending)
isIs null/true/falsedeleted_at=is.null

Multiple filters: Use & to combine: status=eq.active&agent_id=eq.abc-123

CLI Commands Reference

# Discovery
npm run mcp:list                     # List servers
npm run mcp -- list-tools supabase   # List tools
npm run mcp -- describe supabase query-table  # Tool details
npm run mcp:search "database"        # Search tools

# Execution
npm run mcp -- run <server> <tool> '<json>'

# Execution Flags
npm run mcp -- run supabase list-users '{}' --quiet  # Data only, no metadata wrapper
npm run mcp -- run supabase run-sql --input-file query.json  # Read JSON from file (Windows-friendly)

# Convenience Shortcuts
npm run mcp:count transactions       # Quick row count for any table
npm run mcp:users                    # List users (formatted)
npm run mcp:users -- --json          # List users (raw JSON)

# Maintenance
npm run mcp:registry                 # Regenerate after adding tools

CLI Flags

FlagDescriptionExample
--quiet, -qOutput data only (no metadata wrapper)--quiet
--input-file, -fRead JSON input from file--input-file input.json

Use --quiet for scripting:

# Get just the data, no wrapper
npm run mcp -- run supabase list-users '{}' --quiet

Use --input-file for Windows or complex JSON:

# Create input file
echo '{"query": "SELECT * FROM profiles LIMIT 5"}' > query.json

# Run with file input
npm run mcp -- run supabase run-sql --input-file query.json

Tool Discovery Pattern

# 1. Find relevant tools
npm run mcp:search "query"

# 2. Get tool details and input schema
npm run mcp -- describe supabase query-table

# 3. Execute with JSON input
npm run mcp -- run supabase query-table '{"table":"profiles"}'

Error Handling

All tools return structured results:

{
  "success": true,
  "data": [...],
  "metadata": {
    "tool": "query-table",
    "server": "supabase",
    "executionTimeMs": 150,
    "executionType": "api"
  }
}

Error response:

{
  "success": false,
  "error": {
    "code": "HTTP_400",
    "message": "HTTP 400: Bad Request",
    "details": {
      "hint": "Perhaps you meant to reference the column..."
    }
  }
}

Environment Variables

API tools use credentials from .env:

# PostgREST and Storage API
VITE_SUPABASE_URL=https://xxx.supabase.co
VITE_SUPABASE_ANON_KEY=eyJ...
VITE_SUPABASE_SERVICE_ROLE_KEY=eyJ...

# Management API (required for run-sql)
SUPABASE_ACCESS_TOKEN=sbp_xxx...

# Stripe API (required for stripe tools)
STRIPE_SECRET_KEY=sk_test_xxx...  # or sk_live_... for production
STRIPE_WEBHOOK_SECRET=whsec_xxx...

Get Supabase access token from: Supabase Dashboard > Account > Access Tokens Get Stripe keys from: Stripe Dashboard > Developers > API keys

Creating New Tools

See ADDING-TOOLS.md for step-by-step guide.

Quick steps:

  1. Add types to scripts/mcp/types/<server>.types.ts
  2. Create wrapper at scripts/mcp/servers/<server>/<tool-name>.ts
  3. Export from scripts/mcp/servers/<server>/index.ts
  4. Run npm run mcp:registry

See Also

Score

Total Score

50/100

Based on repository quality metrics

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

0/10
説明文

100文字以上の説明がある

0/10
人気

GitHub Stars 100以上

0/15
最近の活動

3ヶ月以内に更新がある

0/10
フォーク

10回以上フォークされている

0/5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

+5
タグ

1つ以上のタグが設定されている

0/5

Reviews

💬

Reviews coming soon