MCP服务器

一个MCP协议服务器,允许MCP兼容客户端(如VS Code、Claude Desktop、Cursor等)与AnythingLLM交互,提供工作区管理、聊天和线程操作、文档操作和嵌入、向量搜索等功能。

  • by andreperez
  • Python
  • 本地部署
  • 6 星标
  • 更新于
在 GitHub 查看 andreperez/anythingllm-mcp

使用说明

LLM MCP服务器

A. 模型上下文协议(MCP) 服务器 允许MCP兼容客户端(VS Code、Claude Desktop、Cursor等) 与...互动 万物皆可LLM.可用工具:

  • 工作空间管理
  • 聊天和线程操作
  • 文档操作和嵌入
  • 向量搜索
  • 系统和型号检查

需求

  • Python 3.10+ --验证: python --version 或 python3 --version. 下载 如果没有安装。
  • 紫外线 (Python包管理器)--验证: uv --version. 安装说明.
  • 任何正在运行且可访问的LLM --打开 http://localhost:3001 在一个 浏览器确认。如果它在Docker中运行,请确保端口已发布 (例如。, -p 3001:3001).
  • AnythingLLM API密钥 --在AnythingLLM web界面中创建一个(看 为了 API密钥 或 开发者API 在设置中)。复制密钥并存储 安全;它只显示一次。

安装

git clone https://github.com/andreperez/anythingllm-mcp.git
cd anythingllm-mcp
uv sync

uv sync 读取 pyproject.toml 并将所有必需的依赖项安装到 本地虚拟环境。您不需要创建或激活环境 手动-- uv run 自动处理。

配置

服务器在启动时从这些环境变量中读取配置:

  • ANYTHINGLLM_BASE_URL:AnythingLLM实例的基本URL。 默认为 http://localhost:3001 如果没有设置。
  • ANYTHINGLLM_API_KEY:用于使用AnythingLLM进行身份验证的API密钥。 此值是必需的。

服务器会 不 负载 .env 文件本身。您必须:

  • 在启动服务器之前,在shell中设置变量。
  • 使用加载工具 .env 文件给你。
  • 直接在MCP客户端配置中传递变量。

选项1:在当前shell中设置变量

PowerShell:

$env:ANYTHINGLLM_BASE_URL = "http://localhost:3001"
$env:ANYTHINGLLM_API_KEY = "your_api_key_here"

猛击:

export ANYTHINGLLM_BASE_URL="http://localhost:3001"
export ANYTHINGLLM_API_KEY="your_api_key_here"

命令提示符(cmd.exe):

set ANYTHINGLLM_BASE_URL=http://localhost:3001
set ANYTHINGLLM_API_KEY=your_api_key_here

使用主机公开的URL进行部署。对于Docker端口映射,如 3002:3001,set ANYTHINGLLM_BASE_URL 到 http://localhost:3002 因为 MCP服务器从主机连接,而不是从容器内部连接。

选项2:使用 .env 提交 uv

复制示例文件:

PowerShell:

Copy-Item .env.example .env

猛击:

cp .env.example .env

命令提示符(cmd.exe):

copy .env.example .env

编辑 .env 所以它包含了你的真实价值:

ANYTHINGLLM_BASE_URL=http://localhost:3001
ANYTHINGLLM_API_KEY=replace_with_your_real_api_key

然后使用以下命令启动服务器:

uv run --env-file .env anythingllm-mcp

这告诉 uv 从以下位置加载变量 .env 在启动服务器之前。

选项3:在MCP客户端配置中传递变量

大多数MCP客户端接受 env 配置文件中的块(请参阅 客户端设置 下面的例子)。当时 env 块包含 ANYTHINGLLM_API_KEY 和 ANYTHINGLLM_BASE_URL,您不需要导出 shell中的变量或使用 .env 文件。

客户端设置

替换 /path/to/anythingllm-mcp 在下面的例子中 绝对的 路径 在那里克隆了存储库。示例:

  • Linux/macOS: /home/youruser/anythingllm-mcp
  • 窗户: C:\\Users\\youruser\\anythingllm-mcp (使用双反睫毛 \\ JSON字符串内部)

VS Code

添加到您的用户或工作区 mcp.json.打开命令面板 (Ctrl+Shift+P 在Windows/Linux操作系统上, Cmd+Shift+P 在macOS上)并运行 MCP:打开用户配置:

{
  "servers": {
    "anythingllm": {
      "type": "stdio",
      "command": "uv",
      "args": [
        "run",
        "--directory",
        "/path/to/anythingllm-mcp",
        "anythingllm-mcp"
      ],
      "env": {
        "ANYTHINGLLM_API_KEY": "${input:anythingllm_api_key}",
        "ANYTHINGLLM_BASE_URL": "http://localhost:3001"
      }
    }
  }
}

