模型上下文协议服务器

本地模型上下文协议(MCP)服务器,提供文件系统工具、SQLite查询、网络搜索、GraphMERT语义记忆和AI Bluffmaster双模型文本冒险引擎。

  • by ier1990
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 ier1990/lmstudio-mcp

使用说明

samekhi MCP服务器

本地模型上下文协议(MCP)服务器公开文件系统工具、SQLite查询、网络搜索、, GraphMERT语义记忆,以及 AI模糊大师 双模文本冒险引擎。

由MCP客户端(LM Studio)通过stdio传输启动。

先决条件

  • Windows PowerShell(v5.1很好)
  • Python 3.11+(用3.13测试)
  • 推荐虚拟环境

安装

# From repo root
python -m venv .venv
. .\.venv\Scripts\Activate.ps1
pip install -r requirements.txt

环境变量

复制 .env.example 到 .env 并填写你的价值观。

变量 目的
MCP_BASES 分号分隔的允许读取根
MCP_SQLITE_DIR SQLite数据库目录
MCP_ALLOW_WRITE 设置 1 启用写入工具
MCP_WRITE_BASES 允许的写根(比读根窄)
LMSTUDIO_URL 本地LM Studio服务器(默认 http://127.0.0.1:1234)
OLLAMA_URL 远程Ollama服务器URL
JUDGE_MODEL Ollama模型用作Bluffmaster法官
BLUFF_DB Bluffmaster SQLite数据库的路径(自动创建)
SEARXNG_URL web搜索的SearxNG实例
GRAPHMERT_DB ChromaDB持久目录的路径(默认: ~/.graphmert/chroma)
GRAPHMERT_MODEL 用于记忆丰富的Ollama模型(可追溯到 JUDGE_MODEL)

网络搜索引擎——设置您拥有的任何关键字: AZURE_BING_KEY, GOOGLE_CSE_KEY+GOOGLE_CSE_CX, BRAVE_API_KEY, SERPAPI_KEY

工具摘要

文件系统: listdir, stat, find, read_file, listdrives, get_config

写 (要求 MCP_ALLOW_WRITE=1): write_file, fs_op

搜索: web_search, web_fetch

数据: sqlite_select (仅限选择), bible

人工智能: lmstudio_models

内存: graphmert_write, graphmert_search

布拉夫马斯特: bluffmaster_new, bluffmaster_turn, bluffmaster_call, bluffmaster_state


GraphMERT内存

语义记忆支持 色度数据库 + 句子变换器,由远程Ollama模型丰富。让AI通过混合评分在会话中存储和检索记忆。

graphmert_write(text)
    → Ollama (GRAPHMERT_MODEL) extracts: summary · tags · entities · importance score
    → stored as embedding in ChromaDB

graphmert_search(query, k=8)
    → semantic similarity   (60%)
    + recency decay         (15%)
    + importance score      (15%)
    - expired TTL penalty   (10%)
    → top-k ranked results

设置

安装deps(一次,到您的venv中):

pip install chromadb sentence-transformers

添加到您的 mcp.json env块:

"OLLAMA_URL":       "http://<your-ollama-server>:11434",
"GRAPHMERT_MODEL":  "qwen2.5:32b",
"GRAPHMERT_DB":     "C:/mcp/samekhi/.graphmert"

GRAPHMERT_MODEL 退回到 JUDGE_MODEL 如果没有设置,那么如果您已经在运行Bluffmaster,则不需要额外的配置。

用法

告诉你的LM Studio模型:

“请记住,项目X的API密钥将于3月31日到期”

模型调用 graphmert_write().稍后:

“你对X项目了解多少?”

模型调用 graphmert_search("project X") 并获取带有分数、标签和实体的排名记忆。

后备方案

如果在写入时无法访问Ollama,则原始文本将以默认重要性存储(0.3)并且没有标签/实体。搜索仍然正常工作。


AI模糊大师

一个双重模型的欺骗性文本冒险,本地AI试图撒谎,远程AI默默地判断每一个动作。

You (player)
    ↕  choices
Local model (LM Studio)   =  Narrator / strategic liar
    ↕  every turn, silently
Remote model (Ollama)     =  Judge / truth engine
    ↕
MCP tool                  =  Canonical world state — neither model can tamper with it

运作原理

  • 这 叙述者 告诉你一个故事,但它有一个 虚张声势的预算 (默认:每场比赛3个谎言)
  • 每转一圈,叙述者都会秘密提交两个状态增量:
    • true_delta --什么 实际上 发生(健康、黄金、库存……)
    • claimed_delta --什么 告诉你 发生了(可能不同=虚张声势)
  • MCP工具保存 true_delta 发送到规范世界国家,并将两者发送到 法官
  • 法官(在一个更大的远程模型上运行)默默地标记可疑的转弯
  • 你有 真理令牌 (默认值:3)质疑任何你怀疑是谎言的回合

设置

添加到您的 mcp.json env块:

"LMSTUDIO_URL": "http://127.0.0.1:1234",
"OLLAMA_URL":   "http://<your-ollama-server>:11434",
"JUDGE_MODEL":  "your-model-name",
"BLUFF_DB":     "D:/db/bluffmaster.db"

法官最好使用比叙述者更大/更聪明的模型——它需要可靠地发现不一致之处。建议使用20B+型号。

怎么玩

1.开始游戏

告诉你的LM Studio模型:

“为玩家Alex启动一个新的Bluffmaster地下城游戏”

模型调用 bluffmaster_new() 并获取故事ID及其秘密叙述者指令。

可用模板: dungeon · heist · space

2.采取行动

请描述一下你的工作:

“我在房间里寻找宝藏” “我试着开锁” “我和商人谈过了”

叙述者喊道 bluffmaster_turn() 随着它的叙述,真实的状态发生了变化,它声称发生了什么。法官默默地审核。你只看到了故事。

3.警惕谎言

叙述者有3个虚张声势的策略。它可能:

  • 告诉你,当你真的找到金子时,箱子是空的
  • 说当你的健康状况偷偷下降时,陷阱并没有造成损害
  • 声称NPC是友好的,但实际上他们是敌对的

注意故事中的前后矛盾。叙述者是否显得含糊其辞?有什么东西不加起来吗?

4.虚张声势

如果你怀疑某个特定的转折是谎言,花一个真理令牌:

“我在第二弯道叫虚张声势”

模型调用 bluffmaster_call(story_id, 2)MCP揭示了真相:

  • 如果你是对的: true_delta ≠ claimed_delta → 叙述者失去了1个虚张声势的学分,你看到底发生了什么
  • 如果你错了: 令牌浪费了,叙述者说的是实话

5.结束游戏

  • 旁白脱口而出→ 在剩下的比赛中被迫诚实地叙述
  • 玩家用完真相令牌→ 不能再挑战任何事情
  • 抓住所有的谎言→ 奖金结束

旁白预算执行

当 bluff_budget 达到0时,MCP发动机自动强制 claimed_delta == true_delta 不管叙述者提交了什么。谎言止于引擎层面——模型无法欺骗它。

推荐型号尺寸

角色 最小 推荐
旁白(本地) 7B 13B+
法官(远程) 14B 20B+

小型模型(≤3B)在正确调用时难以保持叙述者角色 bluffmaster_turn() 使用结构化JSON。它们可能会将游戏操作与文件系统工具调用混淆。


故障排除

  • ImportError for mcp.server.fastmcp:运行 pip install mcp
  • graphmert deps not installed:运行 pip install chromadb sentence-transformers 进入你的静脉
  • Judge offline /GraphMERT富集无声失败:检查 OLLAMA_URL 可访问--写入回退到原始存储,搜索仍然有效
  • 叙述者调用了错误的工具:使用更大的叙述者模型(7B+)