Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions .dev.vars.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Copy this file to `.dev.vars` for local development with `wrangler dev`.
# Values here are used by the Worker only. Your container/app reads its own env from Docker or Cloudflare variables.

# The local upstream the Worker proxies to during `wrangler dev`.
LOCAL_UPSTREAM="http://127.0.0.1:3001"

# Optional: If you want to run the app locally without Docker, you can export these and run `npm run start`.
# The app requires a PROJECT_ID and a SIGNING_KEY (or SIGNING_KEY_PATH). The SIGNING_KEY here is a dummy key suitable
# only for local testing and will not authenticate against Paragon's APIs.
PROJECT_ID="local-dev"
PORT="3001"
MCP_SERVER_URL="http://127.0.0.1:8787"

# A dummy RSA private key for local signing only. Replace with a real key for actual calls.
# Keep the literal \n sequences. The server code converts them to newlines at runtime.
SIGNING_KEY="-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC8gYz8rU7w3H59\n2Y7yigBq9y8W4b7kHIkYQ8d3g2bupL5zv1h6mRFi3kq8rZJ0p0tG8m9x0k5Jf2aK\nX6H4V8j5n4Xw2lV/Se6tFf6l0pGv6s1mJ8sY2Jq7nOyiZ4x3h1fR0Jj5bqlqQ9yQ\nW6Bqzq8y1d6mA7kJ7p3s4bLQbq1WBd7WqO4z+oQ7iKq7Rxo3n5bH6mIEtCVF3jZj\nZQZp7s7d4o5wE0g5y2c4O2VfHpWua1H0h6k9cZlqfM9m1t1n7y8o3m1K6RkE6z1q\n1uY6Hn1ZqXv9tVJYtG3o5r4tWqZb7gQkjPn7JdGxQv4h7JQqx3nYz0B1i7mXAgMB\nAAECggEAHk9uZt3m+9kQmH8u3KQ1jU2qK8sCzKzJc8tYkZk3qF6vQv1D8nK5o4QZ\nKhSx2C7h1M4lYxF9gVwglb9j9fTjFQH+Z1WZtXzowfTLhQq8g5R6p7Q6r2qH9m4V\n5YDr3hE2y7v7l2sT4J3k8k/w3z9HrYV8v8cJZ7jRFo7IYkz2b6a1LQF9a2Dk5S8n\n8i8mQ3p1nM8qf8j7G2w3V6V4j7B4c1m2m8H5P0q9s7Z4y8B6l1H3j2l4y7Z6v5nJ\nQ1mJz9nK5l0h2g4f5h6j7k8l9m0n1o2p3q4r5s6t7u8v9w0x1y2z3A==\n-----END PRIVATE KEY-----"
55 changes: 20 additions & 35 deletions .env.example
Original file line number Diff line number Diff line change
@@ -1,38 +1,23 @@
# Your project id from your paragon account;
PROJECT_ID=""
# Example environment for local development
# Copy this file to `.env` for local runs or let Docker Compose read it as variable sources.

# The signing key to authenticate your account.
# Either SIGNING_KEY or SIGNING_KEY_PATH needs to be set
# SIGNING_KEY is the signing key as a string with "\n" for newlines
# SIGNING_KEY_PATH is the absolute path to the signing key file
SIGNING_KEY=""
SIGNING_KEY_PATH=""
PROJECT_ID=local-dev
PORT=3001
# Point to Wrangler dev URL so generated links go through the Worker
MCP_SERVER_URL=http://127.0.0.1:8787
NODE_ENV=development

# The url of where your MCP Server will be hosted
# This will be used to generate the magic links for your users
# And also to setup your AI agents
MCP_SERVER_URL=""
# Required: Either SIGNING_KEY or SIGNING_KEY_PATH must be provided
# Keep the literal \n sequences; the server replaces them at runtime
SIGNING_KEY=-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC8gYz8rU7w3H59\n2Y7yigBq9y8W4b7kHIkYQ8d3g2bupL5zv1h6mRFi3kq8rZJ0p0tG8m9x0k5Jf2aK\nX6H4V8j5n4Xw2lV/Se6tFf6l0pGv6s1mJ8sY2Jq7nOyiZ4x3h1fR0Jj5bqlqQ9yQ\nW6Bqzq8y1d6mA7kJ7p3s4bLQbq1WBd7WqO4z+oQ7iKq7Rxo3n5bH6mIEtCVF3jZj\nZQZp7s7d4o5wE0g5y2c4O2VfHpWua1H0h6k9cZlqfM9m1t1n7y8o3m1K6RkE6z1q\n1uY6Hn1ZqXv9tVJYtG3o5r4tWqZb7gQkjPn7JdGxQv4h7JQqx3nYz0B1i7mXAgMB\nAAECggEAHk9uZt3m+9kQmH8u3KQ1jU2qK8sCzKzJc8tYkZk3qF6vQv1D8nK5o4QZ\nKhSx2C7h1M4lYxF9gVwglb9j9fTjFQH+Z1WZtXzowfTLhQq8g5R6p7Q6r2qH9m4V\n5YDr3hE2y7v7l2sT4J3k8k/w3z9HrYV8v8cJZ7jRFo7IYkz2b6a1LQF9a2Dk5S8n\n8i8mQ3p1nM8qf8j7G2w3V6V4j7B4c1m2m8H5P0q9s7Z4y8B6l1H3j2l4y7Z6v5nJ\nQ1mJz9nK5l0h2g4f5h6j7k8l9m0n1o2p3q4r5s6t7u8v9w0x1y2z3A==\n-----END PRIVATE KEY-----

