> For the complete documentation index, see [llms.txt](https://guides.noloco.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://guides.noloco.io/settings/mcp-integration.md).

# MCP Integration

Connect AI agents like Claude, Cursor, and Windsurf to your Noloco app data using the Model Context Protocol (MCP)

{% hint style="info" %}
**New to MCP?** Start with [Connect your own AI agent](/quickstart/connect-an-ai-agent.md) — it walks through both the app-data MCP and the guides MCP together.
{% endhint %}

The Noloco MCP (Model Context Protocol) server lets AI assistants list your tables, read records, and create, update, or delete entries through natural language.

One MCP URL covers every Noloco app where you're a data admin:

```
https://api.core.noloco.io/mcp
```

There's no API key and no per-app URL. The first time a client calls the server, a browser window opens for you to sign in and pick which apps the client can access and whether it gets read or read + write on each.

<figure><img src="https://319575345-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MifpIQWu0HCVYAt51oT%2Fuploads%2Fgit-blob-a53a1d7561cce3c2b5f04aaa10e31b8b94e853ad%2Fmcp-oauth-consent.png?alt=media" alt="" width="375"><figcaption><p>The Noloco consent screen — pick which apps the client can use, and whether it gets read or write on each.</p></figcaption></figure>

{% hint style="warning" %}
A connected client acts with your data admin role on every app you approve. It can read and modify all records in those apps regardless of row-level permissions. Only approve clients you trust.
{% endhint %}

### Connecting an AI Client

The Noloco MCP server uses [Streamable HTTP transport](https://modelcontextprotocol.io/specification/2025-03-26/basic/transports#streamable-http) with OAuth, which all major MCP clients support. Pick your client:

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Claude Desktop</strong></td><td>One-click connector link</td><td><a href="https://319575345-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MifpIQWu0HCVYAt51oT%2Fuploads%2Fgit-blob-c3ff010be2e67e022cc2250be06027150fedaa03%2Fmcp-client-claude.svg?alt=media">mcp-client-claude.svg</a></td><td><a href="#claude-desktop">#claude-desktop</a></td></tr><tr><td><strong>Claude Code</strong></td><td>A single CLI command</td><td><a href="https://319575345-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MifpIQWu0HCVYAt51oT%2Fuploads%2Fgit-blob-c3ff010be2e67e022cc2250be06027150fedaa03%2Fmcp-client-claude.svg?alt=media">mcp-client-claude.svg</a></td><td><a href="#claude-code">#claude-code</a></td></tr><tr><td><strong>Cursor &#x26; Windsurf</strong></td><td>Paste one JSON block</td><td><a href="https://319575345-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MifpIQWu0HCVYAt51oT%2Fuploads%2Fgit-blob-8165d6d9e564c0f960d6154cb5ec7cc101a971c9%2Fmcp-client-cursor-windsurf.svg?alt=media">mcp-client-cursor-windsurf.svg</a></td><td><a href="#cursor-and-windsurf">#cursor-and-windsurf</a></td></tr><tr><td><strong>ChatGPT</strong></td><td>Turn on developer mode, then create a plugin</td><td><a href="https://319575345-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MifpIQWu0HCVYAt51oT%2Fuploads%2Fgit-blob-cee3918fdf3f5605514792b80a34b32a4dacf9ef%2Fmcp-client-chatgpt.svg?alt=media">mcp-client-chatgpt.svg</a></td><td><a href="#chatgpt">#chatgpt</a></td></tr><tr><td><strong>Other MCP clients</strong></td><td>Anything supporting OAuth over Streamable HTTP</td><td><a href="https://319575345-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MifpIQWu0HCVYAt51oT%2Fuploads%2Fgit-blob-f6f61a1301810b5f4f06158cdb245dc72edf1888%2Fmcp-client-mcp.svg?alt=media">mcp-client-mcp.svg</a></td><td><a href="#other-mcp-clients">#other-mcp-clients</a></td></tr></tbody></table>

#### Claude Desktop

The quickest route is one click: [**Add Noloco to Claude**](https://claude.ai/directory/noloco). That link opens the Noloco connector in Claude's directory — click **Connect**, and the Noloco consent screen opens in your browser.

You can also find it from **Settings → Connectors**: browse the directory, search for **Noloco**, and click **Connect**.

{% hint style="info" %}
If your organization restricts the connector directory, you can still add Noloco as a custom connector: click **Add custom connector**, enter a name (e.g. `Noloco`) and `https://api.core.noloco.io/mcp` as the remote MCP server URL, then click **Add**. Free Claude plans are limited to **one** custom connector.
{% endhint %}

#### Claude Code

Run:

```bash
claude mcp add --transport http noloco https://api.core.noloco.io/mcp
```

The next time you start a session, Claude Code opens the consent screen in your browser.

#### Cursor & Windsurf

Open the MCP settings panel and add:

```json
{
  "mcpServers": {
    "noloco": {
      "url": "https://api.core.noloco.io/mcp"
    }
  }
}
```

The first tool call opens the consent screen.

#### ChatGPT

ChatGPT has no one-click link, so there are three short steps: check your plan, turn on developer mode, then create the plugin.

**1. Check your plan**

Custom MCP plugins need a **Plus, Pro, Business, Enterprise, or Education** plan, and you have to set them up in the ChatGPT **web app** — the mobile apps can't create them. Once created, the plugin works everywhere you use ChatGPT.

**2. Turn on developer mode**

In the ChatGPT web app, go to **Settings → Apps → Advanced settings** and switch on **Developer mode**.

{% hint style="info" %}
**On a Business or Enterprise workspace?** If you don't see the Developer mode toggle, an admin has to allow it first in **Workspace Settings → Permissions & Roles → Connected Data → Create custom MCP connectors**.
{% endhint %}

**3. Create the plugin**

Developer mode adds the option to create your own plugin. You're in the right place when the dialog is titled **New Plugin**. Fill it in like this:

<table><thead><tr><th width="170">Field</th><th>What to enter</th></tr></thead><tbody><tr><td><strong>Icon</strong></td><td>Optional — skip it. PNG only, 256 × 256 px or larger, max 10 KB.</td></tr><tr><td><strong>Name</strong></td><td><code>Noloco</code></td></tr><tr><td><strong>Description</strong></td><td><code>Access to my Noloco app data. Use this to list my Noloco projects and their tables, read table schemas, and read, create, update, or delete records in those tables.</code></td></tr><tr><td><strong>Connection</strong></td><td>Leave it on <strong>Server URL</strong> — not Tunnel — and enter <code>https://api.core.noloco.io/mcp</code>, including the <code>/mcp</code> path</td></tr><tr><td><strong>Authentication</strong></td><td><strong>OAuth</strong></td></tr></tbody></table>

Although the **Description** is marked optional, it's worth filling in. ChatGPT reads it when deciding whether a question calls for Noloco, so a vague one means the model skips the plugin when you wanted it. Feel free to make it more specific to your own apps, for example by naming the tables you query most.

You can leave **Advanced OAuth settings** alone. ChatGPT discovers our OAuth details from the server URL and registers itself through dynamic client registration, so there's no client ID or secret to paste — open that panel and you'll see the discovered settings already filled in.

Save the plugin. The first time you use it, the Noloco consent screen opens for you to sign in and pick which apps ChatGPT can access.

{% hint style="warning" %}
ChatGPT will warn you that custom plugins aren't developed or verified by OpenAI. That's expected for any custom MCP server, including this one — the warning is about who built it, not about whether this URL is safe. Check that the server URL reads exactly `https://api.core.noloco.io/mcp` before you approve it.
{% endhint %}

#### Other MCP Clients

Any client that supports OAuth over Streamable HTTP can connect. Point it at `https://api.core.noloco.io/mcp` — no header, no key. The client handles the OAuth flow on first connection.

### Available Tools

Every data tool takes a `projectName` argument. The agent calls `list_projects` first to discover which apps it can see, then passes the right project name on each call.

| Tool               | What it does                                                                                               |
| ------------------ | ---------------------------------------------------------------------------------------------------------- |
| `list_projects`    | Lists every Noloco app you approved for this client, with the scope (read or read + write) granted on each |
| `list_tables`      | Lists tables in an app                                                                                     |
| `get_table_schema` | Returns a table's field types, options, and relationships                                                  |
| `list_records`     | Fetches records with optional filtering, sorting, and pagination                                           |
| `get_record`       | Fetches a single record by ID                                                                              |
| `create_record`    | Creates a record                                                                                           |
| `update_record`    | Updates a record by ID                                                                                     |
| `delete_record`    | Deletes a record by ID                                                                                     |

### Security and Access Management

* **OAuth, not API keys.** No long-lived secret is stored in the client config.
* **Per-app role check on every call.** If you lose data admin access on an app, the next call from any connected client is rejected — no token reissue needed.
* **Per-client revocation.** Each client has its own OAuth token; revoking one doesn't affect the others.
* **Scope chosen at sign-in.** Pick read-only or read + write per app on the consent screen. Re-run the flow any time to change either.
* **HTTPS only.**

### FAQ

{% content-ref url="/pages/RcBhKRljI9jgmDkTf9Pm" %}
[MCP FAQ](/settings/mcp-integration/mcp-faq.md)
{% endcontent-ref %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://guides.noloco.io/settings/mcp-integration.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
