onyx-mcp-server

by lupuletic
Verified

local-only server

The server can only run on the client’s local machine because it depends on local resources.

Integrations

  • Hosted on GitHub with contribution guidelines and continuous integration through GitHub Actions

  • Runs as a Node.js-based MCP server to connect Onyx knowledge bases to MCP clients, enabling document search and retrieval functionality

  • Available as an npm package for easy installation and integration with Onyx knowledge bases

Onyx MCP サーバー

Onyx AI ナレッジ ベースとシームレスに統合するモデル コンテキスト プロトコル (MCP) サーバー。

このMCPサーバーは、MCP対応クライアントをOnyxナレッジベースに接続し、ドキュメントから関連するコンテキストを検索・取得できるようにします。MCPクライアントとOnyx API間の橋渡しとなり、強力なセマンティック検索とチャット機能を実現します。

特徴

  • 強化された検索: LLM 関連性フィルタリングを使用した Onyx ドキュメント セット全体のセマンティック検索
  • コンテキストウィンドウの取得: 一致するチャンクの上下のチャンクを取得して、コンテキストをより良く把握します。
  • 完全な文書の取得: チャンクではなく文書全体を取得するオプション
  • チャット統合: LLM + RAGとOnyxの強力なチャットAPIを使用して包括的な回答を得る
  • 設定可能なドキュメント セット フィルタリング: 特定のドキュメント セットをターゲットにして、より関連性の高い結果を得ることができます。

インストール

Smithery経由でインストール

Smithery経由で Claude Desktop 用の Onyx MCP Server を自動的にインストールするには:

npx -y @smithery/cli install @lupuletic/onyx-mcp-server --client claude

前提条件

  • Node.js (v16 以上)
  • APIアクセスを備えたOnyxインスタンス
  • Onyx APIトークン

設定

  1. リポジトリをクローンします。
    git clone https://github.com/lupuletic/onyx-mcp-server.git cd onyx-mcp-server
  2. 依存関係をインストールします:
    npm install
  3. サーバーを構築します。
    npm run build
  4. Onyx API トークンを設定します。
    export ONYX_API_TOKEN="your-api-token-here" export ONYX_API_URL="http://localhost:8080/api" # Adjust as needed
  5. サーバーを起動します。
    npm start

MCP クライアントの構成

Claudeデスクトップアプリ用

~/Library/Application Support/Claude/claude_desktop_config.jsonに追加します:

{ "mcpServers": { "onyx-search": { "command": "node", "args": ["/path/to/onyx-mcp-server/build/index.js"], "env": { "ONYX_API_TOKEN": "your-api-token-here", "ONYX_API_URL": "http://localhost:8080/api" }, "disabled": false, "alwaysAllow": [] } } }

VSCode の Claude 向け (Cline)

Cline MCP 設定ファイルに以下を追加します:

{ "mcpServers": { "onyx-search": { "command": "node", "args": ["/path/to/onyx-mcp-server/build/index.js"], "env": { "ONYX_API_TOKEN": "your-api-token-here", "ONYX_API_URL": "http://localhost:8080/api" }, "disabled": false, "alwaysAllow": [] } } }

その他のMCPクライアント向け