# The node environment: "development" or "production" - use "development" to enable logs;
NODE_ENV="production"

# Optional features:
ENABLE_CUSTOM_OPENAPI_ACTIONS=false
ENABLE_PROXY_API_TOOL=false
ENABLE_CUSTOM_TOOL=false

# Uncomment and update if using an on-premise Paragon instance
# ACTIONKIT_BASE_URL="https://worker-actionkit.your-paragon-instance.url"
# CONNECT_SDK_CDN_URL="https://connect.your-paragon-instance.url/ui/scripts/sdk.js"
# ZEUS_BASE_URL="https://zeus.your-paragon-instance.url"
# PROXY_BASE_URL="http://worker-proxy.your-paragon-instance.url"

# Uncomment for internal development:
# ACTIONKIT_BASE_URL="http://localhost:1721"
# CONNECT_SDK_CDN_URL="http://localhost:4060/ui/scripts/sdk.js"
# ZEUS_BASE_URL="http://localhost:4010"
# PROXY_BASE_URL="http://localhost:1715"

# Uncomment to limit available tools to specific integrations and/or specific tools
# LIMIT_TO_INTEGRATIONS=hubspot,salesforce,custom.spotify
# LIMIT_TO_TOOLS=SLACK_SEND_MESSAGE,GOOGLE_DRIVE_LIST_FILES
# Optional overrides (default values are fine for local dev)
# CONNECT_SDK_CDN_URL=https://cdn.useparagon.com/latest/sdk/index.js
# ACTIONKIT_BASE_URL=https://actionkit.useparagon.com
# ZEUS_BASE_URL=https://zeus.useparagon.com
# PROXY_BASE_URL=https://proxy.useparagon.com
# ENABLE_CUSTOM_OPENAPI_ACTIONS=false
# ENABLE_PROXY_API_TOOL=false
# ENABLE_CUSTOM_TOOL=false
# LIMIT_TO_INTEGRATIONS=
# LIMIT_TO_TOOLS=
1 change: 1 addition & 0 deletions .github/workflows/cloudflare-deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -138,4 +138,6 @@ dist
# MCP
.cursor/
.idea/
.vscode/
.vscode/
# Wrangler local vars
.dev.vars
21 changes: 21 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,27 @@ npm run start

The server will start on `http://localhost:3001` by default.

## Cloudflare Containers (Dockerfile) Deployment

This repo is configured to deploy via Cloudflare Containers using the root `Dockerfile` and a small Worker shim in `worker/`.

- Local dev
- Start the app locally (Docker or Node):
- Docker: `docker compose up --build` (exposes `http://localhost:3001`)
- Node: `npm run start` (ensure `.env` variables are set)
- Copy `.dev.vars.example` to `.dev.vars` and adjust if needed
- Run: `npx wrangler dev` and open the printed URL (default 8787)

- Deploy (after filling Cloudflare creds)
- Fill `account_id` in `wrangler.toml`
- Auth: `npx wrangler login`
- Deploy: `npx wrangler deploy`

Notes:
- The Worker uses `@cloudflare/containers` to route to your Dockerfile-backed container in production.
- In `wrangler dev`, the Worker proxies to `LOCAL_UPSTREAM` (defaults to `http://127.0.0.1:3001`).
- Set secrets with `npx wrangler secret put NAME`.

## Client Configuration

> **Note:** Cursor's MCP implementation is a very new protocol and is still in active development. You might encounter unexpected issues. When making changes to the MCP server URL, a full client restart is recommended. For more information about current limitations, see the [Cursor MCP documentation](https://docs.cursor.com/context/model-context-protocol#limitations).
Expand Down
Loading