☰
RAG本地部署方案
2026/9/30 18:03:39 网站建设 项目流程

软件版本:llama-b11243

使用 llamacpp + llmaindex + FastMCP + mcp-cross

appmcpserver.py

代码摘要:

if __name__ == "__main__":
transport = os.environ.get("MCP_TRANSPORT", "stdio")

if transport == "stdio":
mcp.run(transport="stdio")
else:
# 关键修改:stateless_http 通过 http_app() 传入,而不是 FastMCP()
# 这样每个请求都是独立的,不再需要 Mcp-Session-Id
# 解决 mcp-cross 桥接时的 "Session not found" 问题
import uvicorn

app = mcp.http_app(json_response=True,stateless_http=True)
uvicorn.run(
app,
host=os.environ.get("MCP_HOST", "127.0.0.1"),
port=int(os.environ.get("MCP_PORT", "8000")),
log_level="warning",
)

启动命令:

set MCP_TRANSPORT=streamable-http
set MCP_HOST=127.0.0.1
set MCP_PORT=8000
set PYTHONUTF8=1
set PYTHONIOENCODING=utf-8

python.exe .\appmcpserver.py

验证mcpserver启动是否成功:

Get-Content .\req.jsonl | cmd /c npx mcp-cross --debug --header "Accept: application/json, text/event-stream" --http http://127.0.0.1:8000/mcp --timeout 120000

返回:

{"jsonrpc":"2.0","id":2,"result":{"tools":[{"_meta":{"fastmcp":{"tags":[]}},"description":"从本地知识库检索与问题最相关 的文档片段。\n\n返回的是**原文片段**,不是生成的答案。请基于这些片段组织你的回答。","inputSchema":{"properties":{"query":{"type":"string","description":"用户问题或检索关键词。"},"top_k":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"返回的片段数量,默认使用服务器配置值。"}},"required":["query"],"type":"object","additionalProperties":false},"name":"query_knowledge_base","outputSchema":{"properties":{"result":{"type":"string"}},"required":["result"],"type":"object","x-fastmcp-wrap-result":true},"title":"Query Knowledge Base"},{"_meta":{"fastmcp":{"tags":[]}},"description":"检索知识库并返回带来源文件名的片段,便于溯源。","inputSchema":{"properties":{"query":{"type":"string","description":"用户问题或检索关键词。"},"top_k":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"返回的 片段数量。"}},"required":["query"],"type":"object","additionalProperties":false},"name":"query_with_sources","outputSchema":{"properties":{"result":{"type":"string"}},"required":["result"],"type":"object","x-fastmcp-wrap-result":true},"title":"Query With Sources"},{"_meta":{"fastmcp":{"tags":[]}},"description":"列出当前知识库目录下的所有文档文件。","inputSchema":{"properties":{},"type":"object","additionalProperties":false},"name":"list_documents","outputSchema":{"properties":{"result":{"type":"string"}},"required":["result"],"type":"object","x-fastmcp-wrap-result":true},"title":"List Documents"},{"_meta":{"fastmcp":{"tags":[]}},"description":"重建向量索引。上传/删除文档后调用此工具让改动生效。","inputSchema":{"properties":{},"type":"object","additionalProperties":false},"name":"rebuild_index","outputSchema":{"properties":{"result":{"type":"string"}},"required":["result"],"type":"object","x-fastmcp-wrap-result":true},"title":"Rebuild Index"}]}}
[http-proxy] Stdin closed, stopping proxy

代表mcpserver http方式启动成功:

mcp-cross代理在mcp.json配置如下:

{
"mcpServers": {
"llamaindex-rag": {
"command": "cmd",
"args": [
"/c",
"npx",
"mcp-cross",
"--header",
"Accept: application/json, text/event-stream",
"--http",
"http://127.0.0.1:8000/mcp",
"--timeout",
"120000"
]
}
}
}

启动llama-server补充指定:

--tools all --mcp-servers-config ./mcp.json

启动llama-server结果如下:

启动日志中有 [34m0.01.049.314[0m [32mI [0msrv start: MCP warmup: 'llamaindex-rag' discovered 4 tools
表示通过mcp-cross http方式链接 mcp-server成功

效果如下:

它调用命令,把知识库里的内容检索出来。RAG部署完成。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询