Byteask Embedded Docs について
ByteAsk Embedded MCP は ByteAsk Embedded Docs を支えるオープンソースのMCP サーバーで、コーディングエージェント向けに組み込み・ファームウェアの参考資料からページ引用付きで情報を検索します。原文の抜粋を返し、該当がない場合は回答を生成せず一致なしを返します。
主な機能
- 01セクションとページの引用を付けた原文抜粋
- 02根拠がない場合の一致なし応答
- 03search_docs、get_context、request_document ツール
- 04stdio と Streamable HTTP のトランスポート対応
活用シーン
- 01ファームウェア作成時にレジスタオフセットや機能コードを確認する
- 02Modbus や SCPI のコマンド定義を正確に調べる
- 03コーディングエージェントでデータシートのしきい値や仕様を検証する
MCP 対応
本プロジェクトは MCP サーバーであり、search_docs、get_context、request_document の各ツールを MCP クライアントに公開します。検索エンジンとドキュメントコーパスはこのリポジトリには含まれず、SearchBackend インターフェースを通じて差し替えられます。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://mcp.byteask.ai/mcpclaude mcp add --transport http ByteAsk-Embedded-MCP https://mcp.byteask.ai/mcp{"mcpServers":{"ByteAsk-Embedded-MCP":{"type":"http","url":"https://mcp.byteask.ai/mcp"}}}Cursor で開く{"servers":{"ByteAsk-Embedded-MCP":{"type":"http","url":"https://mcp.byteask.ai/mcp"}}}VS Code で開く{"mcpServers":{"ByteAsk-Embedded-MCP":{"type":"http","url":"https://mcp.byteask.ai/mcp"}}}{"mcpServers":{"ByteAsk-Embedded-MCP":{"serverUrl":"https://mcp.byteask.ai/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
3| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| query | string | はい | |
| limit | integer | いいえ | |
| effort | any | いいえ |
詳細
ByteAsk Embedded MCP
組み込み機器およびファームウェアのリファレンス文書から、ページ引用付きの回答を提供します。レジスタ値を推測できないコーディングエージェント向けです。
公式 MCP Registry 名前空間:ai.byteask/embedded-docs · リモート MCP エンドポイント:https://mcp.byteask.ai/mcp
クイックスタート · ツール · クライアントの接続 · 設定 · ホスト型サーバー · コントリビューション
ByteAsk Embedded MCP は、ByteAsk Embedded Docs を支えるオープンソースサーバーです。 ファームウェア、ドライバー、プロトコルのコードを作成するコーディングエージェント(Claude Code、Codex、Cursor)向けに、ソースに基づくページ引用付きの根拠検索を提供します。SunSpec ポイント、レジスターオフセット、Modbus ファンクションコード、トリップしきい値、SCPI コマンド、API シンボルなどの正確な情報が必要な場合に役立ちます。
ページ引用付きの原文スニペットをそのまま返します。回答を生成することはありません。また、十分に関連する情報が見つからない場合は、捏造するのではなく一致なしと伝えます。すべての文書は同等に扱われ、優先度の設定やフィルターはありません。
メモ
このリポジトリに含まれるもの: MCP サーバー(ツール、トランスポート(stdio + Streamable HTTP)、ベアラー認証、DNS リバインディング対策、結果のレンダリング)と、小規模で差し替え可能な検索インターフェースです。
このリポジトリに含まれないもの: 検索エンジンと文書コーパスです。文書の解析、チャンク分割、埋め込み、ランキングを行う仕組みと、ライセンス対象のソース資料は、
SearchBackendのインターフェースの先にあり、ホスト型エンドポイントhttps://mcp.byteask.ai/mcpを支えています。このリポジトリには、サーバーをすぐに実行できるよう、例示用の公開情報レコードをいくつか含むメモリー内のSampleBackendが同梱されています。
理由
- 引用がなければ、何も返しません。 ヒットした場合は、セクションとページの引用を含む原文をそのまま返します。見つからない場合は、正直に「確実に一致するものはありません」と返し、レジスタ値を決して捏造しません。
- コーディングエージェント向けに設計されています。 ツールの説明とトリガーは、エージェントが16進リテラル、Modbus コード、IEEE 条項、SCPI 動詞、MCU 型番を見つけたら、記憶に基づいて回答する前に、反射的に
search_docsを呼び出すよう調整されています。 - 2つのトランスポート、1つのサーバー。 ローカルエージェントには
stdio、ホスト型には Streamable HTTP を使用します。 - 検索機能を自由に差し替えられます。 検索エンジンは2つのメソッドからなるインターフェースです。サーバーを変更せずに、
BYTEASK_BACKENDの先に任意の実装を接続できます。 - セットアップ不要のデモ。 同梱の
SampleBackendはすぐに動作します。API キーは不要です。
クイックスタート
Python ≥ 3.10 と uv が必要です。
uv sync
uv run byteask-embedded-mcp # run as an MCP server (stdio)
これで完了です。同梱の SampleBackend は例示用のレコードをいくつか提供するため、search_docs をすぐに使えます。オフラインテストは uv run pytest で実行できます。
クライアントの接続
ホスト型(インストール不要)
ホスト型サーバーは https://mcp.byteask.ai/mcp で Streamable HTTP を提供し、
ライセンス済みコーパス全体をバックエンドに使用しています。
Claude Code:
claude mcp add --transport http byteask-embedded-docs https://mcp.byteask.ai/mcp
Codex、Cursor、その他のクライアント(mcp-remote)
{
"mcpServers": {
"byteask-embedded-docs": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://mcp.byteask.ai/mcp"]
}
}
}
ローカル(このリポジトリ)
プロジェクトスコープの .mcp.json には、これを読み込むクライアント向けに stdio サーバーが登録されています。Claude Code で手動設定する場合:
claude mcp add byteask-embedded-docs -- uv run byteask-embedded-mcp
ツール
入力は自然言語(または正確な識別子)です。出力は簡潔な Markdown です。
| ツール | 機能 |
|---|---|
search_docs(query, limit=8) | コーパスを検索し、ページ引用付きの関連度順の根拠を返します。各結果には、ドキュメントのタイトル、セクションとページの引用、原文そのままの抜粋、result_id が含まれます。「確かな一致なし」という応答は、見つからなかったという意味です。捏造しないでください。 |
get_context(result_id) | 検索結果を、その出典となるセクション全体に展開します。 |
request_document(request) | 追加が必要なドキュメントをリクエストします(サーバー側に記録されます)。 |
出力例:
## Results for "what Modbus function code writes multiple registers"
### Sample — Modbus Application Protocol (illustrative) — §6.12, p.30
> Function code 16 (0x10), Write Multiple Registers, writes a block of contiguous
> holding registers (1 to 123 registers) in a remote device. ...
_ref: sample:modbus-fc16_
独自の検索機能を接続する
サーバーが依存するのは、2 つのメソッドを持つインターフェース
(backend.py)だけです。
class SearchBackend(Protocol):
def search(self, query, limit=8, effort=None) -> dict: ...
def get_context(self, result_id, effort=None) -> dict: ...
これを実装して、ファクトリー make_backend(config) -> SearchBackend を公開し、
サーバーの接続先を設定します。
BYTEASK_BACKEND="my_pkg.my_module:make_backend"
戻り値の正確な契約については、backend.py の冒頭に記載されています。
設定
すべての設定は環境変数です(.env から読み込まれます。 .env.example を参照)。
| 変数 | デフォルト | 備考 |
|---|---|---|
BYTEASK_BACKEND | — | SearchBackend を返す module:callable。空の場合 → SampleBackend |
BYTEASK_LOGS | logs | クエリ/リクエストの JSONL ログの保存先 |
MCP_TRANSPORT | stdio | stdio(ローカルエージェント)または http |
MCP_HTTP_HOST / MCP_HTTP_PORT | 127.0.0.1 / 8000 | HTTP バインドアドレス |
MCP_HTTP_AUTH_TOKEN | — | HTTP 用ベアラートークン(空の場合は認証なし。開発時のみ) |
MCP_ALLOWED_HOSTS | — | Host ヘッダーで許可するホスト(カンマ区切り。* で無効化) |
LOG_LEVEL | INFO | stderr に出力するログの詳細度 |
HTTP 経由で実行する
MCP_TRANSPORT=http MCP_HTTP_AUTH_TOKEN=$(openssl rand -hex 32) \
uv run byteask-embedded-mcp --host 0.0.0.0 --port 8000
クライアントは Authorization: Bearer <token> を送信します。同梱のベアラー認証チェックは共有シークレットを使う スタブ です。一般公開する前に、実際の認証(OAuth 2.1 リソースサーバー、mTLS、または信頼できるリバースプロキシ)に置き換えてください。DNS リバインディング対策は、MCP_ALLOWED_HOSTS によって独立して有効なままです。
ホスト型サーバー
ByteAsk Embedded Docs を使うために、何かを実行する必要はありません。ホスト型サーバーを使えば、Claude Code、Codex、Cursor、および任意の MCP クライアントで、組み込みドキュメントやファームウェアのリファレンスドキュメントから正確なページ引用付きの情報を取得できます。対象には、レジスターマップ、プロトコルの関数コード、SCPI コマンド、標準のしきい値、データシートの仕様が含まれます。保証するのは、出典の原文そのまま、または「一致なし」です。値を捏造することはありません。
| 名前 | byteask-embedded-docs |
| エンドポイント | https://mcp.byteask.ai/mcp(Streamable HTTP) |
| ドキュメントとクライアント別の設定 | https://docs.byteask.ai/embedded |
このリポジトリは、そのエンドポイントを支えるオープンソースサーバーです。
プロジェクト構成
src/byteask_embedded_mcp/
server.py # FastMCP app + 3 tools (search_docs, get_context, request_document)
backend.py # SearchBackend protocol + in-memory SampleBackend (swap for real retrieval)
render.py # structured result -> compact markdown
http_auth.py # Streamable HTTP entrypoint + stub bearer-token guard
config.py # server config (transport, logging, backend selection)
schemas.py # Hit / Section result types
obs.py # per-call JSONL logging
tests/ # offline unit tests (renderer, backend, server tools)
assets/ # README demo GIF + its deterministic generator
セキュリティ
- stdio モードでは stdout をクリーンな状態に保ちます(JSON-RPC チャネルとして使用するため)。すべてのログは stderr/
logs/*.jsonlに出力されます。 - HTTP の ベアラー認証チェックはスタブです。トークンが設定されていない場合は認証なし、設定されていても共有シークレットによる認証がせいぜいです。広く公開する前に強化してください。
- HTTP トランスポートでは DNS リバインディング対策 がデフォルトで有効です。
貢献
PR と Issue を歓迎します。
uv sync # install (incl. dev tools)
uv run pytest # run the offline test suite
サーバーをクリーンに保つための規約をいくつか示します。
- バックエンドとの境界が拡張ポイントです。 検索の内部処理(解析、チャンク分割、埋め込み、ランキング)は意図的に対象外としています。これらはこのリポジトリではなく、ご自身のパッケージで
SearchBackendの背後に実装してください。 - 依存関係を最小限に抑え、stdio の経路に HTTP スタックを含めないでください。
- 新しい動作にはテストを追加してください。テストスイートは完全にオフラインで動作します(ネットワークもキーも不要です)。
ライセンス
MIT © ByteAsk
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。