Skip to main content
Glama
tsxk1san

localllm-MCP

by tsxk1san

ローカルAIチャット — 社内ファイルを触れるAIアシスタント

会社のPCの中だけで動く、ファイルを「読む・探す・直す」AI。 ChatGPTのような画面で使えます。 入力した内容やファイルは 外部(インターネット)に送られません。AIも検索も全部このPC/サーバーの中で完結します。

ひとことで言うと:社外に出せないデータでも安心して使える、自前のChatGPTです。


👤 はじめての方へ(非エンジニア向け・まずここだけ)

これは何がうれしいの?

  • 世の中のAIサービス(ChatGPTやCopilotなど)は、質問やファイルを その会社のサーバーに送って 処理します。

  • このツールは AIまるごと自分のPC/社内サーバーに置く ので、データが外に出ません。

  • しかも、ただ会話するだけでなく 指定したフォルダのファイルを読んだり・検索したり・書き換えたり できます。

Related MCP server: MCP Local LLM Server

仕組み(ざっくり3つの部品)

  あなた ──▶  [チャット画面] ──▶ [AI本体]
                    │                (Ollama=ローカルAI)
                    ▼
              [ファイル係] ──▶ 指定フォルダの中だけを操作
              (読む・探す・直す)
  • チャット画面(Open WebUI)… ブラウザで使うChatGPT風の画面

  • AI本体(Ollama)… ネットにつながず動くAI

  • ファイル係(MCPサーバー)… AIの代わりにフォルダを触る係。触れる範囲は決めたフォルダの中だけ。

この3つを、下の手順で まとめて一発で立ち上げられる ようにしてあります。


1. 準備するもの(1つだけ)

Docker Desktop(無料)をインストールするだけです。 → https://www.docker.com/products/docker-desktop/

  • インストールしたら Docker Desktop を起動しておいてください(クジラのアイコンが出ればOK)。

  • 目安:メモリ8GB以上のPCを推奨。AIモデルのダウンロードで数GBの通信・空き容量が必要です。

2. 起動する

  • Windowsの人start.batダブルクリック

  • Mac / Linuxの人:ターミナルでこのフォルダに入って docker compose up -d

しばらく待つと、ブラウザで http://localhost:3000 が開きます(自動で開かなければ手で開いてください)。 最初に アカウント作成 の画面が出ます。名前・メール・パスワードを入れて登録してください。 (これは このPCの中だけの登録 で、どこにも送信されません。最初に登録した人が管理者になります。)

3. 最初の1回だけの準備

初回だけ、2つの設定をします。(2回目以降は不要です)

(A) AIモデルを取り込む

AIの「頭脳」にあたるデータをダウンロードします。

  • Windowspull-model.batダブルクリック(数GB・少し時間がかかります)。

  • 手動でやる場合:docker compose exec ollama ollama pull qwen2.5:7b

qwen2.5:7b はファイル操作(ツール使用)が得意なモデルです。まずはこれで。

(B) ファイルを触れるようにする(ツール接続)

チャット画面の 設定(Settings)→ ツール(Tools/外部ツール) を開き、 「+(サーバーを追加)」 から次のアドレスを入力して保存します:

http://mcpo:8000

うまくつながらない場合は http://localhost:8000 を試してください。

これで、AIがファイル係を呼び出せるようになります。

4. 使ってみる

チャット画面の上で モデルに qwen2.5:7b を選び、メッセージ欄の ツール(レンチ/+アイコン)をオンにして、話しかけます。 最初は付属の「サンプル」フォルダで試せます:

  • sample プロジェクトのファイル一覧を見せて

  • hello.py を読んで、greet 関数の挨拶を英語に直して

  • 経費の申請期限は?」(← 付属の資料を検索して答えます)

うまくいくと、AIが裏でファイルを開いたり書き換えたりして返事します。

モデル選びのめやす:まずは qwen2.5:7b(軽くてツール操作が安定)。ファイルの読み取り・検索は得意です。 複雑な複数手順の編集をもっと安定させたい場合はより大きいモデル(例 qwen2.5:14b)も使えますが、 大きいモデルは 新しめのGPUドライバが必要なことがあります(古いと起動時にエラーになる)。 GUIならモデルは画面上でいつでも切り替えられるので、まず7bで試すのがおすすめです。

