MCP connector

Vinssi serves a remote MCP server at https://vinssi.ai/mcp. Add that URL as a custom connector. The server speaks Streamable HTTP. Sign-in is OAuth through Clerk at https://clerk.vinssi.ai. This page is also in Finnish.

The connector acts as you, in your workspace. It can read the workspace, list and create projects, connect a GitHub repository, deploy, read deployment status and build logs, roll back a healthy deployment, and publish or delete Vinssi Pages. It does not expose secret-management tools. Build logs redact known environment values and recognizable credentials before returning bounded output. Avoid writing secrets to application logs. It does not start checkout. If a project needs a plan, the tool says so and links to vinssi.ai/pricing.

Repository deploys are GitHub only. The Vinssi GitHub App has to be installed and allowed to see the repository. connect_repo takes owner/name. A repository on another host cannot be connected.

Add the connector

Use https://vinssi.ai/mcp as the server URL. When the client opens a browser, sign in to Vinssi and approve the request.

Claude

In Claude, open Settings, then Connectors, and add a custom connector. Paste https://vinssi.ai/mcp. Claude's redirect URL is https://claude.ai/api/mcp/auth_callback. Claude Code also uses a loopback redirect on http://localhost or http://127.0.0.1 at any port, path /callback.

ChatGPT

In ChatGPT, turn on developer mode for apps if the account requires it, then add a connector by URL. Paste https://vinssi.ai/mcp. The redirect URL ChatGPT shows for this flow is https://chatgpt.com/connector_platform_oauth_redirect. A review submission may also show https://chatgpt.com/connector/oauth/{callback_id} from the OpenAI dashboard. That callback id is specific to the submission.

Cursor

In Cursor, open Settings, then MCP, and add a server by URL. Paste https://vinssi.ai/mcp. The same URL works in an MCP config file:

{
  "mcpServers": {
    "vinssi": {
      "url": "https://vinssi.ai/mcp"
    }
  }
}

Cursor opens a browser for OAuth. A client that can only send a header can use a personal API token instead. See API and tokens.

Grok Bot

In Grok Bot, add a custom MCP connector and paste https://vinssi.ai/mcp. If the form asks for a server URL rather than a plugin repository, that address is the server.

Tools

ToolWhat it does
get_workspaceWorkspace name and remaining credit, in euro cents
list_projects, get_projectProjects, status, GitHub repository, live URL
create_projectCreates an empty project. It does not deploy
connect_repoConnects owner/name from the GitHub App. Replaces an existing connection
deployQueues a deployment of the connected GitHub repository. Optional git ref
get_deployment, get_build_logs, list_deploymentsStatus, the latest build log lines, recent deployments
rollbackQueues a new deployment that restores a previous healthy one
publish_pagePublishes files sent in the request and returns the live URL
list_pages, delete_pageLists sites, or deletes one

publish_page takes files, each with path and content. encoding is utf8 (the default) or base64. The limit is 200 files and 5 MB of decoded content. A single HTML file is stored as index.html. Multiple files require index.html at the root; invalid input is rejected before a site is created. name is required for a new site. Pass siteId to replace what that URL serves. The previous version stays stored.

get_build_logs returns the last 200 lines unless you set tail. The maximum is 400 lines and about 64 KB of log data. Oversized individual messages are omitted. truncated indicates omitted output.

Limits

Limits are per workspace and shared with the dashboard, the CLI, and direct API calls.

ActionLimit
Deploy and rollback20 per 5 minutes
Page publish60 per 5 minutes

Try it locally

Run the API from the repo (bun run dev starts it on port 3000) and open MCP Inspector:

npx @modelcontextprotocol/inspector

Connect to http://localhost:3000/mcp. For a bearer token, create one with vinssi tokens create and send Authorization: Bearer vinssi_.... OAuth from Inspector uses the protected-resource metadata at http://localhost:3000/.well-known/oauth-protected-resource/mcp. That document points at the Clerk instance for this environment. A browser sign-in needs the client registered through CIMD, DCR, or manual registration, and the redirect URL Inspector prints. Use CIMD first; enable DCR for clients that require it. OAuth clients must be granted the custom vinssi:mcp scope in Clerk. Advertise that scope and assign it to the client; for dynamic clients that omit scopes, configure it as a default alongside offline_access. Until this configuration and the sign-in flow are verified, use a personal API token. Create that token in your own terminal and enter it privately in Inspector, never in an AI conversation.

A request with no token gets 401 and a WWW-Authenticate header that points at the metadata URL.

Authorization

OAuth access tokens need the resource-specific vinssi:mcp permission. Generic identity scopes such as openid and profile do not authorize MCP tools. Session and ID tokens are rejected. Missing or invalid tokens return 401; a valid OAuth token without the required permission returns 403 with an insufficient-scope challenge. A JWT access token with an explicit audience must name this MCP URL. Each request is authorized separately against your workspace.