# Connect your AI client to Barvinca

[← All Documentation](/help.md)

Remote MCP connector



Use Barvinca's hosted MCP server to inspect ACC administration data and prepare approval-bound bulk user operations. The connection uses OAuth; do not paste Autodesk tokens, APS credentials, or a Client Secret into your AI client.

`https://mcp.barvinca.com/mcp`

## Before you connect

1.  Sign in to Barvinca with Autodesk.
2.  Ask an ACC account administrator to authorize Barvinca's managed APS app in Autodesk Custom Integrations.
3.  Confirm the connection on the Barvinca dashboard or Settings page.

## What you do not configure

-   No personal APS application.
-   No APS Client ID or Client Secret.
-   No Autodesk access or refresh token.
-   No static bearer token, API key, or custom authorization header.

## Client compatibility

| Client | Status | Setup | OAuth and reconnect |
| --- | --- | --- | --- |
| **Claude web and Desktop** | Production verified | Remote custom connector in Claude account settings. | DCR, PKCE, consent, refresh, disconnect, and reconnect supported. Claude Desktop was verified against production. |
| **Codex Desktop, CLI, and IDE** | Official plugin | Install `barvinca@barvinca` once from the public Barvinca marketplace. | The plugin supplies the hosted endpoint and OAuth resource. Discovery, DCR, PKCE, consent, refresh, logout, and reconnect are supported. |
| **ChatGPT web** | Evaluation only | Custom app in developer mode for eligible Business, Enterprise, and Edu workspaces. | Barvinca issues refresh tokens but does not yet advertise `offline_access`. ChatGPT may require reauthentication after the original authorization expires. |
| **Cursor** | CLI production verified | Remote Streamable HTTP server in `.cursor/mcp.json` or global MCP settings. | Cursor Agent CLI completed production OAuth, catalog discovery, local disconnect, and reconnect. The desktop UI uses the same configuration but was not independently canaried. |

“Supported” means the client documents the required remote MCP and OAuth features; only rows marked “Production verified” have completed Barvinca's end-to-end login in that client. Claims are reviewed when client behavior or canary evidence changes.

## Claude web and Claude Desktop

1.  **Individual plans:** open **Customize > Connectors**, click **+**, then choose **Add custom connector**.
2.  **Team and Enterprise owners:** open **Organization settings > Connectors**, click **Add**, then choose **Custom > Web**. Members connect the owner-provisioned connector from **Customize > Connectors**.
3.  Name the connector **Barvinca**, paste the endpoint above, and leave Advanced OAuth Client ID/Secret fields empty.
4.  Choose **Connect**. Sign in to Barvinca if prompted, inspect the requested permissions, and approve the OAuth consent page.
5.  In a conversation, use **\+ > Connectors** to enable Barvinca and only the tools needed for that task.

Remote connectors are added from Settings, including in Claude Desktop. Do not put this hosted server into `claude_desktop_config.json`; that file is for locally launched servers.

## Codex Desktop, CLI, and IDE

Install the official Barvinca plugin from its public GitHub marketplace. The marketplace and plugin are global to your local Codex user profile on that machine, not tied to the project open in Codex:

```bash
codex plugin marketplace add dmytro-yemelianov/barvinca-codex-plugin
codex plugin add barvinca@barvinca
```

Restart Codex Desktop after installation, open **Plugins**, select **Barvinca**, and authenticate when prompted. The plugin packages Barvinca's icon, hosted endpoint, and explicit OAuth resource identifier.

Manual fallback: if plugins are unavailable in your Codex build, add the server with `codex mcp add barvinca --url https://mcp.barvinca.com/mcp --oauth-resource https://mcp.barvinca.com/mcp`. The `--oauth-resource` value prevents Codex from resuming an expired or mismatched browser authorization flow.

Start read-only. Only if you need mutation preflights, explicitly replace the read-only grant with a read/write grant:

```bash
codex mcp logout barvinca
codex mcp login barvinca --scopes barvinca.read,barvinca.write
```

Live ACC Issues, RFIs, Assets, Submittals, and Forms reads are separately consented. Reconnect with only the domains you want:

```bash
codex mcp logout barvinca
codex mcp login barvinca --scopes barvinca.read,barvinca.issues.read,barvinca.rfis.read,barvinca.assets.read,barvinca.submittals.read,barvinca.forms.read
```

