Connect your LLM to Lunexa via MCP
The Lunexa MCP server lets Claude Desktop, ChatGPT, Cursor, Continue.dev, and any other Model Context Protocol client search your project's data through the same API key you already use for the REST API. No scraping, no copy, no separate sync layer.
Tools your LLM can call
All four tools are read-only. The Lunexa MCP server exposes the same scopes the calling API key already grants — a key scoped to one collection only sees that collection.
lunexa_searchRun a keyword search against one collection in your project. Returns ranked hits with citations.
lunexa_multi_searchRun up to 8 parallel searches across collections in one round-trip. Best when an answer needs evidence from multiple data sets.
lunexa_list_collectionsReturn the schemas the LLM can search against. Use this to plan which collection to query.
lunexa_get_documentFetch a single record by id after a search hit. Handy when the LLM needs the full document, not just the search snippet.
Setup recipes
Replace luna_...with an API key from your project's dashboard. Project scope on the key is the project the LLM will see — keys can't cross projects.
Claude Desktop
Add a single MCP server to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%/Claude/claude_desktop_config.json (Windows). Restart Claude Desktop to pick up the change.
{
"mcpServers": {
"lunexa": {
"url": "https://api.ailunexa.com/api/v1/mcp",
"headers": {
"Authorization": "Bearer luna_..."
}
}
}
}ChatGPT custom GPT
Create a custom GPT, open Configure → Actions, and import the OpenAPI schema below. Set Authentication → API key → Auth type Bearer, paste your Lunexa key.
# Actions schema (paste into the OpenAPI box)
openapi: 3.1.0
info:
title: Lunexa MCP
version: "1.0"
servers:
- url: https://api.ailunexa.com/api/v1
paths:
/mcp:
post:
operationId: lunexaMCP
summary: Lunexa MCP streamable transport
requestBody:
required: true
content:
application/json: {}
responses:
"200":
description: OKNote: ChatGPT's MCP support is evolving. If your tenant requires a different transport (e.g. stdio over WebSocket) please contact support — we ship a streamable HTTP transport today.
Cursor
Cursor → Settings → MCP. Paste the same JSON as Claude Desktop. Cursor restarts the connection automatically when you save.
{
"mcpServers": {
"lunexa": {
"url": "https://api.ailunexa.com/api/v1/mcp",
"headers": {
"Authorization": "Bearer luna_..."
}
}
}
}Continue.dev
Add to ~/.continue/config.yaml. Continue rereads the config on save; no IDE restart required.
mcpServers:
- name: lunexa
url: https://api.ailunexa.com/api/v1/mcp
headers:
Authorization: "Bearer luna_..."Auth via API keys
Bearer auth, same keys as the REST API. Scope on the key (project + collections + actions) is the scope your LLM sees. Revoke a key in the dashboard and the LLM loses access on the next request.
Streamable HTTP transport
We expose the official MCP streamable HTTP transport on POST /api/v1/mcp. Most clients (Claude Desktop, Cursor, Continue) need only the URL + Bearer header.
Audit log of every call
Every tool call appears in the per-org audit log with the key id, tool name, and timestamp. Same surface super-admins use to track REST traffic — MCP traffic is metered and audited identically.
Pricing
- Enterprise plan ($499/mo): includes 20,000 MCP tool calls per month — bundled value before any overage starts. Need more? Contact sales for a higher commit.
- Overage: $2.00 per 1,000 calls past the included quota, metered to Stripe daily. The same billable-delta math the REST overages use, so the customer is never charged for in-quota usage.
- Hard cap: 2× the included quota (so 40,000 calls/mo on Enterprise) is a runaway- protection ceiling. Past that, requests return 429 Too Many Requests with a Retry-After hint until next billing period — or contact support to lift.
- Free / Starter / Pro: MCP is not in plan today — calls return 402 Payment Required. Contact sales to discuss earlier-tier access.
Quick smoke test (curl)
Verify the endpoint accepts your key + lists the four tools without spinning up an LLM client.
# 1. Initialize a session
curl -sN -X POST https://api.ailunexa.com/api/v1/mcp \
-H "Authorization: Bearer luna_..." \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize",
"params":{"protocolVersion":"2025-06-18",
"capabilities":{},
"clientInfo":{"name":"smoke","version":"1"}}}'
# 2. The response includes Mcp-Session-Id; pass it on tools/list
curl -sN -X POST https://api.ailunexa.com/api/v1/mcp \
-H "Authorization: Bearer luna_..." \
-H "Mcp-Session-Id: <session-id>" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'Expect four tool entries: lunexa_search, lunexa_multi_search, lunexa_list_collections, lunexa_get_document.
Ready to plug in?
MCP access is on the Enterprise plan. Talk to sales for a BAA, custom limits, or a sandbox project to test against.
Talk to sales