VS代码支持 ${input:name} 以提示在每个会话上输入API密钥。

在多根工作区中,首选绝对路径 --directory 如果 MCP服务器位于当前文件夹根目录之外。

如果更新服务器或切换后VS Code仅显示部分工具列表 从另一个AnythingLLM集成到这个本地集成:

  1. 跑 MCP: List Servers 并确认 anythingllm 或您选择的服务器名称 成功启动。
  2. 跑 MCP: Reset Cached Tools 清除过时的工具元数据。
  3. 从以下位置重新启动MCP服务器 MCP: List Servers.

克劳德桌面版

编辑 claude_desktop_config.json (设置→ 开发者→ 编辑配置):

{
  "mcpServers": {
    "anythingllm": {
      "command": "uv",
      "args": [
        "run",
        "--directory",
        "/path/to/anythingllm-mcp",
        "anythingllm-mcp"
      ],
      "env": {
        "ANYTHINGLLM_API_KEY": "YOUR_API_KEY",
        "ANYTHINGLLM_BASE_URL": "http://localhost:3001"
      }
    }
  }
}

光标

增添 .cursor/mcp.json 在项目根目录中,或在以下位置的全局配置中 ~/.cursor/mcp.json (Linux/macOS)/ %USERPROFILE%\.cursor\mcp.json (Windows):

{
  "mcpServers": {
    "anythingllm": {
      "command": "uv",
      "args": [
        "run",
        "--directory",
        "/path/to/anythingllm-mcp",
        "anythingllm-mcp"
      ],
      "env": {
        "ANYTHINGLLM_API_KEY": "YOUR_API_KEY",
        "ANYTHINGLLM_BASE_URL": "http://localhost:3001"
      }
    }
  }
}

注: ANYTHINGLLM_BASE_URL 默认为 http://localhost:3001,即 容器内的应用程序端口。如果你将Docker发布为 3002:3001,使用 http://localhost:3002 在客户端配置中。

运行(独立)

如果您已经导出了shell中的变量:

uv run anythingllm-mcp

如果你想从加载它们 .env 在启动时:

uv run --env-file .env anythingllm-mcp

发展

安装测试依赖项并运行测试套件:

uv sync --extra dev
uv run pytest

故障排除

“API密钥丢失”或401未经授权

服务器无法通过AnythingLLM进行身份验证。检查:

  1. ANYTHINGLLM_API_KEY 设置在您的环境中或 env 一块 您的MCP客户端配置。
  2. 该密钥与AnythingLLM(设置)中的活动密钥匹配→ API密钥)。
  3. 键没有前导或尾随空格。

“连接被拒绝”或超时

服务器无法访问AnythingLLM。检查:

  1. LLM正在运行(打开 http://localhost:3001 在浏览器中)。
  2. ANYTHINGLLM_BASE_URL 指向正确的主机和端口。
  3. 没有防火墙或VPN阻止连接。

Docker端口不匹配

如果AnythingLLM在Docker中运行,端口映射如下 3002:3001:

  • 集装箱内部,应用程序在端口上侦听 3001.
  • 在主机上,您可以在端口上访问它 3002.

由于MCP服务器在主机上运行(不在容器内),请设置:

ANYTHINGLLM_BASE_URL=http://localhost:3002

始终使用 主机端口 (左侧 -p 或 ports: 映射)。

在容器内运行的MCP服务器(Dev Containers、Docker Compose)

如果MCP服务器本身在容器内运行(例如 VS代码开发容器), localhost 指的是容器自己的网络,而不是主机。 使用以下命令访问主机上或另一个容器中运行的AnythingLLM 已发布端口,使用 host.docker.internal:

ANYTHINGLLM_BASE_URL=http://host.docker.internal:3001

如果MCP服务器和AnythingLLM都是上的容器 相同的Docker 网络 (例如,在同一 docker-compose.yml),使用 服务 名字 改为主机名:

# "anythingllm" is the service name defined in docker-compose.yml
ANYTHINGLLM_BASE_URL=http://anythingllm:3001

在这种情况下,使用 集装箱港口 (3001),而不是主机发布的端口。

host.docker.internal Docker桌面(Windows和macOS)支持 Linux版Docker引擎20.10+(需要 --add-host=host.docker.internal:host-gateway 或同等产品 extra_hosts 作曲)。

安全说明

  • 永远不要提交真正的API密钥。
  • 使用环境变量作为机密。
  • 尽可能使用最少特权的AnythingLLM API令牌。

许可证

麻省理工学院