Skip to main content

Connecting AI Tools to Starhive via Model Context Protocol (MCP)

Starhive exposes a Model Context Protocol (MCP) server, so any MCP-capable AI tool can ask Nova questions about your workspace's data, get answers in natural language, and have Nova make changes for you. This guide is client-agnostic — Setup applies to every MCP client; Client examples gives exact commands for a few common ones. To use Nova from Slack, see Starhive in Slack.

What you get​

ToolWhat it does
ask_novaAsk a question about the data, types, spaces, sites, and configuration in your workspace. Read-only: nothing in the workspace is created, changed, or deleted. Returns the answer plus a conversationId.
continue_conversationSend a follow-up in an existing conversation, using that conversationId, keeping earlier context. Read-only, like ask_nova.
make_changesAsk Nova to create, change, move, comment on, or delete records and docs. Pass a conversationId to continue a conversation, or leave it out to start a new one.
get_answerWait for the answer to a request that came back with status running.
cancel_conversationStop a request that's still running. Any answer produced so far is kept.
list_agentsList general Nova and the custom agents shared with you, to pick one by its ID.
list_workspacesList the Starhive workspaces you're a member of, to pick the one a request works in.

Reading and changing are separate tools. ask_nova and continue_conversation never change your workspace: asked for a change, Nova describes it, says it wasn't made, and points to make_changes. Before make_changes changes or deletes existing records, Nova replies with what it's about to do and waits for your answer; send that answer through make_changes with the same conversationId.

Nova runs as you — it only sees spaces, objects, and fields your Starhive user can already see. Connecting an AI tool never grants it more access than you already have.

Before you start​

  1. A Starhive account that's a member of at least one workspace.
  2. An MCP client that supports the Streamable HTTP transport (not stdio — this is a remote server) and OAuth 2.1 sign-in in the browser — see Authenticate below.

Endpoint​

https://api.starhive.com/mcp

Setup​

1. Add the server to your client​

Point it at the endpoint above using Streamable HTTP — see Client examples below. The same URL works for everyone; you don't need to add anything to it.

2. Authenticate​

The first call triggers OAuth: the client opens your browser, you sign in and approve the connection. The token is stored and refreshed automatically.

OAuth is the only way to sign in. A Personal Access Token is rejected by the MCP server, so a client that can't do browser sign-in can't connect.

3. Verify​

Ask something only Starhive could answer, e.g.:

Using Starhive, how many spaces are in my workspace and what types do they contain?

If the answer describes your actual spaces, you're connected.

Choosing a workspace​

Each request works in one workspace:

  • You're a member of one workspace: requests use it. Nothing to set up.
  • You're a member of several: your AI tool calls list_workspaces and passes the chosen workspace's ID as workspace to the other tools. Ask it to use a workspace by name, e.g. "In my Acme workspace, …", or let it ask you.
  • A follow-up stays in the workspace its conversation started in. To work in another workspace, start a new conversation.

To tie a connection to one workspace instead, name it on the connection, and every request that doesn't pass workspace uses it:

  • Query parameter: https://api.starhive.com/mcp?workspace=<workspace-id>
  • HTTP header starhive-workspace-id: <workspace-id>, if your client supports custom headers. If both are present, the header wins.

The workspace ID is the UUID in the address bar when you open the workspace in Starhive: https://<your-starhive-host>/workspace/<workspace-id>/…

Client examples​

Claude Code​

# Add the server (name it whatever you like — "starhive" here)
claude mcp add --transport http starhive "https://api.starhive.com/mcp"

# Check it is registered
claude mcp list

Then run /mcp, pick starhive, and authenticate in the browser that opens — /mcp also shows connection status and discovered tools.

claude mcp remove starhive

Claude Desktop / JSON-configured clients​

{
"mcpServers": {
"starhive": {
"type": "http",
"url": "https://api.starhive.com/mcp"
}
}
}

Restart the client, then start sign-in from its MCP/connectors screen. To tie the connection to one workspace in a client that accepts headers:

{
"mcpServers": {
"starhive": {
"type": "http",
"url": "https://api.starhive.com/mcp",
"headers": { "starhive-workspace-id": "<workspace-id>" }
}
}
}

Clients with a "connect a remote MCP server" UI (e.g. Atlassian Rovo)​

Paste the endpoint:

https://api.starhive.com/mcp

To tie the connection to one workspace, add the query parameter, which exists for clients that can't attach custom headers: https://api.starhive.com/mcp?workspace=<workspace-id>.

Slack​

Slackbot connects through the Starhive app for Slack instead of a URL. See Starhive in Slack.

Troubleshooting​

SymptomCause and fix
You are a member of N Starhive workspaces and this connection names noneYour AI tool didn't say which workspace to use. Ask it to call list_workspaces and pick one, or tie the connection to one workspace (see Choosing a workspace).
Workspace … is not one of yoursThe workspace ID passed isn't one you're a member of. Ask your AI tool to call list_workspaces, or ask an admin to add you.
This conversation is in workspace …A follow-up named a different workspace than its conversation. Leave the workspace out, or start a new conversation.
Invalid starhive-workspace-id header: must be a UUID (400)The value on the connection isn't a workspace ID — copy the UUID from /workspace/<id> in the app URL, not the workspace name.
404 on every callThe connection names a workspace your user isn't a member of — check the ID, or ask an admin to add you.
401, or the client keeps asking to sign inThe token expired or lacks the MCP scope — sign out of the connection and re-authenticate.
Browser sign-in never completesThe client couldn't open a local callback URL — make sure no other MCP sign-in is in progress, then retry.
Status running instead of an answerNova is still working. Your AI tool should call get_answer with the conversationId to wait for the answer, or cancel_conversation to stop it.
Status busyYou or your workspace already have as many Nova requests running as allowed. Wait for one to finish with get_answer, then retry.
Nova says a change wasn't madeThe request went through ask_nova or continue_conversation, which only read. Ask your AI tool to use make_changes instead.
Answers say data is missing that you know existsNova only sees what your user can see — check your permissions on that space.
Not authenticated: a valid OAuth access token is required.A stale connection ran without a resolved identity — sign out of the connection and re-authenticate.