Connect Foundational MCP to GitHub Copilot
Foundational runs a hosted Model Context Protocol (MCP) server at https://mcp.foundational.io/mcp. Connecting it to GitHub Copilot gives Copilot your end-to-end column-level lineage, table and column definitions, ownership and metadata, and downstream consumers such as dashboards and ML models — so Copilot can reason about what a schema change breaks outside the repository it has open.
Copilot is really three products with three different MCP configurations. This article covers all of them: Copilot Chat in VS Code, the Copilot CLI, and the Copilot coding agent (the cloud agent that opens pull requests).
Important: the Copilot coding agent and Copilot code review do not support remote MCP servers that use OAuth. For those surfaces you must use Foundational's machine-to-machine authentication with a bearer token. See Connect the Copilot coding agent below.
Looking for a different tool? See Use Foundational MCP with your AI tools for the full client list, use cases, and machine-to-machine authentication.
Before you begin
You need an active user account in the Foundational app. The MCP server authorizes against your Foundational identity and returns only the assets your account can already see.
You need a GitHub Copilot license. MCP support requires agent mode in VS Code.
To configure the coding agent, you need repository admin rights and a Foundational API token. See Create API Tokens.
Connection details
Server URL:
https://mcp.foundational.io/mcp
Transport: Streamable HTTP (
"type": "http")
Authentication (VS Code, CLI): OAuth 2.0 with Dynamic Client Registration
Authentication (coding agent): bearer token in the format
CLIENT_ID:SECRET_KEY
Suggested name:
foundational
Connect Copilot Chat in VS Code
Option 1: Use the guided flow
Open the Command Palette and run MCP: Add Server.
Choose HTTP (HTTP or Server-Sent Events).
Enter the server URL:
https://mcp.foundational.io/mcp
Name the server
foundational.
Choose Global to make it available in every workspace, or Workspace to write it to
.vscode/mcp.jsonfor this repository only.
VS Code starts the authentication flow. Click Allow when prompted, then Open, and complete the Foundational login in your browser.
Option 2: Edit mcp.json
For a workspace-level server, create or edit .vscode/mcp.json. For a user-level server, run MCP: Open User Configuration from the Command Palette.
Note that VS Code uses servers as the top-level key, not mcpServers:
{
"servers": {
"foundational": {
"type": "http",
"url": "https://mcp.foundational.io/mcp"
}
}
}Because Foundational authenticates over OAuth rather than a static secret, .vscode/mcp.json is safe to commit — it contains no credentials, and each engineer signs in as themselves the first time they use it.
Verify
Run MCP: List Servers from the Command Palette and confirm
foundationalis listed and running.
Open Copilot Chat, switch to Agent mode, and click the tools icon. The Foundational tools should appear in the list.
Ask a question only Foundational can answer, such as: "Using Foundational, list the downstream consumers of the
dim_customerstable."
VS Code limits how many tools can be active in a single chat request. Foundational exposes a large tool set, so if you have several MCP servers connected, use the tools picker to enable only the Foundational tools you need for the task.
Connect the Copilot CLI
Add the server:
copilot mcp add --transport http foundational https://mcp.foundational.io/mcp
Confirm it was registered:
copilot mcp list
copilot mcp get foundationalStart Copilot CLI and complete the authentication prompt for Foundational when it appears.
The CLI stores servers in ~/.copilot/mcp-config.json. You can edit that file directly instead:
{
"mcpServers": {
"foundational": {
"type": "http",
"url": "https://mcp.foundational.io/mcp",
"tools": ["*"]
}
}
}The tools array controls which tools are enabled. Use ["*"] for all of them, or list specific tool names to narrow the surface. You can also set this at add time with --tools.
Connect the Copilot coding agent
The Copilot coding agent runs on GitHub's infrastructure and cannot complete a browser OAuth flow, so it requires a Foundational API token passed as a bearer header.
Step 1: Create a Foundational API token
Follow Create API Tokens to generate a client ID and secret key. The MCP server expects them combined as CLIENT_ID:SECRET_KEY.
Step 2: Store it as a Copilot secret
In your repository, go to Settings > Environments and open (or create) the
copilotenvironment.
Add a secret named
COPILOT_MCP_FOUNDATIONAL_TOKENwith the valueCLIENT_ID:SECRET_KEY.
Only secrets and variables prefixed with COPILOT_MCP_ are visible to MCP configurations. A secret named anything else resolves to an empty string, and the connection fails with an authentication error.
Step 3: Add the MCP configuration
In your repository, go to Settings > Copilot > MCP servers.
Paste this into the MCP configuration field and save:
{
"mcpServers": {
"foundational": {
"type": "http",
"url": "https://mcp.foundational.io/mcp",
"headers": {
"Authorization": "Bearer $COPILOT_MCP_FOUNDATIONAL_TOKEN"
},
"tools": ["*"]
}
}
}
Step 4: Verify
Assign the coding agent an issue that requires lineage context — for example, "Rename user_id to customer_id in the orders model; use Foundational to check downstream consumers first." Then open the agent's session log from the pull request and confirm the Foundational tool calls appear.
The coding agent uses configured MCP tools autonomously and does not ask for approval. The token you supply defines exactly what it can see, so scope the Foundational account behind that token to the access the agent actually needs.
What Foundational changes about how Copilot works
Impact analysis before a schema change
Impact analysis before a schema change
Copilot sees the repository it has open. Foundational supplies everything past its edge: the dashboards, downstream tables, ML features, and operational databases that read the columns being changed.
"Before renaming this column, check Foundational for downstream consumers and list anything I can't fix in this repo."
"Which dashboards break if I drop
legacy_statusfromorders?"
Pull request review with real lineage
Pull request review with real lineage
"Review this diff and flag any column removals that Foundational shows as having downstream consumers."
For lineage-aware checks that run automatically on every pull request without a Copilot license, see Continuously Check Your Pull Requests with Foundational CI.
Governance and privacy checks
Governance and privacy checks
"List tables with columns tagged
piiand their downstream consumers."
"Does this change join
pii-tagged columns into a table taggedpublic?"
Troubleshooting
VS Code does not pick up the server
VS Code does not pick up the server
The most common cause is the wrong top-level key. VS Code uses "servers"; the Copilot CLI and the coding agent use "mcpServers". Copying a config between them without changing the key silently produces a server that never loads. Run MCP: List Servers to confirm what VS Code actually sees.
The coding agent fails to connect with an authentication error
The coding agent fails to connect with an authentication error
The coding agent does not support OAuth for remote MCP servers, so it must use a bearer token. Check that: the secret name starts with COPILOT_MCP_; the secret lives in the repository's copilot environment; and the value is the full CLIENT_ID:SECRET_KEY pair, not just the secret key.
Copilot Chat ignores the Foundational tools
Copilot Chat ignores the Foundational tools
MCP tools are only available in Agent mode, not Ask or Edit mode. Switch modes in the chat view, then open the tools picker and confirm Foundational is enabled. Naming the server in your prompt ("use Foundational to…") also makes tool selection more reliable.
Connection fails behind a corporate proxy or firewall
Connection fails behind a corporate proxy or firewall
Allow outbound HTTPS to mcp.foundational.io. The Copilot coding agent runs on GitHub's infrastructure, so it can only reach a Foundational deployment that is available on the public internet — self-hosted and air-gapped deployments work with VS Code and the CLI from inside your network instead. See Allowing IP access to Foundational.
