# Valsight MCP integration
URL: https://docs.valsight.ai/valsight-mcp-server/
Description: The Valsight MCP integration lets external AI agents connect to Valsight and work with your models over a standard, permission-scoped interface.
The **Valsight MCP integration** exposes your Valsight models to external AI agents over the **Model Context Protocol (MCP)**, an open standard for connecting AI clients to tools and data. It is the external-client counterpart to the [in-app Assistant](/using-the-ai-assistant/): instead of chatting inside Valsight, you connect your own AI client — such as Claude, ChatGPT, or Copilot — through the **MCP server**, and it both **explores and changes** your models on your behalf, always inside a session whose scope and permissions you control.

*Important: The Valsight MCP integration is a premium feature, available from Valsight 7.3.0.*

* **Free through 31 December 2026** — included for all customers at no additional cost. Connect your own AI client, work with your real models, and see what it adds.
* **A paid add-on from January 2027.**
* **Off by default** — it is opted into per instance and needs some setup.

To switch it on, or to talk through whether it fits your team, write to **<support@valsight.com>** or contact your Customer Success representative.

## What it is

The MCP server is a connection layer, not a screen inside Valsight. An external AI client connects to it, authenticates, and receives a set of **tools** it can call to work in a project on your behalf — reading model structure and metadata, and, when the session allows it, making changes.