5. 自分の会社のファイルで使う

workspace フォルダが、AIが触れる範囲です。中は2つに分かれています:

フォルダ

役割

入れるもの

workspace/apps/

編集してほしいファイル

プログラム、原稿、設定ファイルなど

workspace/docs/

検索したい資料

規程、マニュアル、PDF、議事録など

  • それぞれの中に プロジェクト名のフォルダ(例:workspace/apps/keiri/…)を作って入れてください。

  • 別の場所のフォルダをまるごと使いたい場合は、docker-compose.yml./workspace を そのフォルダのパスに書き換えます(分からなければエンジニアに依頼を)。

  • 書き換え前のファイルは自動で .backups に退避されますが、大事なデータは別途バックアップを取ってください。

6. 終了 / 再開

  • 終了stop.bat をダブルクリック(または docker compose down)。

  • 再開start.bat。会話履歴も取り込んだモデルも残っています。

7. 困ったとき

こまりごと

対処

画面が開かない

Docker Desktop が起動しているか確認 → もう一度 start.bat

AIがファイルを触ってくれない

モデルが qwen2.5:7b か確認 / 手順3(B)のツール接続ができているか / メッセージ欄でツールをオンに

ツール接続がつながらない

URLを http://localhost:8000 に変えて再登録

返事が遅い

初回はモデル読み込みで遅い。PCの性能にも依存します

返事が文字化けする・急に不安定

一度 Ollama を再起動(大きいモデルがGPUでクラッシュした後などに起きることあり)。その後は軽いモデル(qwen2.5:7b)で

大きいモデルが起動時にエラー(CUDA等)

GPUドライバ/Ollamaを最新に更新するか、qwen2.5:7b を使う

「経費は?」等で資料が出ない

会話で「資料を読み込み直して」と頼む(インデックス更新が走ります)


🛠 開発者向け(技術詳細)

アーキテクチャ

[ユーザー] → [Open WebUI(GUI)] → [Ollama(ローカルLLM)]
                   │  OpenAPI(tool)
                   ▼
              [mcpo] ──stdio──> [unified_mcp_server.py (MCPサーバー/ツール群)]
                                        │
                                        ▼
                                 workspace/ (apps=編集 / docs=RAG)
  • unified_mcp_server.py … ツールを公開する MCPサーバー。自分ではLLM APIを呼ばない(埋め込み=RAGもローカル計算)。

  • mcpo … MCPサーバーを OpenAPI に変換し、Open WebUI から呼べるようにする橋渡し。

  • ollama_agent.py … GUIを使わず CLIでツールを回す開発用ホスト(Open WebUIの代わり)。

  • 「どのLLMを使うか」を決めるのは接続する側。Claude Desktop から使うことも可能(後述)。

起動モードまとめ

目的

コマンド

GUI(ブラウザ)で使う

docker compose up -dhttp://localhost:3000

CLIで使う(開発用)

docker compose run --rm agent

Dockerなしローカル実行

下記「ローカル実行」

ローカル実行(Dockerなし)

python -m venv .venv
# Windows: .venv\Scripts\activate  /  macOS/Linux: source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env

# 前提: ollama serve が起動し、tool対応モデルを pull 済み(例: ollama pull qwen2.5:7b)
python ollama_agent.py                       # 対話
python ollama_agent.py --once "sampleの一覧"   # 単発

# GUIを使いたい場合(mcpo単体起動):
mcpo --port 8000 -- python unified_mcp_server.py

Claude Desktop から使う(Ollama不要)

claude_desktop_config.json:

{
  "mcpServers": {
    "unified-mcp": {
      "command": "python",
      "args": ["/absolute/path/to/unified_mcp_server.py"],
      "env": { "WORKSPACE_ROOT": "/path/to/workspace", "ENABLE_RAG": "1" }
    }
  }
}

