Skip to content
Developers · MCP server

Ask your portfolio a question from inside your AI assistant.

Projexion runs a hosted Model Context Protocol server, so Claude, ChatGPT, Cursor, or whatever your team already uses can read your dashboards, run your calculations, and update your projects. You sign in with your normal Projexion account, and the assistant sees exactly what you see.

Get connected

Three steps, about two minutes

There's no API key to issue, paste, or rotate. Your client registers itself and sends you to a normal browser login.

1
Point your client at the server
Add the endpoint below, or install the Claude Code plugin with one command. Any client that speaks Streamable HTTP with OAuth works.
2
Sign in and pick your accounts
The first call opens a browser login. Sign in as yourself, choose which of your Projexion accounts the connection may work in, and set one as the default.
3
Start asking
Ask about cost, schedule, RFIs, or margin in plain language. The assistant pulls the real numbers instead of guessing at them.

The endpoint

One URL, the same tools in every client. Most clients take it in a JSON config file, and a few spell the transport streamable-http rather than http, so check your own client docs for where that file lives.

Server URL
https://api.projexion.io/api/mcp
Claude Code, as a plugin
/plugin marketplace add PROJEXION/projexion-mcp
/plugin install projexion@projexion
/mcp
Claude Code, as a plain server
claude mcp add --transport http projexion https://api.projexion.io/api/mcp
Any other MCP client
{
  "mcpServers": {
    "projexion": {
      "type": "http",
      "url": "https://api.projexion.io/api/mcp"
    }
  }
}

The tools

Every tool carries MCP annotations, a title plus the read-only, destructive, and idempotent hints, so your client can tell which calls are worth confirming before it makes one.

Tool What it does Access
list_accounts Lists the accounts this connection may work in and marks the default. Pass a returned id as accountId on any other tool to run it in that account. read-only
get_graphql_schema Returns the GraphQL SDL for the types you name, plus the types they reference, so one call gives the assistant a whole shape to work from. read-only
validate_graphql Checks a query or mutation against the schema without running it. read-only
execute_graphql Runs a query or mutation against the Projexion API. Subscriptions aren't supported. writes
semantic_search Finds projects, entities, and knowledgebase articles by meaning rather than exact name, so "the healthcare job in Baltimore" still lands. read-only
search_knowledgebase Searches the Projexion product knowledgebase for how a feature actually works. read-only
list_integrations Lists which integrations supply the account's data, and which data types each one populates. read-only
run_calculation Runs a stored calculation graph and returns the number, optionally scoped to projects and a resolution. Waits up to 30 seconds, then hands back a pollId to call it again with. writes
get_table_content Reads a table or scorecard widget's calculated rows with their column headers, straight from the render cache, so no calculation gets triggered. Pages with offset and limit. read-only
get_widget_content Reads a widget's rendered content: single numbers, table rows, chart series, and so on. read-only
get_skill Returns step-by-step instructions for a Projexion skill, which is a reusable procedure for a complex task. read-only

Pass widgetIds to the two content readers to name the widgets you want, from any dashboard you can reach. Leaving widgetIds off falls back to whatever is on your screen in the Projexion web app, which is nothing over an MCP connection.

What people actually ask it

The same questions you would bring to an analyst, answered against live data instead of last Thursday's export.

Portfolio health
"Which projects slipped this month, and what changed in the schedule?"
Cost to complete
"Pull cost-to-complete for the Riverside job and compare it to last quarter."
Open items
"Show me open RFIs by subcontractor across the East Region."
Finding the right job
"Find the healthcare projects with a pending change order over $100K."
Reading a dashboard
"Read the margin table off our portfolio overview and tell me what moved."
Making the update
"Add a note on Westgate flagging the concrete pour reschedule."
Access

The assistant inherits your permissions, it doesn't bypass them.

You log in as yourself and grant the connection a specific set of accounts at the consent screen. It can work in those accounts and no others.

Every tool call re-authenticates and re-checks your own user's permissions server-side against the account it resolves to. If you can't see a project, dashboard, or cost figure in Projexion, neither can the assistant, whichever model is behind it.

Authentication is OAuth 2.1 with PKCE and dynamic client registration, so there's no token to paste and no secret to store on your machine. Projexion is SOC 2 Type II compliant.

An active Projexion account is the only requirement, no paid add-on and no admin role
Scoped to the accounts you grant, with one set as the default
Permissions checked on every call, not just at login

Questions people ask before they connect

Does this only work with Claude?

No. MCP is an open standard, so the server isn't tied to one model or one vendor. Claude Code has a one-command plugin, and everything else, ChatGPT, Gemini, Cursor, VS Code, Windsurf, Zed, points at the same URL and gets the identical tools.

What does it cost?

Nothing extra. The MCP server is part of your Projexion subscription, and any user in your account can connect with their own login.

Can it change our data?

Yes, within your own permissions. execute_graphql is the one tool annotated destructive, because the schema's mutations reach every entity your role allows. Most clients will ask you to confirm those calls, and everything else either reads or fills a calculation cache.

What happens on a portfolio-wide calculation?

A big graph can outrun a single tool call, so run_calculation waits up to 30 seconds and otherwise returns a pollId. The assistant calls it again with that id and reports progress in the conversation instead of holding a request open.

Is there a live progress stream?

No, and that's deliberate. The server answers each request and closes, with no server-to-client event stream, which is what keeps it behaving identically in every MCP client rather than only the ones that implement progress notifications.

Where do we get support?

Email support@projexion.io and a construction-native team answers, or ask your Projexion contact directly.

Put the portfolio where your team already works.

Book a demo and we'll connect it to data like yours.