Neuroverse について
Neuroverseは、自律型AIエージェント向けのMCPサーバーで、多言語の意図処理、階層型メモリ、安全チェック、音声機能を統合します。モデルルーティングとエージェント間呼び出しも備え、継続的なコンテキスト管理やリスク制御に対応します。
主な機能
- 01多言語・コードスイッチ検出
- 02ルールによるフォールバック付き意図抽出
- 03短期・エピソード・意味メモリ
- 043層の安全チェック
- 05タスク別モデルルーティング
- 06Whisper文字起こしとCoqui音声合成
活用シーン
- 01インド諸語が混在する依頼の処理
- 02セッションをまたぐコンテキストの保存と呼び出し
- 03実行前の高リスク依頼のブロック
- 04タスクに応じたモデルの振り分け
MCP 対応
Neuroverseは標準的なstdio MCPサーバーです。リクエスト処理、推論、メモリの保存と呼び出し、安全チェック付き実行のツールをクライアントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
11掲載時のツール一覧 · 3 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| text | string | はい | ユーザーの生入力(タミル語+英語などのコードスイッチングを含む場合があります) |
| user_id | string | いいえ | ユーザー / エージェント識別子 |
| execute | boolean | いいえ | true の場合、安全性チェック後に抽出した意図も実行します |
詳細
🧠 NeuroVerse
📦 npm からインストール | 🐙 GitHub リポジトリ
お使いの AI エージェントは英語しか話せません。NeuroVerse がそれを解決します。
お使いの AI エージェントはすべてを忘れてしまいます。NeuroVerse が記憶します。
お使いの AI エージェントは危険なことをする可能性があります。NeuroVerse がそれを防ぎます。
お使いの AI エージェントは1つのモデルに固定されています。NeuroVerse が最適なモデルに振り分けます。
自律型 AI エージェントのための、多言語インテリジェンス+メモリ+安全性+音声レイヤー。
🚀 v4.1 の新機能
- OpenRouter の推論:高性能な分析タスク向けに、
stepfun/step-3.5-flash:freeモデルを統合しました。新しいneuroverse_reasonツールで深く考察できます。 - 推論トークン:すべてのリクエストで、推論トークンをリアルタイムに追跡します。
- 音声レイヤー(v2.0):Whisper STT と Coqui TTS を標準でサポートします。
🚀 NeuroVerse とは?
Cursor、VS Code Copilot、または MCP 対応の AI エージェントで新しいチャットを始めるたびに、毎回ゼロから始まります。記憶も、安全性も、ユーザーの言語への理解もありません。NeuroVerse は、エージェントに次の機能を提供する MCP サーバーです。
| 機能 | 説明 | |
|---|---|---|
| 🌐 | 多言語インテリジェンス | タミル語、ヒンディー語、テルグ語、カンナダ語、マラヤーラム語、ベンガル語と英語が混在した表現を理解します。言語を切り替えながら話しても問題ありません。 |
| 🎙️ | 音声レイヤー | Whisper による STT と Coqui による TTS に対応します。ユーザーの音声を文字起こしし、エージェントの応答を音声合成します。 |
| 🧠 | インテント抽出 | LLM を優先した構造化インテント抽出と、決定論的なルールベースのフォールバックを備えています。コマンドを見逃しません。 |
| 💾 | 階層型メモリ | 短期(セッション)、エピソード(最近の情報)、意味(長期的な事実)の各メモリを、重要度スコアリングとともに提供します。 |
| 🛡️ | 3層の安全機能(Kavach) | キーワードのブロックリスト → インテントのリスク分類器 → LLM 判定。手遅れになる前に DROP DATABASE をブロックします。 |
| 🤖 | マルチモデルルーター(Marga) | OpenAI · Anthropic · Sarvam AI · Ollama · OpenRouter — 各タスクを最適なモデルへ自動的に振り分けます。 |
| 🔗 | エージェント間連携(Setu) | 自動フォールバックを備えた REST+JSON エージェントレジストリです。エージェントがエージェントを呼び、そのエージェントがさらに別のエージェントを呼び出します。 |
| ⚡ | すべてが非同期 | FastAPI + asyncpg + httpx。サブミリ秒の安全性チェック。ブロッキングはゼロです。 |
⚡ NeuroVerse はモノリシックな製品ではなく、モジュール型のインテリジェンスレイヤーです。必要な機能を組み込み、不要な機能は使わずに済みます。
目次
- クイックスタート
- NeuroVerse を選ぶ理由
- 仕組み
- 多言語インテリジェンス(Vani)
- インテント抽出(Bodhi)
- 階層型メモリ(Smriti)
- 安全レイヤー(Kavach)
- マルチモデルルーター(Marga)
- エージェント間連携(Setu)
- MCP ツール
- REST API
- 設定
- テスト
- アーキテクチャ
- ロードマップ
- コントリビューション
🚀 クイックスタート
1. インストール
オプション A:npm(推奨)— どこでも使用可能
npm install neuroverse
オプション B:ソースからインストール(Python)
git clone https://github.com/joshua400/neuroverse.git
cd neuroverse
python -m pip install -e ".[dev]"
💡 ヒント: npm 経由でインストールした場合、パスは node_modules/neuroverse/dist/index.js です。ソースからの場合は、クローンしたディレクトリの絶対パスを使用してください。
2. MCP 設定に NeuroVerse を追加
NeuroVerse は標準的な MCP サーバー(stdio)です。ホストの設定に追加してください。
Cursor / VS Code Copilot / Claude Desktop(npm)
{
"mcpServers": {
"neuroverse": {
"command": "npx",
"args": ["neuroverse"]
}
}
}
ソースから(Python)
{
"mcpServers": {
"neuroverse": {
"command": "python",
"args": ["mcp/server.py"],
"cwd": "/path/to/neuroverse"
}
}
}
3. NeuroVerse を使うようエージェントに指示
エージェントのルールファイル(.md、.cursorrules、システムプロンプトなど)に次の内容を追加してください。
## NeuroVerse Integration
- Use `neuroverse_process` to handle any user request — it auto-detects language, extracts intent, checks safety, and executes.
- Use `neuroverse_reason` for complex tasks requiring analytical reasoning (powered by OpenRouter).
- Use `neuroverse_store` / `neuroverse_recall` for persistent context across sessions.
- Use `neuroverse_execute` for any potentially dangerous action — it will block destructive operations.
以上です。エージェントが把握しておく必要があるコマンドは 2 つだけです。
| コマンド | 使用するタイミング | 実行内容 |
|---|---|---|
neuroverse_process(text, user_id) | ユーザーからリクエストがあったとき | 言語を検出し、インテントを抽出して、安全性を確認したうえで実行します |
neuroverse_store(user_id, intent, ...) | 作業の終了時 | 次のセッションに備えてコンテキストを保存します |
次のセッションでは、エージェントはまるで忘れていなかったかのように、中断したところからそのまま再開できます。
要件
- npm 版: Node.js 18 以降(データベース依存なし — JSON ファイルを使用)
- Python 版: Python 3.10 以降 + PostgreSQL(永続メモリ用)
🤔 NeuroVerse を選ぶ理由
| NeuroVerse なし | NeuroVerse あり |
|---|---|
| エージェントが理解できるのは英語のみ | エージェントはタミル語、ヒンディー語、テルグ語、カンナダ語に加え、英語とのコードスイッチングも理解します |
"anna file ah csv convert pannu" → ❌ エラー | "anna file ah csv convert pannu" → ✅ ファイルを CSV に変換 |
| セッションを開始するたびにゼロから始まる | エージェントはセッションやエージェントをまたいで、実行した内容を記憶します |
DROP DATABASE → 💀 データが消失 | DROP DATABASE → 🛡️ 1 ミリ秒未満、トークン消費ゼロでブロック |
| 1 つの LLM プロバイダーに固定される | 各タスクに最適なモデルへ自動的にルーティング |
| 2 つのエージェントが混乱を招く | エージェント A からエージェント B へスムーズに引き継ぎ |
トークン効率
NeuroVerse の安全レイヤーは トークン消費ゼロ で動作します。純粋な正規表現とルールの照合を使用するため、LLM 呼び出しを無駄にしません。
| 安全性の方式 | チェックあたりのコスト | レイテンシ |
|---|---|---|
| LLM ベースの安全性チェック | 500~2,000 トークン | 1~5 秒 |
| 埋め込みベース | 100~500 トークン | 200~500ms |
| NeuroVerse Kavach | 0 トークン | < 1ms |
セッションあたり 100 回のツール呼び出しを行う場合、LLM ベースの安全性チェックと比べて 50,000~200,000 トークンを節約できます。
⚙️ 仕組み
User Input (any language)
│
┌────┴────┐
│ Vani │ ← Language detection + keyword normalisation
│ (भाषा) │ Tamil/Hindi/Telugu → normalised internal format
└────┬────┘
│
┌────┴────┐
│ Bodhi │ ← LLM intent extraction + rule-based fallback
│ (बोधि) │ Returns structured JSON with confidence
└────┬────┘
│
┌────┴────┐
│ Kavach │ ← 3-layer safety: blocklist → risk → LLM judge
│ (कवच) │ Blocks dangerous actions at zero token cost
└────┬────┘
│
┌────┴────┐
│ Marga │ ← Routes to best model (OpenAI/Anthropic/Sarvam/Ollama)
│ (मार्ग) │ Based on task type: multilingual/reasoning/local
└────┬────┘
│
┌────┴────┐
│ Smriti │ ← Stores/recalls from tiered memory
│ (स्मृति) │ Short-term + Episodic + Semantic (PostgreSQL)
└────┬────┘
│
Tool Execution + Response
🌐 多言語インテリジェンス — Vani
課題: MCP サーバーはどれも英語しか使えません。インドでは 70%の人が日常的にコードスイッチングを行っています。
"anna indha file ah csv convert pannu"
↓
"anna this file ah csv convert do" ← keyword normalisation (not full translation)
↓
Intent: convert_format { output_format: "csv" }
ハイブリッドパイプライン(ルール + LLM)
Input → Language Detect (langdetect) → Code-Switch Split → Keyword Normalise → Output
重要な洞察: すべてを翻訳するのではなく、ドメイン上重要なキーワードだけを正規化します。それ以外はそのままにし、コンテキスト、口調、ニュアンスを保ちます。
対応言語
| 言語 | 対応するキーワード | 例 |
|---|---|---|
| 🇮🇳 タミル語 | pannu → 実行、maathru → 変更、anuppu → 送信 | "file ah csv convert pannu" |
| 🇮🇳 ヒンディー語 | karo → 実行、banao → 作成、bhejo → 送信 | "report banao sales ka" |
| 🇮🇳 テルグ語 | cheyyi → 実行、pampu → 送信、chupinchu → 表示 | "data chupinchu" |
| 🇮🇳 カンナダ語 | v2 で対応予定 | — |
| 🇬🇧 英語 | そのまま処理 | "convert json to csv" |
コードスイッチングの検出
{
"languages": ["ta", "en"],
"confidence": 0.92,
"is_code_switched": true,
"original_text": "anna indha file ah csv convert pannu",
"normalized_text": "anna this file ah csv convert do"
}
🧠 インテント抽出 — Bodhi
LLM を優先。ルールベースのフォールバック。必ず動作します。
LLM succeeds (confidence ≥ 0.5)?
├─ Yes → use LLM result
└─ No → rule-based parser (deterministic)
LLM 戦略
# Prompt to LLM:
"Extract structured intent from the following input.
Return ONLY valid JSON: {intent, parameters, confidence}"
ルールベースのフォールバック(7 パターン)
| パターン | 意図 | トリガーキーワード |
|---|---|---|
| フォーマット変換 | convert_format | convert, csv, json, excel, pdf |
| 要約 | summarize | summarise, summary, brief, tldr |
| レポート生成 | generate_report | report, generate report |
| 削除 | delete_data | delete, remove, drop, clean |
| データクエリ | query_data | query, search, find, fetch, get |
| コミュニケーション | send_message | send, share, email, notify |
| 説明 | explain | explain, describe, what is, how to |
出力
{
"intent": "convert_format",
"parameters": { "input_format": "json", "output_format": "csv" },
"confidence": 0.87,
"source": "rule"
}
主な違いは、LLM ではなくコードが判断することです。LLM が失敗したり、幻覚を起こしたり、でたらめな結果を返したりした場合は、ルールエンジンが引き継ぎます。決定論的で、信頼性があります。
💾 階層型メモリ — Smriti
問題: 生のログには価値がありません。すべてを保存するとリソースを浪費します。関連性のスコアリングもありません。
NeuroVerse のアプローチ: スコアリング → フィルタリング → 圧縮 → 保存。
3 つの階層
| 階層 | 保存先 | 保存期間 | 用途 |
|---|---|---|---|
| 短期 | プロセス内の dict | 現在のセッション | アクティブなコンテキスト。ユーザーごとに最大 50 件 |
| エピソード | PostgreSQL | 最近のアクション | エージェントが最近実行したこと |
| セマンティック | PostgreSQL | 長期的な事実 | ユーザー、プロジェクト、エンティティに関する永続的な知識 |
重要度のスコアリング
if importance_score >= 0.4:
persist_to_database() # worth remembering
else:
skip() # noise
重要なメモリだけが残ります。肥大化せず、無関係な情報を想起することもありません。
コンテキストの圧縮
❌ Bad: "The user asked about sales data three times in the last hour and seemed frustrated..."
✅ Good: { "intent": "sales_query", "frequency": 3, "sentiment": "frustrated" }
生のテキストダンプではなく、構造化された JSON ペイロードです。圧縮され、インデックス化でき、クエリ可能です。
メモリスキーマ(PostgreSQL)
CREATE TABLE memory_records (
id TEXT PRIMARY KEY,
user_id TEXT NOT NULL,
tier TEXT NOT NULL, -- short_term | episodic | semantic
intent TEXT NOT NULL,
language TEXT DEFAULT 'en',
data JSONB DEFAULT '{}', -- compressed structured payload
importance REAL DEFAULT 0.5,
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
-- Indexed: user_id, intent, tier
🛡️ セーフティレイヤー — Kavach
「決して眠らない盾。」
3 層構成 — 多層防御
Agent calls tool → MCP Server receives request
│
┌───────────┴───────────┐
│ Layer 1: Blocklist │ ← regex + keywords, < 0.1ms
└───────────┬───────────┘
│ pass
┌───────────┴───────────┐
│ Layer 2: Risk Score │ ← intent → risk classification
└───────────┬───────────┘
│ pass
┌───────────┴───────────┐
│ Layer 3: LLM Judge │ ← optional model-based check
└───────────┬───────────┘
│ pass
Execute handler
レイヤー 1 — ルールベースのブロックリスト(コストゼロ)
MCP サーバー内で実行されます。純粋な正規表現で、ネットワークもトークンも不要です。
ブロックするキーワード:
delete_all_data, drop_database, drop_table, system_shutdown,
format_disk, rm -rf, truncate, shutdown, reboot, erase_all, destroy
ブロックするパターン(正規表現):
DROP (DATABASE|TABLE|SCHEMA)
DELETE FROM *
TRUNCATE TABLE
FORMAT [drive]:
rm (-rf|--force)
レイヤー 2 — 意図のリスク分類
| リスクレベル | 意図 | アクション |
|---|---|---|
| 🟢 低 | convert_format, summarize, generate_report, query_data, explain | ✅ 許可 |
| 🟡 中 | send_message, unknown | ⚠️ 厳格モードではブロック |
| 🔴 高 | delete_data | ❌ 常にブロック |
| ⛔ 重大 | drop_database, system_shutdown | ❌ 常にブロック |
レイヤー 3 — LLM セーフティ判定(任意)
レイヤー 1~2 を通過した場合、任意で LLM に尋ねます。「これは安全ですか?」
// LLM returns:
{ "safe": false, "reason": "This action would delete all user data." }
セーフティ判定
{
"allowed": false,
"risk_level": "critical",
"reason": "Blocked keyword detected: 'drop_database'",
"blocked_by": "rule"
}
トークンコスト:ゼロ
Most AI safety: Agent → "rm -rf /" → Safety LLM → 2,000 tokens burned
NeuroVerse: Agent → "rm -rf /" → regex match → BLOCKED (0 tokens, < 1ms)
厳格モード
# .env
SAFETY_STRICT_MODE=true # Also blocks MEDIUM risk (unknown/send)
SAFETY_STRICT_MODE=false # Only blocks HIGH and CRITICAL
🤖 マルチモデルルーター — Marga
問題: ベンダーロックイン。すべてに 1 つのモデルを使用。過剰な支払い。
NeuroVerse のアプローチ: タスクごとに最適なモデルへ自動的にルーティングします。
ルーティングロジック
def route_task(task):
if task.type == "multilingual":
return sarvam_model # Best for Indian languages
elif task.type == "reasoning":
return claude_or_openai # Best for complex analysis
elif task.type == "local":
return ollama # Free, on-device, private
else:
return best_available # Fallback chain
対応プロバイダー
| プロバイダー | デフォルトモデル | 最適な用途 | コスト |
|---|---|---|---|
| 🇮🇳 Sarvam AI | sarvam-2b-v0.5 | インドの言語、多言語対応 | 低 |
| 🧩 OpenRouter | stepfun/step-3.5-flash:free | 高性能な推論 | 無料 |
| 🧠 Anthropic | claude-sonnet-4-20250514 | 推論、分析 | 中 |
| 🤖 OpenAI | gpt-4o | 一般的なタスク、コード | 中 |
| 🦙 Ollama | llama3 | ローカル、プライベート、オフライン | 無料 |
メリット
| Marga なし | Marga あり | |
|---|---|---|
| コスト | すべてのタスクで GPT-4 に支払う | 単純なタスクには Ollama を使用 |
| 速度 | すべてのタスクで同じレイテンシ | 高速なタスクにはローカルモデルを使用 |
| プライバシー | すべてがクラウドへ送られる | 機密データはローカルに保持 |
| ベンダーロックイン | 1 つのプロバイダーに縛られる | いつでも切り替え可能 |
フォールバックチェーン
優先するプロバイダーが停止中、または設定されていない場合:
OpenRouter → Anthropic → OpenAI → Sarvam → Ollama (local, always available)
🔗 エージェント間通信 — Setu
エージェントがエージェントを呼び出し、さらにエージェントを呼び出します。
エージェントレジストリ
register_agent({
"agent_name": "report_agent",
"endpoint": "http://localhost:8001/generate",
"capabilities": ["generate_report", "sales_analysis"]
})
ルーティング
{
"target_agent": "report_agent",
"task": "generate_sales_report",
"payload": { "quarter": "Q1", "year": 2026 }
}
フォールバック
対象のエージェントに到達できない場合:
{
"success": false,
"error": "Agent unreachable: ConnectError",
"fallback": true
}
呼び出し元はローカル実行にフォールバックできます。致命的な失敗は起こりません。
🧩 MCP ツール
NeuroVerse は、Model Context Protocol を通じて9 個のツールを公開します。
| # | ツール(npm) | ツール(Python) | 説明 |
|---|---|---|---|
| 1 | neuroverse_process | india_mcp_process_multilingual_input | 全工程のパイプライン:検出 → 正規化 → インテント判定 → 安全性確認 → 実行 |
| 2 | neuroverse_store | india_mcp_store_memory | 階層型システムにメモリレコードを保存 |
| 3 | neuroverse_recall | india_mcp_recall_memory | ユーザー、インテント、または階層に基づいてメモリを取得 |
| 4 | neuroverse_execute | india_mcp_safe_execute | エンドツーエンドの安全な実行(便利機能) |
| 5 | neuroverse_route | india_mcp_route_agent | 登録済みの下流エージェントにタスクをルーティング |
| 6 | neuroverse_model | india_mcp_model_route | マルチモデルルーターに問い合わせ(任意で呼び出しも可能) |
| 7 | neuroverse_transcribe | india_mcp_transcribe_audio | Whisper STT を使って音声をテキストに書き起こし |
| 8 | neuroverse_synthesize | india_mcp_synthesize_speech | Coqui TTS を使ってテキストから音声を合成 |
| 9 | neuroverse_reason | N/A | OpenRouter を使った高性能な推論 |
実世界での例
── Session 1 (Agent Alpha, 2pm) ───────────────────────────
india_mcp_process_multilingual_input({
text: "anna indha sales data ah csv convert pannu",
user_id: "alpha",
execute: true
})
→ Language: Tamil+English (code-switched)
→ Intent: convert_format { output_format: "csv" }
→ Safety: ✅ allowed (LOW risk)
→ Execution: ✅ success
india_mcp_store_memory({
user_id: "alpha",
intent: "convert_format",
tier: "episodic",
data: { "file": "sales_q1.json", "output": "csv" },
importance_score: 0.8
})
── Session 2 (Agent Beta, next day) ───────────────────────
india_mcp_recall_memory({
user_id: "alpha",
intent: "convert_format",
limit: 5
})
→ "Agent Alpha converted sales_q1.json to CSV yesterday"
→ Beta picks up exactly where Alpha left off
🌐 REST API
NeuroVerse には、MCP 以外のクライアント向けの FastAPI REST レイヤーも含まれています。
python app/main.py
# → http://localhost:8000/docs (Swagger UI)
| エンドポイント | メソッド | 説明 |
|---|---|---|
/health | GET | ヘルスチェック |
/api/process | POST | 多言語パイプライン全体 |
/api/memory/store | POST | メモリを保存 |
/api/memory/recall | POST | メモリを呼び出し |
⚙️ 設定
すべての設定は環境変数(.env)で行います。
# Database (PostgreSQL required for persistent memory)
DATABASE_URL=postgresql+asyncpg://user:password@localhost:5432/neuroverse
# AI Model API Keys (configure the ones you have)
OPENAI_API_KEY=sk-...
ANTHROPIC_API_KEY=sk-ant-...
SARVAM_API_KEY=...
# Ollama (local, free)
OLLAMA_BASE_URL=http://localhost:11434
# Safety
SAFETY_STRICT_MODE=true # Block MEDIUM risk actions too
# MCP Transport
MCP_TRANSPORT=stdio # or streamable_http
MCP_PORT=8000
🧪 テスト
python -m pytest tests/ -v
tests/test_intent.py — 10 passed (rule-based + async + mock LLM + fallback)
tests/test_language.py — 10 passed (keyword normalisation + detection + code-switch)
tests/test_pipeline.py — 8 passed (full e2e: English, Tamil, Hindi, dangerous, edges)
tests/test_safety.py — 12 passed (blocklist, regex, risk classification, pipeline)
============================= 40 passed in 0.87s ==============================
テスト対象
| カテゴリ | テスト数 | カバレッジ |
|---|---|---|
| 言語検出 | 10 | タミル語、ヒンディー語、英語、空の入力、コードスイッチフラグ |
| インテント抽出 | 10 | 7 つのルールパターンすべて、LLM モック、LLM の失敗、空の入力 |
| 安全性エンジン | 12 | キーワード、正規表現、リスクレベル、パイプライン全体、厳格モード |
| パイプライン全体 | 8 | 英語・タミル語・ヒンディー語の E2E、危険なコマンド、エッジケース |
🏗️ アーキテクチャ
npm 版(Node.js / TypeScript)
npm/
├── src/
│ ├── core/
│ │ ├── language.ts # Vani — Language detection (zero deps)
│ │ ├── intent.ts # Bodhi — Intent extraction (LLM + fallback)
│ │ ├── memory.ts # Smriti — Tiered memory (JSON files)
│ │ ├── safety.ts # Kavach — 3-layer safety engine
│ │ └── router.ts # Marga — Multi-model AI router
│ ├── services/
│ │ ├── executor.ts # Tool registry + retry engine
│ │ └── agent-router.ts # Setu — Agent-to-Agent routing
│ ├── types.ts # TypeScript interfaces & enums
│ ├── constants.ts # Shared constants
│ └── index.ts # MCP Server — 6 tools (McpServer + Zod)
├── package.json # npm publish config
├── tsconfig.json
└── LICENSE # Apache-2.0
Python 版
app/
├── core/
│ ├── language.py # Vani — Language detection (langdetect)
│ ├── intent.py # Bodhi — Intent extraction (LLM + fallback)
│ ├── memory.py # Smriti — Tiered memory (PostgreSQL)
│ ├── safety.py # Kavach — 3-layer safety engine
│ └── router.py # Marga — Multi-model AI router
├── models/schemas.py # 12 Pydantic v2 models
├── services/
│ ├── executor.py # Tool registry + retry engine
│ └── agent_router.py # Setu — Agent-to-Agent routing
├── config.py # Settings from environment
└── main.py # FastAPI REST entry point
mcp/server.py # MCP Server (FastMCP) — 6 tools
tests/ # 40 tests (pytest)
依存関係 — 最小限
npm(3 パッケージ):
| パッケージ | 用途 |
|---|---|
@modelcontextprotocol/sdk | MCP プロトコル |
zod | スキーマ検証 |
axios | HTTP リクエスト |
Python(7 パッケージ):
| パッケージ | 用途 |
|---|---|
mcp[cli] | Model Context Protocol SDK |
fastapi + uvicorn | REST API レイヤー |
pydantic | 入力検証(v2) |
langdetect | 統計的な言語識別 |
asyncpg + sqlalchemy[asyncio] | PostgreSQL 非同期ドライバー |
httpx | モデル API 用の非同期 HTTP |
🚀 ロードマップ
| フェーズ | ステータス | 内容 |
|---|---|---|
| v1.0 | ✅ 完了 | 多言語解析 + インテント抽出 + 5 個のツール |
| v1.0 | ✅ 完了 | 階層型メモリシステム(PostgreSQL) |
| v1.0 | ✅ 完了 | 3 層の安全性エンジン(Kavach) |
| v1.0 | ✅ 完了 | マルチモデルルーター(Marga)+ エージェントルーティング(Setu) |
| v2.0 | ✅ 完了 | 音声レイヤー(Whisper/Coqui)+ 多言語対応の拡張 |
| v3.0 | ✅ 完了 | Redis キャッシュ + 埋め込みベースのセマンティック検索 |
| v4.0 | ✅ 完了 | 強化学習(RLHF)+ Arachne コンテキストインデックス |
| v4.1 | ✅ 完了 | OpenRouter 推論レイヤーの統合 |
| v5.0 | 🔮 将来 | エージェントマーケットプレイスと外部システムプラグイン |
🔐 セキュリティ
| 対策 | 実装 |
|---|---|
| API キー管理 | 環境変数のみで管理 — コードには記載しません |
| 入力サニタイズ | すべての入力にフィールド制約を設定した Pydantic v2 |
| レート制限 | v2.0 で予定 |
| パストラバーサル | 該当なし — ツールはファイルシステムにアクセスしません |
| SQL インジェクション | SQLAlchemy によるパラメーター化クエリ |
| 暗号化ストレージ | PostgreSQL TLS に委任 |
🤝 貢献
貢献を歓迎します!始め方は次のとおりです。
- リポジトリをフォークします
- フィーチャーブランチを作成します(
git checkout -b feature/amazing-feature) - 変更をコミットします(
git commit -m 'feat: add amazing feature') - ブランチにプッシュします(
git push origin feature/amazing-feature) - プルリクエストを作成します
開発環境のセットアップ
# npm edition
git clone https://github.com/joshua400/neuroverse.git
cd neuroverse/npm
npm install
npm run build
# Python edition
cd neuroverse
python -m pip install -e ".[dev]"
python -m pytest tests/ -v # All 40 should pass
📜 ライセンス
Apache-2.0
「セッションのたびにエージェントがすべてを忘れ、タミル語をまったく理解できないのを見るのがつらくて、NeuroVerse を作りました。」
Joshua Ragiland M
✉️ [email protected]
🌐 ポートフォリオサイト
明日のエージェントのために、Joshua が 🧠 を込めて開発しました。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。