These live Autodesk reads are still read-only and use your signed-in Autodesk identity through Barvinca's managed integration. They never charge, grant, or refresh CREDS.

To return to read-only access, logout again and reconnect with only `barvinca.read`.

Use `codex mcp remove barvinca` only when you also want to delete the saved server configuration.

## ChatGPT web

1.  Use an eligible Business, Enterprise, or Edu workspace. A workspace administrator must enable developer mode.
2.  Open **Workspace settings > Apps > Create**, or **Settings > Apps > Create** if your administrator authorized developer access.
3.  Enter the Barvinca endpoint, choose OAuth, then select **Scan Tools**.
4.  Complete Barvinca sign-in and consent, wait for the tool scan, then create the draft app.
5.  Open a new chat, select the draft Barvinca app, and confirm write actions when ChatGPT asks.

**Current limitation:** this path is evaluation-only. ChatGPT's OAuth guidance expects refresh access to be advertised as `offline_access`. Barvinca currently advertises and issues the `refresh_token` grant but does not advertise that scope, so ChatGPT may ask you to authenticate again. ChatGPT MCP apps are web-only and workspace-admin controlled.

## Cursor

Add this server to a project-level `.cursor/mcp.json` or to your global Cursor MCP configuration:

```json
{
  "mcpServers": {
    "barvinca": {
      "url": "https://mcp.barvinca.com/mcp"
    }
  }
}
```

Open **Cursor Settings > Tools & MCP**, enable Barvinca, and complete the browser authorization prompt. Cursor Agent CLI users can verify the same project configuration with `cursor-agent mcp login barvinca`, `cursor-agent mcp list`, and `cursor-agent mcp list-tools barvinca`.

`cursor-agent mcp disable barvinca` is a local disconnect, not OAuth revocation. The current CLI has no logout command. To revoke the active Barvinca session grant, sign out of Barvinca, disable the connector, then start a fresh login when reconnecting.

## OAuth connection lifecycle

| Stage | What happens | If it fails |
| --- | --- | --- |
| **1\. Discovery** | The client reads protected-resource metadata from `mcp.barvinca.com`, then discovers Barvinca's authorization server. | Confirm the endpoint is exact and the client supports remote Streamable HTTP MCP. |
| **2\. Client registration** | The client uses Dynamic Client Registration. No manually created OAuth client, Client ID, or Client Secret is needed. | Remove manually entered OAuth credentials and add the server again. |
| **3\. Authorization with PKCE** | The client creates a one-time S256 PKCE challenge and opens Barvinca's authorization page. | Restart connection from the client; never reuse an old authorization URL. |
| **4\. Consent** | Your signed-in Barvinca session selects one ACC account. Review `barvinca.read`, any requested ACC domain scopes, and `barvinca.write` only when mutations are needed. | If state expired, close the old tab and restart connection so the client generates fresh state. |
| **5\. Tokens** | The client exchanges the one-time code for a one-hour access token and a refresh token. Tokens contain Barvinca grant data, never Autodesk credentials. | If exchange fails, reconnect rather than pasting tokens into client settings. |
| **6\. Refresh** | A compatible client refreshes access until the refresh grant or underlying Barvinca session lease expires. | Sign in to Barvinca again and reconnect. |
| **7\. Disconnect and revoke** | Disconnect or logout in the client. Signing out of Barvinca also invalidates the server-side MCP session lease. | Remove the saved connector and add it again if the client retains stale state. |
| **8\. Reconnect** | The client repeats discovery, PKCE, and consent with new state. A read-only grant is never silently upgraded to write. | Request the needed scopes and approve the new consent screen. |

## Transport and tenant security

| Boundary | What Barvinca enforces |
| --- | --- |
| **Encrypted transport** | HTTP redirects to HTTPS. Cloudflare's edge requires TLS 1.2 or newer, supports TLS 1.3, and adds HSTS, no-store, and browser security headers. |
| **OAuth audience** | Every grant is bound to the exact `https://mcp.barvinca.com/mcp` resource, registered OAuth client, signed-in Barvinca user, and selected ACC account. |
| **Request boundary** | Barvinca validates the Origin when a client supplies one, limits requests to 1 MiB, and applies separate edge, token, and OAuth rate limits. Native clients that do not send an Origin remain supported. |
| **Private backend** | The public MCP Worker reaches the Barvinca platform through a private Cloudflare service binding. The platform rechecks the session, grant, scope, account, and project before resolving encrypted Autodesk credentials; those credentials are never passed to the AI client. |

