本地LLM命令行客户端

一个通过Ollama运行本地LLM的命令行聊天客户端,支持与多个MCP服务器交互,适用于需要离线AI工具调用的开发场景。

  • by Nagharjun17
  • Python
  • 本地部署
  • 8 星标
  • 更新于
在 GitHub 查看 Nagharjun17/MCP-Ollama-Client

使用说明

MCP Ollama客户

小型命令行聊天客户端

  1. 通过Ollama与当地LLM完全离线运行
  2. 与任意数量的模型上下文协议(MCP)服务器对话,全部声明在一个 config.json

在启动时,客户端启动每个服务器,获取它们的工具模式,前缀工具名称(postgres.*, filesystem.*,…)并将合并后的列表提供给模型。 LLM决定为每个用户请求调用哪个服务器。


特性

功能 备注
本地LLM优先 默认型号为 qwen3:14b,但Ollama公开的任何函数调用模型都可以工作。不需要云键。
多服务器开箱即用 Postgres、文件系统或您自己的MCP服务器可以并行运行;所有定义见 config.json.
无碰撞工具名称 工具暴露在外 <server>.<tool> 所以名字永远不会冲突。

需求

组件 测试版本
Python ≥3.12
Ollama ≥0.8.0
MCP服务器 任何支持 标准 运输

快速启动

# 1. clone
git clone https://github.com/Nagharjun17/MCP-Ollama-Client.git
cd mcp-ollama-client

# 2. set up environment
uv venv
source .venv/bin/activate
uv pip sync pyproject.toml         # or: uv pip install -r uv.lock

# 3. pull a local model
ollama pull qwen3:14b

# 4. edit Model Name, DATABASE_URI etc. in config.json and download required MCP Servers. In my case:
uv pip install postgres-mcp

# 5. run
uv run client.py

启动日志示例:

🔌 Starting MCP server: postgres
🔌 Starting MCP server: filesystem
🛠️  Aggregated tools: ['postgres.list_schemas', 'filesystem.read_file', ...]
>>>

键入自然语言查询;模型将决定何时以及如何调用公开的工具。


config.json 格式

{
  "llm": {
    "model": "qwen3:14b",
    "temperature": 0.7,
    "max_tokens": 2048
  },

  "mcpServers": {
    "postgres": {
      "command": "postgres-mcp",
      "args": ["--access-mode=restricted"],
      "env": {
        "DATABASE_URI": "postgresql://user:pass@localhost:5432/db"
      }
    },

    "filesystem": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "/mnt/smbshare/"
      ]
    }
  }
}

钥匙在下面 mcpServers 成为前缀(postgres.*, filesystem.*).

每台服务器都以自己的方式启动 stdio 子流程。

无需触摸即可添加或删除服务器 client.py.

一切都是本地的,一切都可以在一个文件中配置。