Back to Openviking

MCP Integration Guide

docs/en/guides/06-mcp-integration.md

0.3.164.8 KB
Original Source

MCP Integration Guide

OpenViking server has a built-in MCP (Model Context Protocol) endpoint, allowing any MCP-compatible client to access its memory and resource capabilities over HTTP — no additional processes needed.

Prerequisites

  1. OpenViking installed (pip install openviking or from source)
  2. A valid configuration file (see Configuration Guide)
  3. openviking-server running (see Deployment Guide)

The MCP endpoint is at http://<server>:1933/mcp, sharing the same process and port as the REST API.

Verified Platforms

The following platforms have been successfully integrated with OpenViking MCP:

PlatformIntegration Method
Claude Codetype: http
ChatGPT & CodexStandard MCP config
Claude.ai / Claude DesktopNative OAuth 2.1 (see 11-oauth)
ManusStandard MCP config
TraeStandard MCP config

Authentication

The MCP endpoint shares the same API-Key authentication system as the OpenViking REST API. Pass either header:

  • X-Api-Key: <your-key>
  • Authorization: Bearer <your-key>

No authentication is required in local dev mode (server bound to localhost).

Client Configuration

Generic MCP Clients

Most MCP-compatible platforms (Trae, Manus, Cursor, etc.) use the standard mcpServers format:

json
{
  "mcpServers": {
    "openviking": {
      "url": "https://your-server.com/mcp",
      "headers": {
        "Authorization": "Bearer your-api-key-here"
      }
    }
  }
}

Claude Code

Claude Code requires "type": "http". Add via CLI:

bash
claude mcp add --transport http openviking \
  https://your-server.com/mcp \
  --header "Authorization: Bearer your-api-key-here"

Or in .mcp.json:

json
{
  "mcpServers": {
    "openviking": {
      "type": "http",
      "url": "https://your-server.com/mcp",
      "headers": {
        "Authorization": "Bearer your-api-key-here"
      }
    }
  }
}

Add --scope user to make the config global (shared across all projects).

Claude.ai / Claude Desktop / ChatGPT / Cursor (OAuth)

These clients only accept OAuth 2.1 — API Keys cannot be passed directly. OpenViking ships a native OAuth 2.1 implementation (DCR + PKCE + opaque tokens, backed by SQLite, with a console-driven OTP authorization page) so no external proxy is needed.

See the OAuth 2.1 Guide for:

  • End-to-end flow (device-flow style: page displays a 6-character code, user confirms in the OpenViking console)
  • HTTP (local) and HTTPS (production) deployment, including Caddy and nginx reverse-proxy templates plus a docker-compose example
  • Connecting Claude.ai / Claude Desktop / Cursor / ChatGPT step by step
  • OPENVIKING_PUBLIC_BASE_URL and the oauth config block
  • Token model (ovat_ / ovrt_ / ovac_ prefixes) and revocation

The community MCP-Key2OAuth Cloudflare Worker proxy is still around and remains a valid third-party option, but the native flow is recommended now: no extra deployment unit, no third-party trust boundary on the API key.

Available MCP Tools

Once connected, OpenViking exposes 9 tools:

ToolDescriptionKey Parameters
searchSemantic search across memories, resources, and skillsquery, target_uri (optional), limit, min_score
readRead one or more viking:// URIsuris (single string or array)
listList entries under a viking:// directoryuri, recursive (optional)
storeStore messages into long-term memory (triggers extraction)messages (list of {role, content})
add_resourceAdd a local file or URL as a resourcepath, description (optional)
grepRegex content search across viking:// filesuri, pattern (string or array), case_insensitive
globFind files matching a glob patternpattern, uri (optional scope)
forgetDelete any viking:// URI (use search to find it first; pass recursive=true to delete a directory)uri, recursive (optional)
healthCheck OpenViking service healthnone

Troubleshooting

Connection refused

Likely cause: openviking-server is not running, or is running on a different port.

Fix: Verify the server is running:

bash
curl http://localhost:1933/health
# Expected: {"status": "ok"}

Authentication errors

Likely cause: API key mismatch between client config and server config.

Fix: Ensure the API key in your MCP client configuration matches the one in your OpenViking server configuration. See Authentication Guide.

References