Token导航 LogoToken导航TokenDH.com
Narritive Rag MCP logo
搜索检索stdio官方级别未说明来源级核验

Narritive Rag MCP

MCP Server

一个使用LangChain连接本地运行的llamafile的Python项目,通过MCP桥接实现模拟工具调用,并利用《精灵宝钻》作为上下文进行检索增强生成(RAG)。

工具数

0

提示词数

0

GitHub Stars

0

资源数

0
本地LLMPythonClaude检索增强生成Claude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

cleongh

提供方

cleongh

最后核验

2026/5/17 20:19

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

python mcp_bridge_example.py

详细介绍

带有MCP和RAG的Llamafile故事生成器

一个Python项目,使用LangChain连接到本地运行的llamafile,并使用MCP(模型上下文协议)桥 模拟工具调用 以及使用《精灵宝钻》作为背景的RAG(检索增强生成)。

特性

  • 模拟MCP工具调用:使用基于提示的工具调用与任何LLM(Gemma、DeepSeek等)配合使用
  • 多种工具:故事生成的三个示例工具(角色名称、地点、事件)
  • 检索增强生成:使用《精灵宝钻》文本提供丰富的上下文知识
  • 本地法学硕士:完全使用骆驼纤维在当地运行
  • 可靠的:基于Flask的简单网桥,易于调试和理解

运作原理

大多数开源LLM(包括Gemma和DeepSeek-R1) 不支持原生OpenAI风格的函数调用该项目通过以下方式解决了这一问题:

  1. 法学硕士教学 以特定格式输出工具调用: TOOL_CALL: function_name(args)
  2. 解析 LLM的文本输出,用于检测工具调用
  3. 执行 MCP工具,并将结果注入到对话中
  4. 继续 与工具的对话结果

对于许多模型,这种“模拟”方法比本机函数调用更可靠。

安装

使用uv安装依赖项:

uv sync

依赖关系包括:

  • langchainlangchain-openai 用于LLM集成
  • flaskrequests 对于MCP桥
  • faiss-cpusentence-transformers 对于RAG
  • mcp 用于MCP服务器协议

用法

1.开始你的羊驼之旅(1号航站楼)

推荐:Gemma(速度更快)

~/programas/google_gemma-3-12b-it-Q4_K_M.llamafile --server --nobrowser -ngl 18 --gpu nvidia

替代方案:DeepSeek(速度较慢但体积较大)

~/programas/DeepSeek-R1-Distill-Qwen-14B-Q4_K_M.llamafile --server --nobrowser -ngl 32 --gpu nvidia

等到你看到 llama server listening at http://localhost:8080

2.启动MCP电桥(端子2)

桥接代码被拆分为一个库和一个示例运行器。

  • 图书馆: mcp_bridge_flask.py 出口 create_bridge_app(...)run_bridge(...).
  • 跑步者示例: mcp_bridge_example.py 定义示例工具(elf名称、位置、事件)并运行桥。

运行示例网桥:

python mcp_bridge_example.py

您应该看到类似以下内容:

Starting example bridge on http://127.0.0.1:8081 using local example tools
 * Running on http://127.0.0.1:8081

3.运行故事生成器(终端3)

简单版本(无RAG,快速):

uv run python llm_story_simple.py

完整版(含Silmarillion的RAG):

uv run python llm_story_working.py

增强版(使用多种工具):

uv run python llm_story_with_tools.py

示例客户端(调用 llm_query):

python llm_story.py

这将:

  1. 检查MCP网桥连接
  2. 为RAG加载精灵宝钻(如果使用 llm_story_working.py)
  3. 检索有关精灵、艺术和Valinor的相关上下文
  4. 请求一个关于精灵学习绘画的故事
  5. LLM输出 TOOL_CALL: get_elf_name(count=1)
  6. 该桥调用MCP工具并获得一个名称(例如,“Luis Agulló”)
  7. LLM可以根据需要调用其他工具(位置、事件)
  8. LLM使用工具结果和RAG上下文生成托尔金风格的故事

测试

测试桥梁是否正常工作:

uv run python test_simple_bridge.py

测试所有三个工具:

uv run python test_all_tools.py

检查桥梁健康状况:

curl http://127.0.0.1:8081/health

直接调用测试工具:

uv run python test_tool_calling.py

项目结构

. 
.├── mcp_bridge_flask.py       # Library: factory `create_bridge_app` and helper `run_bridge`
.├── mcp_bridge_example.py     # Runnable example that defines local tools and runs the bridge
.├── mcp_server.py             # MCP server (generic API, no default tools)
.├── llm_query.py              # LangChain integration with RAG (fallbacks when libs missing)
.├── llm_story.py              # Example client that calls `llm_query` (default example)
.├── llm_story_simple.py       # Simple story generator (no RAG)
.├── llm_story_working.py      # Full RAG + MCP story generator
.├── llm_story_with_tools.py   # Using multiple tools
.├── test_simple_bridge.py     # Test the bridge
.├── test_all_tools.py         # Test all three tools
.├── test_deepseek_tools.py    # Test if models support native function calling
.├── silmarillion.txt          # RAG knowledge base
.├── README.md                 # This file
.└── TOOLS_REFERENCE.md        # Complete tools documentation

哪些模型支持本机函数调用?

根据测试:

✅ 支持本机函数调用:

  • GPT-4、GPT-4 Turbo、GPT-3.5 Turbo(OpenAI API)
  • Claude 3+(无烟煤API)
  • 西北风大,西北风7B-Instruct-v0.2+
  • Nous Hermes模特(经过专门训练)
  • 功能模型(专门设计)

❌ 不支持本机函数调用:

  • 杰玛 (我们正在使用的)-使用模拟桥
  • DeepSeek-R1 -使用模拟桥梁
  • LLaMA 2(LLaMA 3有部分支持)
  • Phi模型

解决方案: 使用 mcp_bridge_simple.py 适用于所有型号!

故障排除

桥超时

  • DeepSeek-R1 由于思维链推理,速度非常慢
  • 切换到 杰玛 以获得更快的响应
  • 减小上下文大小或故事长度
  • 增加网桥中的超时时间

LLM不调用该工具

  • 确保您正在使用 mcp_bridge_simple.py (不是 mcp_bridge.py)
  • 模拟桥向LLM教授工具调用语法
  • 检查网桥日志,查看是否检测到工具调用

端口已在使用中

pkill -f "mcp_bridge"

高级:创建自己的MCP工具

该系统现在包括 三个示例工具:

  • get_elf_name(count=1) -生成字符名称
  • get_location_description(style='brief') -生成设置
  • get_random_event() -生成绘图事件

工具_参考.md 以获取完整的文档。

快速添加工具示例

编辑 mcp_server.py 添加新工具:

@app.list_tools()
async def list_tools() -> list[Tool]:
    return [
        Tool(
            name="your_tool_name",
            description="What your tool does",
            inputSchema={
                "type": "object",
                "properties": {
                    "param": {"type": "string", "description": "Parameter description"}
                }
            }
        )
    ]

@app.call_tool()
async def call_tool(name: str, arguments: dict) -> list[TextContent]:
    if name == "your_tool_name":
        result = do_something(arguments["param"])
        return [TextContent(type="text", text=result)]

然后将工具添加到 mcp_bridge_simple.pycall_mcp_tool() 功能。

许可证

麻省理工学院

目录标签

目录标签

本地LLMPythonClaude检索增强生成故事生成本地部署模拟工具调用LangChain

支持客户端

Claude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP