AI Drive MCP server
Search and read Keural Drive documents from external MCP clients such as Claude Desktop.
Keural Drive is provided as an MCP server. When an external MCP client connects, a user who holds a key can search the Drive documents they are allowed to see and read them page by page. Plugins connect external systems to Keural, while this server connects Keural documents to external AI.
Authentication uses an organization API key. Keural operations issue organization API keys, so request one from your adoption contact. The key works with the permissions of the one user it was issued to and requires the drive:read permission. When a key is revoked, existing connections are blocked within 1 minute.
Connection information
| Item | Value |
|---|---|
| Transport | MCP Streamable HTTP |
| Address | https://<agent server domain for each environment>/core/v1/mcp-drive |
| Authentication | Authorization: Bearer <organization API key> (every request) |
Request methods
| Method | Use |
|---|---|
POST | One JSON-RPC request. The response is always a single application/json. Notifications (notifications/*) return 202 with no body. |
GET | Server event stream. Requires Accept: text/event-stream and Mcp-Session-Id. Sends a keepalive every 15 seconds and resumes with Last-Event-ID. |
DELETE | Ends the session. Requires Mcp-Session-Id and returns 204. |
- When
initializesucceeds, the session ID is returned in theMcp-Session-Idresponse header. A session is optional, and you may sendPOSTalone without one. A session is kept for 1 hour after the last request and is bound to the key that created it. - The
MCP-Protocol-Versionheader is optional. If you send it, its value must be2025-06-18. - The server information is
keural-ai-drive, and the only capability it provides istools.
HTTP errors
HTTP-level errors are not in JSON-RPC format, so check the status code.
| Status | Cause |
|---|---|
401 | Key missing or incorrect, or a revoked or expired key |
403 | The key does not have the drive:read permission |
400 | Unsupported MCP-Protocol-Version, JSON parse failure (-32700), or no session ID on GET or DELETE |
404 | Unknown or expired session ID |
405 | GET without Accept: text/event-stream |
JSON-RPC-level errors are returned with 200 as an error. An unknown method or tool returns -32601, and a malformed request returns -32600.
Tools
| Tool | Input | Description |
|---|---|---|
list_files | None | List of documents you can see (name, id, upload date, modified date, and uploader if someone else uploaded it). Drive documents and files attached in chats are returned together and distinguished by origin. Up to 500 items; if there are more, truncated: true is added |
search_drive | query | Searches document contents by meaning and returns related passages and citation information |
read_document_page | file_id, page | Reads the full text of a specific page of a document. Get file_id from the results of the two tools above. page counts from 1 |
Tool results are carried as a JSON string in content[0].text.
| Tool | JSON inside text |
|---|---|
list_files | {"files":[{"name","id","created_date","modified_date","owner_name","origin"}], "truncated": false}. Dates are yyyy-MM-dd HH:mm |
search_drive | {"sources":[{"id","name","url","contents":[…]}]} |
read_document_page | {"file_id","page","rows":[…]} |
When a tool fails, isError: true and {"error": "…"} are returned (not a JSON-RPC error). A document that you cannot access or that does not exist always returns file not found or not accessible.
Client configuration example
Register the address and header in a client that supports remote MCP servers. Configuration formats differ by client, so follow the client's way of adding a remote MCP server.
{
"mcpServers": {
"keural-drive": {
"type": "http",
"url": "https://<agent server domain for each environment>/core/v1/mcp-drive",
"headers": { "Authorization": "Bearer <organization API key>" }
}
}
}The MCP protocol version supported is 2025-06-18.