**One-time reconnect after the July 26, 2026 security upgrade:** legacy grants without exact resource and client binding are rejected. If your client reports `invalid_grant` or `Grant not found`, disconnect or log out, then add or connect Barvinca again. Do not reuse the old browser approval URL.

## Evidence captures and exports

`barvinca_domain_evidence` captures one sanitized page of Issues, RFIs, Assets, Submittals, Forms, or form templates. The result includes capture time, Autodesk API family, pagination, and a canonical SHA-256 digest so an agent can preserve exactly what it inspected.

`barvinca_domain_export` writes that same bounded evidence page as JSON or formula-safe CSV to private Barvinca storage. Its download URL works only in a browser with the same signed-in Barvinca user and account; another user or account receives a not-found response.

Each capture contains at most 50 records. If `hasMore` is true, preserve the first artifact and repeat with `nextCursor`. Full-project file archives are not performed by these synchronous tools.

## Permissions and safe writes

### barvinca.read

Required for connection status, cached ACC account/project/member reads, operation history, evidence, exports, and recovery status.

### barvinca.issues.read

Required for live, read-only `barvinca_issue_list` and `barvinca_issue_get` calls. Project ownership is checked before Barvinca resolves your encrypted Autodesk session token.

### barvinca.rfis.read

Required for live, read-only `barvinca_rfi_list` and `barvinca_rfi_get` calls. It does not grant Issue access or any mutation permission.

### barvinca.assets.read

Required for live, read-only `barvinca_asset_list` and `barvinca_asset_get` calls. Asset custom attributes are excluded from hosted MCP output.

### barvinca.submittals.read

Required for live, read-only `barvinca_submittal_list` and `barvinca_submittal_get` calls. Only bounded operational metadata is returned.

### barvinca.forms.read

Required for live, read-only `barvinca_form_list` and `barvinca_form_template_list` calls. ACC Forms includes checklist-style workflows; field values and template definitions are excluded.

Each live-domain scope also gates that domain when selected in `barvinca_domain_evidence` or `barvinca_domain_export`. Evidence storage is private, does not grant access to a different domain, and never consumes CREDS.

### barvinca.write

Required for preflight, execution, cancellation, retry preparation, and rollback preparation. A read-only grant is never silently upgraded: reconnect and explicitly approve write access when your client requests it.

Write access does not allow an agent to bypass review. Barvinca first creates a bounded preflight, then requires the exact unexpired approval digest to execute. Retry and rollback create new preflights and require a new review.

## Unsupported configurations

-   Local-only MCP clients that cannot connect to a public Streamable HTTP endpoint.
-   Clients that require a static API key, bearer token, or manually provisioned OAuth Client Secret.
-   OAuth clients without authorization-server discovery, S256 PKCE, Dynamic Client Registration, and refresh-token support.
-   ChatGPT mobile for custom MCP apps. Use an eligible ChatGPT workspace on the web.
-   Customer-owned APS apps or Autodesk tokens. Barvinca uses its managed APS app after the ACC administrator approves the Custom Integration.

## Troubleshooting and revocation

-   **Sign-in loop:** sign in at barvinca.com in the same browser, then reconnect the connector.
-   **Consent state expired:** do not click the old URL again. Close it and restart connection from the AI client to generate fresh state and PKCE values.
-   **Custom Integration required:** an ACC account administrator must authorize Barvinca's managed app; return to Settings and verify it afterward.
-   **Insufficient scope:** disconnect and reconnect so the client can request the required scope and show a fresh consent screen.
-   **Expired session:** sign in to Barvinca again, then reconnect. The MCP token cannot outlive the underlying Barvinca session.
-   **Remove access:** disconnect Barvinca in the client's connector or MCP settings. Signing out of Barvinca revokes the active server-side MCP session lease.

[Sign in to Barvinca](/auth/login) [ACC Custom Integration guide](/setup.md) [Claude instructions](https://support.claude.com/en/articles/11175166-get-started-with-custom-connectors-using-remote-mcp) [Codex MCP instructions](https://learn.chatgpt.com/docs/extend/mcp?surface=cli) [ChatGPT developer mode](https://help.openai.com/en/articles/12584461) [Cursor MCP instructions](https://docs.cursor.com/context/model-context-protocol) [Privacy policy](/privacy.md) [Security](/security.md)

---

Canonical HTML: https://barvinca.com/help/mcp