Every connection runs as a **session** that is scoped and permissioned up front (see [Session scope and permissions](#session-scope-and-permissions)). Nothing the agent does escapes that session's boundaries.

## What you can do with it

A connected agent can, within the session's scope and permissions:

* **Explore models** — search across models, workspaces, data sources, and dimensions; inspect nodes, levels, and their usage; read formulas, functions, and entity definitions.
* **Read data** — fetch calculation results, line-item value tables, and dimension values (subject to the session's data-access setting).
* **Build and edit models** — create, update, duplicate, and delete entities; manage line-item levels; add dimension rows.
* **Work with charts** — create and update charts and their display configuration, including chart and perspective images.
* **Manage scenarios and workspaces** — select scenarios/workspaces, share and unshare scenarios, and export scenario versions and template nodes.
* **Handle data sources and ETL** — upload data, map data-source columns, import tables, and build and run ETL pipelines.
* **Run workflows** — list, configure, and manage multi-step workflows.
* **Analyze** — validate workspaces, models, and data sources, and inspect calculation performance.
* **Manage access** — explain access-rights breakdowns and grant or revoke access (only when the session is permitted to modify access rights).
* **Use the knowledge base** — search and read Valsight product documentation, and list and read guided skills.
* **Move data in and out** — download entities as Excel, and upload files into the session.

## Session scope and permissions

Each session is bounded on five independent axes, chosen when the client connects. This is the core safeguard: a session can only ever do what its axes allow.

| Axis                      | Options                           | Default  | What it controls                                                                                     |
| ------------------------- | --------------------------------- | -------- | ---------------------------------------------------------------------------------------------------- |
| **Project scope**         | one or more projects, or unscoped | unscoped | Which project space(s) the agent may touch. Every entity is checked against this scope.              |
| **Access level**          | `read_only`, `write`              | `write`  | Whether mutating tools are allowed at all. In `read_only`, change actions are refused.               |
| **Data access**           | `full`, `restricted`              | `full`   | Whether numeric values (calculation results, line-item values) are exposed. `restricted` hides them. |
| **Project deletion**      | allowed / blocked                 | allowed  | Whether whole project spaces may be deleted.                                                         |
| **Access-rights changes** | allowed / blocked                 | blocked  | Whether the agent may grant or revoke user/group access. Off by default.                             |

**Broadening access is not automatic.** An agent cannot silently raise its own permissions: expanding any axis requires your explicit confirmation (a form in the client, or a link to the session settings). Narrowing access takes effect immediately.

To fix the limits when connecting — for example a read-only session without numeric data — add them as parameters to the server address; see [Restrict the session from the start](/connect-ai-client-to-valsight-mcp/#restrict-the-session-from-the-start-optional).

## What it cannot access or do

* It cannot act outside the session's **project scope** — entities in other projects are refused.
* In **read-only** sessions it cannot create, update, or delete anything.
* In **data-restricted** sessions it cannot read or write numeric values, import table data, or inspect/run ETL for data.
* It cannot **change access rights** or **delete project spaces** unless those axes are explicitly enabled.
* It cannot reach **external systems** or use your **personal credentials** — it authenticates through its own token exchange.
* It cannot connect to an unrecognized Valsight instance — the target instance is validated before any secret is sent.

## Security and data flow

How a connection works, for IT and security reviews:

```
AI client  ──HTTPS──▶  Valsight MCP server  ──HTTPS──▶  your Valsight instance
(Claude, ChatGPT,       (operated by Valsight)          (with your user's
 Copilot, VS Code)                                        permissions)
```

* **Where your data goes:** the MCP server passes what the agent requests between your Valsight instance and your AI client. The MCP server itself does not run an AI model. Content the agent reads is processed by **your AI client and its model provider** (for example Anthropic, OpenAI, Microsoft, or GitHub), under your organization's agreement with that provider. Use `dataAccess=restricted` to keep numeric values out of the conversation entirely.
* **Sign-in:** OAuth 2.0 with PKCE. You sign in at **id.valsight.com**, Valsight's identity service, with your existing Valsight account (or your company's single sign-on, where configured). Clients register automatically; sign-in only completes for approved AI clients, whose redirect addresses are allow-listed on the server.
* **Your permissions, never more:** the server exchanges your sign-in for access to your instance as **your user**. The agent can see and do only what you can — narrowed further by the [session limits](#session-scope-and-permissions).
* **Tokens:** access tokens are short-lived and refresh automatically. The server keeps them encrypted and in memory only; ending a session revokes its tokens, and a server restart requires a fresh sign-in.
* **Session lifetime:** a session ends after a period of inactivity (two hours by default), when access is revoked, or when an administrator ends it. Your Valsight sign-in stays valid for **12 hours**, after which you sign in again.
* **Audit:** every tool call is logged per session, with the user who made it.

## Connecting an AI client

**Prerequisite:** the MCP server must be enabled for your Valsight instance (see the availability note at the top of this page).

Valsight supports **Claude** (claude.ai, Claude Desktop, Claude Code), **ChatGPT**, **GitHub Copilot** (in Visual Studio Code and the GitHub Copilot app), **Microsoft Copilot** (via Copilot Studio), and **Visual Studio Code**. All of them connect to the same per-instance server address and use the same sign-in.

1. **Add the server address to your client.** Each instance has its own address — there is no single, public endpoint. [Where to find your address](/connect-ai-client-to-valsight-mcp/#your-mcp-server-address).
2. **Sign in when prompted** with your normal Valsight account.
3. **Set the session scope** — when connecting, or later by asking the agent in plain language.

Step-by-step instructions for each client, the server address, and the parameters that restrict a session from the start are in [Connect an AI client to the Valsight MCP server](/connect-ai-client-to-valsight-mcp/).

## Good to know

* **Write is the default:** an MCP session can change your models unless it is connected as `read_only`. Scope it deliberately.
* **Numeric data is a separate switch:** `data access` is independent of `access level` — a read-only session can still be restricted from seeing numbers, and a write session can still be blocked from them.
* **Every call is audited:** tool calls are logged per session for traceability.

## Related

* [Connect an AI client to the Valsight MCP server](/connect-ai-client-to-valsight-mcp/): supported clients and step-by-step setup
* [Valsight AI](/ai-assistant/): overview of both ways to use Valsight AI
* [Using the AI Assistant](/using-the-ai-assistant/): the in-app Assistant — how to phrase questions and what to expect
* [FAQ: Valsight MCP integration](/frequently-asked-questions-valsight-mcp-integration/): connecting, security, and prerequisites

The Valsight MCP server is itself an MCP endpoint over HTTP-stream transport with
OAuth 2.0 (RFC 9728 protected-resource metadata). Tools are exposed under the
`valsight_*` namespace and gated by the session axes above: access level
(read\_only/write), data access (full/restricted), project scope, project-delete,
and access-rights-modify. Each axis can be set at connect time via query
parameters on the server URL (accessLevel=read\_only, dataAccess=restricted,
projects=<id-or-key>,..., allowProjectDelete=no) and changed at runtime;
broadening any axis requires user confirmation. `valsight_session_access_get`
reports the axes in force plus the authenticated account and instance.