設定(環境変数 / .env)

変数

既定

説明

WORKSPACE_ROOT

./workspace

触らせるフォルダ。直下に apps/docs/

CHROMA_DB_DIR

<root>/.chroma_db

ベクタDBの保存先

ENABLE_RAG

1

0 で意味検索を無効化(重い依存を読み込まない)

EMBED_MODEL

intfloat/multilingual-e5-large

埋め込みモデル

OLLAMA_HOST

http://localhost:11434

Ollamaのendpoint(Docker内は http://ollama:11434

OLLAMA_MODEL

qwen2.5:7b

使うローカルモデル(tool対応必須)

MAX_TOOL_ITERATIONS

12

1発話あたりのツール呼び出し上限

WORKSPACE_CONFIG

./workspace_config.json

追加設定JSON(任意)

workspace_config.json(任意)で apps_only_projects(RAG不要プロジェクト)と extra_rag_paths(docs以外の追加RAG対象)を指定できます。

提供ツール一覧

  • ファイル操作: list_projects list_files read_file read_file_lines write_file patch_file search_in_files

  • 意味検索(RAG): search_docs read_document read_pages list_docs refresh_database check_update_status

  • コード解析(tree-sitter): find_symbol find_references read_symbol index_symbols(MATLAB追加のみ requirements-symbols.txt

  • 検証: list_checks run_checkmcp_checks.json で定義したコマンドのみ実行可)

ツールを増やす

unified_mcp_server.py に関数を足して @mcp.tool() を付けるだけ。docstringと型ヒントがそのまま LLM向けの説明・引数スキーマになります。GUI(mcpo経由)・CLI・Claude Desktop の全部に自動反映されます。

@mcp.tool()
def word_count(project: str, filepath: str) -> str:
    """指定ファイルの単語数を返す。"""
    root, target = _resolve_apps(project, filepath)   # rootの外へ出さない安全解決
    text, err = extract_text(str(target))
    return err or json.dumps({"words": len(text.split())}, ensure_ascii=False)

セキュリティ設計

  • 外部送信なし:LLMも埋め込みもローカル。データは WORKSPACE_ROOT の外に出ない。

  • パス閉じ込め:全ツールが root 配下に解決を強制(../ 脱出を拒否)。

  • 秘密の保護.env* は読み取り・検索の対象外。

  • 編集の可逆性write_file/patch_file.backups/ に自動退避してから書く。

  • 任意コマンド実行なしrun_checkmcp_checks.json の事前定義コマンドのみ。

フォルダ構成

localllm-MCP/
├─ start.bat / start.sh / stop.bat / pull-model.bat   # 非エンジニア向けワンクリック
├─ docker-compose.yml         # ollama + mcpo + open-webui (+ 開発用agent)
├─ Dockerfile
├─ unified_mcp_server.py      # MCPサーバー本体(ツール群)
├─ ollama_agent.py            # CLIホスト(開発用)
├─ workspace/                 # 触らせる対象(サンプル同梱)
│  ├─ apps/sample/            #   編集対象
│  └─ docs/sample/            #   RAG対象
├─ requirements.txt / requirements-symbols.txt
├─ .env.example / workspace_config.json.example
└─ README.md

既存の社内向けMCPサーバー(特定フォルダの編集+ローカルRAG)を、ハードコードを排して環境変数化し、 ローカルLLM(Ollama)・GUI(Open WebUI)・Docker・非エンジニア向け手順を付けて配布可能にしたものです。

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    C
    quality
    D
    maintenance
    A privacy-first MCP server that provides local LLM-enhanced tools for code analysis, security scanning, and automated task execution using backends like Ollama and LM Studio. It enables symbol-aware code reviews and workspace exploration while ensuring that all code and analysis remain strictly on your local machine.
    36
    ISC
  • A
    license
    B
    quality
    C
    maintenance
    A local-first MCP server that provides AI agents with safe codebase access through file discovery, hybrid lexical-semantic search, and project introspection. It features durable local memory and semantic indexing while keeping all data and processing entirely on your local machine.
    74
    14
    6
    MIT