カスタムMCPサーバーを追加する方法については、MCPクライアントのドキュメントを参照してください。以下の情報をご提供いただく必要があります。

  • サーバーを実行するコマンド( node
  • ビルドされたサーバーファイルへのパス ( /path/to/onyx-mcp-server/build/index.js )
  • ONYX_API_TOKENおよびONYX_API_URLの環境変数

利用可能なツール

設定が完了すると、MCP クライアントは次の 2 つの強力なツールにアクセスできるようになります。

1. 検索ツール

search_onyxツールは、強化されたコンテキスト取得により Onyx の検索機能に直接アクセスできるようにします。

<use_mcp_tool> <server_name>onyx-search</server_name> <tool_name>search_onyx</tool_name> <arguments> { "query": "customer onboarding process", "documentSets": ["Company Policies", "Training Materials"], "maxResults": 3, "chunksAbove": 1, "chunksBelow": 1, "retrieveFullDocuments": true } </arguments> </use_mcp_tool>

パラメータ:

  • query (必須): 検索するトピック
  • documentSets (オプション): 検索対象となるドキュメント セット名のリスト (すべて空の場合)
  • maxResults (オプション): 返される結果の最大数 (デフォルト: 5、最大: 10)
  • chunksAbove (オプション): 一致するチャンクの上に含めるチャンクの数 (デフォルト: 1)
  • chunksBelow (オプション): 一致するチャンクの下に含めるチャンクの数 (デフォルト: 1)
  • retrieveFullDocuments (オプション): チャンクではなく完全なドキュメントを取得するかどうか (デフォルト: false)

2. チャットツール

chat_with_onyxツールは、LLM + RAG を備えた Onyx の強力なチャット API を活用して包括的な回答を提供します。

<use_mcp_tool> <server_name>onyx-search</server_name> <tool_name>chat_with_onyx</tool_name> <arguments> { "query": "What is our company's policy on remote work?", "personaId": 15, "documentSets": ["Company Policies", "HR Documents"], "chatSessionId": "optional-existing-session-id" } </arguments> </use_mcp_tool>

パラメータ:

  • query (必須): Onyxに尋ねる質問
  • personaId (オプション): 使用するペルソナのID (デフォルト: 15)
  • documentSets (オプション): 検索対象となるドキュメント セット名のリスト (すべて空の場合)
  • chatSessionId (オプション): 会話を続けるための既存のチャットセッションID

チャットセッション

チャットツールは、複数のインタラクションに渡る会話のコンテキスト維持をサポートしています。最初の呼び出し後、レスポンスのメタデータにchat_session_idが含まれます。このIDを後続の呼び出しに渡すことで、コンテキストを維持できます。

検索とチャットの選択

  • 検索を使用するのは次のような場合です: ドキュメントから特定の対象を絞った情報が必要で、取得するコンテキストの量を正確に制御したい場合。
  • チャットを使用するのは次のような場合です: 複数のソースからの情報を組み合わせた包括的な回答が必要な場合、または LLM に情報を統合してもらいたい場合。

最良の結果を得るには、両方のツールを組み合わせて使用し、特定の詳細を検索し、包括的な理解のためにチャットします。

ユースケース

  • ナレッジマネジメント:MCP互換インターフェースを通じて組織のナレッジベースにアクセスします
  • カスタマーサポート: サポートエージェントが関連情報を素早く見つけられるように支援します
  • 調査: 組織の文書を徹底的に調査します
  • トレーニング: トレーニング資料とドキュメントへのアクセスを提供する
  • ポリシーコンプライアンス: チームが最新のポリシーと手順にアクセスできるようにします

発達

開発モードで実行

npm run dev

変更のコミット

このプロジェクトでは、すべてのコミットメッセージにConventional Commits仕様を適用します。これを容易にするために、対話型のコミットツールを提供しています。

npm run commit

このガイドに従って、適切な形式のコミットメッセージを作成してください。また、以下の標準的な形式に従って独自のコミットメッセージを記述することもできます。

<type>[optional scope]: <description> [optional body] [optional footer(s)]

type 、feat、fix、docs、style、refactor、perf、test、build、ci、chore、revert のいずれかです。

生産のための構築

npm run build

テスト

テスト スイートを実行します。

npm test

カバレッジ付きのテストを実行します。

npm run test:coverage

リンティング

npm run lint

リンティングの問題を修正:

npm run lint:fix

継続的インテグレーション

このプロジェクトでは、継続的インテグレーションとデプロイメントにGitHub Actionsを使用しています。CIパイプラインは、メインブランチへのプッシュとプルリクエストごとに実行され、以下のチェックを実行します。

  • リンティング
  • 建物
  • テスト
  • コードカバレッジレポート

自動バージョンアップと公開

PRがメインブランチにマージされると、プロジェクトは適切なバージョンアップの種類を自動的に決定し、npmに公開します。システムはPRのタイトルとコミットメッセージの両方を分析して、バージョンアップの種類を決定します。

  1. PR タイトルの検証: すべての PR タイトルはConventional Commits仕様に基づいて検証されます。
    • PR のタイトルはタイプで始まる必要があります (例: feat:fix:docs: )
    • この検証はPRが作成または更新されたときに自動的に行われます
    • 無効なタイトルのPRは検証チェックに失敗します
  2. コミット メッセージの検証: すべてのコミット メッセージは、従来のコミット形式に対しても検証されます。
    • コミットメッセージはタイプで始まる必要があります(例: feat:fix:docs:
    • これはコミット時に実行されるgitフックによって強制されます
    • 無効なメッセージを含むコミットは拒否されます
    • 対話型のコミットメッセージ作成ツールとしてnpm run commit使用する
  3. バージョン バンプの決定: システムは PR タイトルとコミット メッセージの両方を分析して、適切なバージョン バンプを決定します。
    • PRタイトルがfeatで始まるか、新機能を含む場合 → マイナーバージョンアップ
    • fixで始まるかバグ修正を含むPRタイトル → パッチバージョンのアップ
    • PRタイトルにBREAKING CHANGEまたは感嘆符が含まれる → メジャーバージョンアップ
    • PRタイトルが特定のバンプタイプを示していない場合、システムはコミットメッセージを分析します。
    • コミットメッセージで見つかった最も優先度の高いバンプタイプが使用されます(メジャー > マイナー > パッチ)
    • 従来のコミットプレフィックスが見つからない場合、システムは自動的にパッチバージョンのバンプをデフォルトに設定し、失敗することはありません。
  4. バージョンの更新と公開:
    • セマンティックバージョニングに従って、package.json のバージョンをアップグレードします。
    • バージョンの変更をコミットしてプッシュする
    • 新しいバージョンをnpmに公開する

この自動化されたプロセスにより、セマンティック バージョン管理の原則に従って、変更の性質に基づいた一貫したバージョン管理が保証され、手動によるバージョン管理が不要になります。

貢献

貢献を歓迎します!詳細については、貢献ガイドをご覧ください。

安全

セキュリティ上の脆弱性を発見した場合は、弊社のセキュリティ ポリシーに従ってください。

ライセンス

このプロジェクトは MIT ライセンスに基づいてライセンスされています - 詳細についてはLICENSEファイルを参照してください。

-
security - not tested
A
license - permissive license
-
quality - not tested

MCP対応クライアントをOnyx AIナレッジベースに接続することで、セマンティック検索とチャット機能が強化されます。ドキュメントから関連するコンテキストをシームレスに取得することで、強力なインタラクションと包括的な回答が可能になります。ナレッジマネジメントを効率化し、情報へのアクセスを向上させます。

  1. Features
    1. Installation
      1. Installing via Smithery
      2. Prerequisites
      3. Setup
    2. Configuring MCP Clients
      1. For Claude Desktop App
      2. For Claude in VSCode (Cline)
      3. For Other MCP Clients
    3. Available Tools
      1. 1. Search Tool
      2. 2. Chat Tool
    4. Choosing Between Search and Chat
      1. Use Cases
        1. Development
          1. Running in Development Mode
          2. Committing Changes
          3. Building for Production
          4. Testing
          5. Linting
        2. Continuous Integration
          1. Automated Version Bumping and Publishing
        3. Contributing
          1. Security
            1. License
              ID: 042c771hjy