MCP Ollama客户
小型命令行聊天客户端
- 通过Ollama与当地LLM完全离线运行
- 与任意数量的模型上下文协议(MCP)服务器对话,全部声明在一个
config.json
在启动时,客户端启动每个服务器,获取它们的工具模式,前缀工具名称(postgres.*, filesystem.*,…)并将合并后的列表提供给模型。 LLM决定为每个用户请求调用哪个服务器。
______________________________________________________________________
特性
| 功能 | 备注 |
|---|---|
| 本地LLM优先 | 默认型号为 qwen3:14b,但Ollama公开的任何函数调用模型都可以工作。不需要云键。 |
| 多服务器开箱即用 | Postgres、文件系统或您自己的MCP服务器可以并行运行;所有定义见 config.json. |
| 无碰撞工具名称 | 工具暴露在外 . 所以名字永远不会冲突。 |
______________________________________________________________________
需求
| 组件 | 测试版本 |
|---|---|
| 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.*
一切都是本地的,一切都可以在一个文件中配置。
