使用说明
MCP客户端
用于本地MCP演示的Chainlit UI客户端。它通过stdio连接到MCP服务器, 将发现的工具传递给与OpenAI兼容的聊天模型,并呈现 在浏览器中逐步重新执行工作流。
此回购针对的是兄弟 ../mcp-server ArXiv Insight演示服务器。
chainlit-mcp-client 是同一远程和当前的另一个工作副本
包含其他本地重构工作。
需求
- Python 3.12+
uv- 用于完整UI演示的LM Studio或其他与OpenAI兼容的API
- API端点支持OpenAI样式工具调用的模型
Ollama不是必需的。遗产 OLLAMA_* 变量仍然支持作为
现有设置的回退。
安装
uv sync --frozen
复制 .env.example 到 .env 并为您的后端进行更新。
LLM后端配置
新的设置应该使用通用的OpenAI兼容变量:
LLM_BASE_URL=http://localhost:1234/v1
LLM_API_KEY=lm-studio
LLM_MODEL=google/gemma-4-e4b
读取优先级:
LLM_BASE_URL,LLM_API_KEY,LLM_MODELOLLAMA_HOST,OLLAMA_KEY,OLLAMA_MODEL- LM Studio样式默认值:
http://localhost:1234/v1,lm-studio,google/gemma-4-e4b
google/gemma-4-e4b 是此LM Studio显示的当前模型标识符
本地服务器。如果加载其他模型,请使用LM显示的标识符
Studio本地服务器。
运行时模型选择
当Chainlit启动时,UI显示 LM工作室模型 聊天中的选择器 设置。模型列表从配置的 OpenAI兼容端点:
GET http://localhost:1234/v1/models
启动默认值保持不变 LLM_MODEL=google/gemma-4-e4b.选择另一个
模型仅更改当前Chainlit会话;它不会编辑 .env.
对于LM Studio,客户端还从
LLM_BASE_URL例如:
http://localhost:1234/v1 -> http://localhost:1234/api/v1
当本机API可用时,切换模型会尝试卸载
在加载所选模型之前,先加载当前已加载的模型。这是LM
工作室特定。其他兼容OpenAI的后端可能只支持 /v1/models;
在这种情况下,UI会继续工作,在可能的情况下更新运行时模型,以及
如果加载失败,则要求您在LM Studio中手动切换模型。
MCP服务器配置
客户阅读 mcp.json 从repo根目录。默认的本地演示配置为:
{
"mcpServers": {
"arxiv-insight": {
"command": "uv",
"args": ["--directory", "../mcp-server", "run", "main.py"]
},
"fetch": {
"command": "uvx",
"args": ["mcp-server-fetch"]
}
}
}
这 fetch 服务器是可选的,第一次可能需要网络访问
uvx 安装它。
A.没有LM Studio的本地验证
这些检查不需要Ollama、LM Studio或任何LLM后端:
uv sync --frozen
uv run python scripts\smoke_test.py
uv run python scripts\mcp_integration_test.py
烟雾测试验证:
mcp.json指向兄弟姐妹../mcp-server.- 配置的服务器目录存在。
LLM_*默认值有效。OLLAMA_*回退仍然有效。LLM_*当新变量和遗留变量都设置时获胜。
MCP集成测试启动兄弟 ../mcp-server 通过stdio
命令已配置 mcp.json它验证协议级连接,
tools/list, tools/call health_check, resources/list,以及 prompts/list.
它不需要LM Studio,也不调用arXiv或任何外部网络
服务。
如果集成测试失败,请检查 mcp.json,兄弟姐妹 ../mcp-server
首先确定服务器依赖关系、路径和服务器依赖关系。
通过这些检查并不意味着完整的Chainlit+LM Studio+MCP工具 调用demo已成功。
B.LM Studio的完整演示
此流程需要使用正在运行的LM Studio服务器进行手动验证:
-
打开LM工作室。
-
负载
google/gemma-4-e4b,或具有稳定工具调用的另一个可用模型。 -
启动LM Studio本地服务器/OpenAI兼容的API服务器。
-
确认端点,通常
http://localhost:1234/v1. -
集
.env:LLM_BASE_URL=http://localhost:1234/v1 LLM_API_KEY=lm-studio LLM_MODEL=google/gemma-4-e4b -
在
../mcp-server,跑uv run python scripts\smoke_test.py. -
在此仓库中,运行
uv run python scripts\smoke_test.py. -
启动Chainlit:
uv run main.py -
打开http://localhost:8000.
-
在Chainlit中,问:
Run health_check, then search for three recent papers about retrieval augmented generation.
预期成功行为:
- Chainlit启动并连接到已配置的MCP服务器。
- 资源列表显示
papers://recent从arxiv-insight. - 模型实际上调用
health_check. - 然后,模型调用
search_arxiv. - arXiv结果来自MCP工具输出,而不是模型发明引用。
此完整的端到端演示已在Windows上通过LM Studio Local进行了验证
服务器、Chainlit、MCP工具调用和兄弟 ../mcp-server.
验证基线:
- 端点:
http://localhost:1234/v1 - 型号标识符:
google/gemma-4-e4b - 显示的资源:
papers://recent - 成功的工具调用:
health_check那么search_arxiv
验证状态
- 本地静态/结构验证:可用。
- MCP服务器烟雾测试:可用
../mcp-server. - MCP客户端配置冒烟测试:此仓库中提供。
- 完整Chainlit+LM Studio+MCP工具调用演示:在Windows上验证。
目前的确切结论:
repos通过了不依赖于LLM后端的本地烟雾测试。这 完整的Windows+LM Studio+Chainlit+MCP工具调用流程也已完成 手动验证
google/gemma-4-e4b在http://localhost:1234/v1.
故障排除
未安装Ollama
这不是问题。建议的设置是LM Studio或其他
OpenAI兼容端点。 OLLAMA_* 变量只是遗留的后备方案
设置。
用途:
LLM_BASE_URL=http://localhost:1234/v1
LLM_MODEL=<LM Studio model identifier>
LM Studio服务器未运行
症状:
connection refused- Chainlit启动,但模型没有响应
- 演示提示从不触发工具调用
修复:
- 打开LM工作室。
- 加载模型。
- 启动本地服务器。
- 确认端口和URL。
- 制造
.envLLM_BASE_URL匹配LM Studio服务器URL。
型号名称不匹配
症状:
model not found- API表示该模型不可用
- Chainlit无法获得模型响应
修复:
- 检查LM Studio本地服务器中的实际模型标识符。
- 集
.envLLM_MODEL到那个确切的标识符。 - 不要假定README示例名称是API标识符。
型号列表为空
症状:
- Chainlit型号选择器仅显示
.env违约。 /v1/models失败或不返回模型ID。
修复:
- 确认LM Studio本地服务器正在运行。
- 打开
http://localhost:1234/v1/models并验证它是否返回模型ID。 - 如果API暂时不可用,请继续使用默认模型。
模型卸载失败
症状:
- UI报告卸载当前模型失败。
- 所选模型未加载。
修复:
- 检查LM Studio是否通过其本机公开加载的模型实例ID API
- 在LM Studio中手动卸载模型,然后重试。
- 如果VRAM仍满,请关闭其他加载的模型或重新启动LM Studio 本地服务器。
模型加载失败
症状:
- UI报告加载所选模型失败。
- 会话继续使用之前的模型。
修复:
- 确认所选模型已安装并可在LM Studio中加载。
- 检查可用VRAM。
- 请先尝试在LM Studio中手动加载模型。
LM Studio本机API不可用
症状:
- 模型选择器工作,但UI显示本机卸载/加载不可用。
修复:
- 这适用于非LM Studio OpenAI兼容的后端。
- 对于LM Studio,确认您的版本是否公开
http://localhost:1234/api/v1. - 如果本机模型管理不可用,请在LM Studio中手动切换模型 然后在Chainlit中选择匹配模型。
模型不可靠地支持工具调用
症状:
- Chainlit返回普通文本,但不调用MCP工具。
health_check未被触发。- 该模型声称它在没有工具输出的情况下搜索论文。
- arXiv的结果看起来是虚构的。
修复:
- 跑
uv run python scripts\smoke_test.py在这个回购和../mcp-server. - 确认客户端将MCP工具作为OpenAI兼容的工具定义公开。
- 尝试另一个具有更强工具调用支持的LM Studio模型。
- 将工具调用成功视为取决于模型能力、LM Studio端点支持和客户端实现。
LM工作室报告 Model reloaded
症状:
400 - {'error': 'Model reloaded.'}
当LM Studio重新加载所选模型时,这种情况可能会短暂发生。等待 模型完成加载,然后重试相同的提示。
获取服务器资源警告
症状:
Error listing resources from fetch: Method not found
这是一个非阻塞警告。可选 fetch 服务器不公开MCP
资源,因此该服务器的资源列表可能会失败,而 arxiv-insight
服务器仍然工作。
health_check 有效但arXiv搜索失败
这通常意味着MCP服务器正在运行。问题更可能是网络 连接、arXiv API可用性、查询参数或其他外部 服务问题。
检查 health_check 先测试 search_arxiv 通过一个小查询和
max_results.
内存在运行之间承载上下文
设置:
MEMORY_ENABLED=false
或者如果启用了内存,则使用隐身设置。
演示失败日志检查表
如果完整演示失败,请收集:
- 链式终端输出或
.demo-logs输出。 - LM Studio本地服务器日志。
- 非敏感
.env值:LLM_BASE_URL,LLM_MODEL,以及是否LLM_API_KEY已设置。 mcp.json.- Chainlit是否显示
papers://recent. - 是否
health_check和search_arxiv显示为实际的工具调用。 - 确切的错误消息。
不要粘贴真正的API密钥、令牌或私人凭据。