loading…
Search for a command to run...
loading…
Connects AI assistants to Tacit building digital twins to query buildings, equipment, sensors, and zones using natural language. It provides tools for exploring
Connects AI assistants to Tacit building digital twins to query buildings, equipment, sensors, and zones using natural language. It provides tools for exploring Brick-compliant knowledge graphs, fetching historical sensor data, and accessing site documents.
MCP server that connects AI assistants to Tacit building digital twins. Ask questions about your buildings, equipment, sensors, and zones in natural language.
Works with Claude Desktop, Claude Code, Cursor, Windsurf, and any MCP-compatible client.
Four read-only tools:
| Tool | Purpose |
|---|---|
tacit_list_sites |
List buildings your API key can access |
tacit_graphql |
Query the building knowledge graph (Brick-compliant) |
tacit_timeseries |
Fetch historical sensor data |
tacit_list_files |
List documents and files for a site |
The GraphQL tool includes the full schema reference, so the AI model can compose queries without needing separate documentation.
npx -y @tacit/mcp-server
Just point your MCP client at it (see configuration below). No cloning, no building.
git clone https://github.com/ucl-sbde/tacit-mcp.git
cd tacit-mcp
npm install
npm run build
You'll need a Tacit API key. Get one from your dashboard at app.betacit.com under Site Settings > API Keys.
The standard method — the MCP client launches the server as a child process. Best for individual use on your own machine.
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"tacit": {
"command": "npx",
"args": ["-y", "@tacit/mcp-server"],
"env": {
"TACIT_API_KEY": "your-api-key"
}
}
}
}
Add to .mcp.json in your project:
{
"mcpServers": {
"tacit": {
"command": "npx",
"args": ["-y", "@tacit/mcp-server"],
"env": {
"TACIT_API_KEY": "your-api-key"
}
}
}
}
Add to .cursor/mcp.json:
{
"mcpServers": {
"tacit": {
"command": "npx",
"args": ["-y", "@tacit/mcp-server"],
"env": {
"TACIT_API_KEY": "your-api-key"
}
}
}
}
Run the server as a persistent HTTP service. Best for teams, cloud deployments, and environments where users can't install Node.js locally.
# Start the HTTP server
TACIT_API_KEY=your-api-key npm run start:http
# Or with npx
TACIT_API_KEY=your-api-key npx --package @tacit/mcp-server tacit-mcp-http
The server listens on http://0.0.0.0:3001/mcp by default.
Point your client at the server URL with a bearer token:
{
"mcpServers": {
"tacit": {
"type": "streamable-http",
"url": "https://your-host:3001/mcp",
"headers": {
"Authorization": "Bearer your-api-key"
}
}
}
}
| Variable | Default | Description |
|---|---|---|
PORT |
3001 |
Port to listen on |
HOST |
0.0.0.0 |
Bind address |
MCP_PATH |
/mcp |
MCP endpoint path |
TACIT_API_KEY |
Required in API key mode | |
TACIT_OAUTH_ISSUER |
Set to enable OAuth 2.1 mode |
GET /health → { "status": "ok", "transport": "streamable-http", "sessions": 3 }
For production deployments where you want users to authenticate via Tacit's login flow instead of managing API keys:
TACIT_OAUTH_ISSUER=https://app.betacit.com npm run start:http
This enables:
MCP clients that support OAuth (like Claude Desktop) will discover the auth configuration automatically via the .well-known/oauth-authorization-server metadata endpoint.
docker run -p 3001:3001 -e TACIT_API_KEY=your-api-key tacit/mcp-server
Connect using the HTTP transport config above.
Once connected, ask your AI assistant things like:
| Variable | Required | Default | Description |
|---|---|---|---|
TACIT_API_KEY |
Yes (stdio/HTTP) | Your Tacit API key | |
TACIT_API_URL |
No | https://app.betacit.com |
API base URL (for self-hosted deployments) |
TACIT_OAUTH_ISSUER |
No | OAuth issuer URL (enables OAuth 2.1 mode) | |
PORT |
No | 3001 |
HTTP server port |
HOST |
No | 0.0.0.0 |
HTTP server bind address |
MCP_PATH |
No | /mcp |
HTTP MCP endpoint path |
npm run dev # watch mode — stdio transport
npm run dev:http # watch mode — HTTP transport
npm run build # compile TypeScript
npm start # run stdio transport
npm run start:http # run HTTP transport
MIT
Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"tacit-mcp": {
"command": "npx",
"args": []
}
}
}