Skip to main content
Glama

AstrBot-MCP

CI Python License M8venVerified

一个可独立运行的 MCP(Model Context Protocol)服务器,外加一个 AstrBot 插件桥接。
它把 HTTP、搜索、天气/时间/汇率、文件、SQLite、GitHub、邮件、日历和可自学习知识库统一封装成 MCP 工具,供 AstrBot Agent 调用。

  • MCP 传输:stdio、sse、streamable-http

  • 鉴权:HTTP 模式支持 Authorization: Bearer <token>,并提供 /health

  • 安全:SSRF 防护、文件/数据库沙箱、写操作默认关闭

  • 知识库:SQLite + FTS5(中文友好的 trigram)+ 可选 OpenAI 兼容向量检索

  • AstrBot 插件:多 MCP 服务器聚合、工具自动注册、/mcp 指令、知识库自动学习

flowchart LR
    U[用户] --> A[AstrBot<br/>Agent]
    A -->|原生 MCP 或插件桥接| S[astrbot-mcp<br/>MCP Server]
    S --> H[HTTP / REST]
    S --> W[网页搜索 / 抓取]
    S --> P[天气 / 时间 / 汇率]
    S --> F[文件沙箱]
    S --> D[(SQLite)]
    S --> G[GitHub]
    S --> M[SMTP / IMAP]
    S --> C[日历 .ics]
    S --> K[(知识库<br/>FTS5 + 可选向量)]

1. 快速开始

1.1 本地安装

python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"

cp config.example.yaml config.yaml
# 按需填写 API Key,或使用环境变量
astrbot-mcp --check-config      # 查看解析后的配置(密钥已脱敏)
astrbot-mcp --list-tools        # 查看注册了哪些工具

1.2 运行 MCP 服务器

# stdio(由 AstrBot 等客户端拉起)
astrbot-mcp --config config.yaml

# Streamable HTTP
astrbot-mcp --config config.yaml --transport streamable-http --host 0.0.0.0 --port 8765

# 旧版 SSE
astrbot-mcp --config config.yaml --transport sse --host 0.0.0.0 --port 8765

HTTP 模式端点:

路径

说明

/mcp

Streamable HTTP MCP 端点

/sse

SSE 端点

/messages/

SSE 消息端点

/health

健康检查(无需鉴权)

配置了 server.auth_token 后,除 /health 外都需要:

Authorization: Bearer <token>

1.3 Docker

cp config.example.yaml config.yaml
# 修改 config.yaml 中的 auth_token / 服务开关 / API Key
docker compose up -d --build
curl http://127.0.0.1:8765/health

数据目录 ./data 会被挂载到容器内 /app/data,包含知识库、文件沙箱、SQLite 和日历。


Related MCP server: ai-mcp

2. 接入 AstrBot

有两条路,任选其一;也可以同时使用。

方式 A:AstrBot 原生 MCP(最简单)

在 AstrBot WebUI 打开 插件 → MCP → 新增服务器,粘贴下面任一配置。

stdio(服务器安装在 AstrBot 所在环境)

{
  "transport": "stdio",
  "command": "/path/to/Astrbot-MCP/.venv/bin/python",
  "args": ["-m", "astrbot_mcp", "--config", "/path/to/Astrbot-MCP/config.yaml"],
  "cwd": "/path/to/Astrbot-MCP"
}

AstrBot 会校验 stdio 命令名。请使用 .../bin/python -m astrbot_mcp,不要直接写 astrbot-mcp(命令名 astrbot-mcp 不在默认白名单中);python、python3、uv、uvx、npx 等均在白名单内。

Streamable HTTP

{
  "transport": "streamable_http",
  "url": "http://127.0.0.1:8765/mcp",
  "headers": { "Authorization": "Bearer <你的 token>" }
}

AstrBot 与 MCP 服务器都在 Docker Compose 中时,把 127.0.0.1 换成服务名,例如 http://astrbot-mcp:8765/mcp。

方式 B:插件桥接(聚合多个 MCP 服务器)

插件适合以下场景:

  • 同时连接多个 MCP 服务器,统一管理

  • 把每个 MCP 工具自动注册成 AstrBot 的 LLM 工具

  • 用 /mcp 指令手动查看/调用

  • 开启知识库自动学习

安装:

# 把本仓库的 astrbot_plugin 目录复制到 AstrBot 的插件目录,并改名为插件名
cp -r astrbot_plugin /path/to/AstrBot/data/plugins/astrbot_plugin_mcp_bridge

重启 AstrBot(或在 WebUI 重载插件),然后在 插件管理 → MCP 服务桥接 → 配置 中填写 servers_json:

{
  "mcpServers": {
    "astrbot-mcp": {
      "transport": "stdio",
      "command": "/path/to/Astrbot-MCP/.venv/bin/python",
      "args": ["-m", "astrbot_mcp", "--config", "/path/to/Astrbot-MCP/config.yaml"],
      "cwd": "/path/to/Astrbot-MCP"
    },
    "remote-example": {
      "transport": "streamable_http",
      "url": "http://127.0.0.1:8765/mcp",
      "headers": { "Authorization": "Bearer <token>" }
    }
  }
}

旧版 AstrBot 没有 template_list 可视化编辑器时,servers_json 同样可用。也支持直接写数组或“名称 → 配置”的对象:

[
  { "name": "astrbot-mcp", "command": "python", "args": ["-m", "astrbot_mcp"] }
]

插件配置项(_conf_schema.json):

配置

默认

说明

servers

[]

可视化服务器列表(AstrBot ≥ 4.10.4)

servers_json

""

JSON 配置,与 servers 合并,同名时优先

auto_register

true

把 MCP 工具自动注册为 LLM 工具

tool_prefix

mcp

自动工具名前缀,最终形如 mcp_<server>_<tool>

tool_name_max_length

64

工具名最大长度,超长会加哈希后缀

tool_denylist

""

全局工具黑名单,逗号分隔

max_tools_per_server

200

每个服务器最多注册的工具数

connect_timeout

30

连接超时(秒)

tool_timeout

120

工具调用超时(秒)

auto_learn

见下文

知识库自动学习配置

auto_register=false 时仍保留三个通用工具:

  • mcp_list_servers:查看服务器与连接状态

  • mcp_list_tools(server):查看某服务器的工具

  • mcp_call_tool(server, tool, arguments):手动调用

插件指令:

/mcp list                         查看服务器状态
/mcp tools <server>               查看工具列表
/mcp call <server> <tool> <json>  调用工具
/mcp reload                       重连并重新注册(管理员)
/mcp help                         帮助

3. 工具清单

通用 HTTP

工具

说明

http_request

任意 REST 请求;支持 method/headers/params/JSON/原始 body、大小限制、逐跳重定向校验

搜索与抓取

工具

说明

web_search

DuckDuckGo / Tavily / Bing / SearXNG

web_fetch

抓取网页并提取正文与链接(带 SSRF 防护)

公共 API(无需 Key)

工具

说明

get_weather

Open-Meteo 天气与多日预报

get_time

任意 IANA 时区当前时间

convert_currency

实时汇率换算

文件沙箱

工具

说明

fs_list / fs_read / fs_stat

列目录、按行读文本、查看元信息

fs_search

在文本文件中搜索(支持正则)

fs_write / fs_mkdir / fs_delete

写操作,需显式开启 allow_write / allow_delete

所有路径都被限制在 services.files.root 内,符号链接逃逸会被拒绝。

SQLite

工具

说明

sqlite_list_tables / sqlite_describe

查看表和结构

sqlite_query

只读连接执行查询

sqlite_execute

单条写语句,需 services.sqlite.allow_write=true

数据库文件被限制在 services.sqlite.root 内。

GitHub

github_search_repos、github_get_repo、github_list_issues、github_get_issue、github_get_file、github_search_code、github_create_issue。

  • 公开读取不需要 token;代码搜索和写操作需要 GITHUB_TOKEN

  • github_create_issue 还需要 services.github.allow_write=true

邮件(默认关闭)

mail_send、mail_list、mail_read。使用标准库 SMTP/IMAP,需在 services.mail 配置服务器与账号。

日历(默认关闭)

calendar_list、calendar_list_events、calendar_add_event、calendar_delete_event。
数据保存为 .ics 文件,可被其他日历软件导入;写入时会嵌入 VTIMEZONE,时区可正确往返。

知识库与自学习

工具

说明

kb_add

按 source 添加或覆盖文档

kb_remember

记住一条事实,内容哈希自动去重

kb_search

关键词 + 可选向量检索,RRF 融合

kb_learn_url

抓取网页、提取正文并入库

kb_learn_file

从 files.root 内文本文件学习

kb_list / kb_get / kb_delete

管理文档

kb_stats / kb_reindex / kb_export

统计、重建 FTS、导出 JSON

知识库默认使用 SQLite FTS5:

  • 优先 trigram 分词,对中文子串检索友好

  • 不支持 trigram 的环境回退 unicode61

  • FTS5 完全不可用时自动回退 LIKE

可选向量检索(任意 OpenAI 兼容 /embeddings 接口):

services:
  knowledge:
    embedding:
      enabled: true
      base_url: ${EMBEDDING_BASE_URL}
      api_key: ${OPENAI_API_KEY}
      model: text-embedding-3-small
      dimensions: 0

4. 知识库自动学习

有两种“自学习”方式。

4.1 Agent 主动学习

模型在对话中直接调用:

kb_remember(content="用户偏好中文回答", tags="preference")
kb_learn_url(url="https://example.com/article", tags="docs")

建议在 AstrBot 的 system prompt 中加一句:

当用户提供值得长期保存的事实、偏好或结论时,调用 kb_remember 保存;需要参考资料时先调用 kb_search。

4.2 插件自动学习

在插件配置中开启:

{
  "auto_learn": {
    "enabled": true,
    "knowledge_server": "astrbot-mcp",
    "tool_name": "kb_remember",
    "tags": "auto-learned",
    "min_message_chars": 20,
    "max_conversation_chars": 4000,
    "learn_in_group": false
  }
}

工作方式:

  1. 每轮 LLM 回复后,插件用当前会话模型(或 provider_id 指定模型)提取长期记忆

  2. 提取结果写入 knowledge_server 的 tool_name

  3. 相同对话内容会被哈希去重

  4. 默认只在私聊触发,避免把群聊内容写入长期记忆

注意:这会为每轮对话额外调用一次 LLM,产生 token 消耗;不需要时请保持关闭。


5. 配置参考

完整配置见 config.example.yaml。

5.1 环境变量

所有配置项都支持 ${VAR} 和 ${VAR:-default} 展开。本地开发可先复制模板:

cp .env.example .env        # docker compose 会自动读取 .env

变量

用途

ASTRBOT_MCP_CONFIG

配置文件路径

ASTRBOT_MCP_TRANSPORT

覆盖传输方式

ASTRBOT_MCP_HOST / ASTRBOT_MCP_PORT

覆盖监听地址/端口

ASTRBOT_MCP_AUTH_TOKEN

HTTP Bearer token

GITHUB_TOKEN

GitHub API token

TAVILY_API_KEY / BING_SEARCH_API_KEY / SEARXNG_BASE_URL

搜索后端

MAIL_PASSWORD

邮箱密码/授权码

OPENAI_API_KEY / EMBEDDING_BASE_URL / EMBEDDING_MODEL

向量检索

5.2 路径规则

  • 相对路径以配置文件所在目录为基准

  • files.root、sqlite.root、calendar.root、knowledge.db_path 会被转换为绝对路径

  • 文件、数据库、日历、知识库导出均限制在各自根目录内

5.3 安全模型

保护

说明

SSRF

默认拒绝私网/回环/链路本地/保留地址;重定向逐跳校验

域名策略

security.allowed_domains 白名单、blocked_domains 黑名单

写操作

文件、SQLite、GitHub 写操作默认关闭

路径逃逸

..、绝对路径、符号链接逃逸都会被拒绝

HTTP 鉴权

server.auth_token 非空时强制 Bearer token

密钥

支持环境变量注入;--check-config 自动脱敏

残余风险:DNS 在校验与连接时各解析一次,恶意 DNS 重绑定理论上可绕过;对不可信网络建议配合 egress 防火墙/反向代理。日历、知识库是明文文件,请自行控制目录权限。


6. 配置示例

6.1 使用 Tavily 搜索

export TAVILY_API_KEY=tvly-xxx
services:
  web_search:
    provider: tavily
    api_key: ${TAVILY_API_KEY}

DuckDuckGo 无需 Key,但数据中心 IP 可能被限流;此时会回退到 Lite 端点,仍失败则建议改用 Tavily/Bing/SearXNG。

6.2 开启文件与 SQLite 写入

services:
  files:
    root: ./data/files
    allow_write: true
    allow_delete: false
  sqlite:
    root: ./data/sqlite
    allow_write: true

6.3 邮件

services:
  mail:
    enabled: true
    smtp_host: smtp.example.com
    smtp_port: 465
    smtp_ssl: true
    username: bot@example.com
    password: ${MAIL_PASSWORD}
    from_addr: bot@example.com
    imap_host: imap.example.com
    imap_port: 993
    imap_ssl: true

国内邮箱通常需要使用“授权码”而不是登录密码。

6.4 允许访问内网服务

security:
  allow_private_networks: true

仅在你清楚风险时开启,例如让 MCP 访问局域网 Home Assistant / Ollama。


7. 开发与测试

python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"

pytest -q                                  # 全部单元测试(离线,不访问网络)
pytest -q --cov=astrbot_mcp --cov-report=term-missing
ruff check src astrbot_plugin tests        # Lint
ruff format --check src astrbot_plugin tests
astrbot-mcp --check-config
astrbot-mcp --list-tools

测试通过 httpx.MockTransport 模拟外部 API,不会发起真实网络请求;GitHub Actions (.github/workflows/ci.yml)会在 Python 3.10–3.13 上运行 lint、测试和 CLI 冒烟检查。

目录结构:

.
├── src/astrbot_mcp/
│   ├── __main__.py        # CLI 入口
│   ├── server.py          # FastMCP、HTTP 网关、鉴权、/health
│   ├── config.py          # YAML + 环境变量 + 路径解析
│   ├── net.py             # SSRF 防护与安全请求
│   ├── registry.py        # 服务注册
│   └── services/          # 各服务适配器
├── astrbot_plugin/        # AstrBot 插件(复制到 data/plugins/)
├── tests/                 # pytest 用例(conftest.py 提供离线 HTTP 夹具)
├── .github/workflows/     # CI:lint + 多版本测试
├── config.example.yaml
├── Dockerfile
└── docker-compose.yml

8. FAQ

AstrBot 报 “command not allowed” 或找不到 uvx/npx
AstrBot 只允许白名单中的命令,并且依赖必须装在 AstrBot 所在环境/容器内。优先使用 <venv>/bin/python -m astrbot_mcp;Docker 部署建议改用 HTTP 传输。

Docker 里 AstrBot 连不上 127.0.0.1:8765
容器内的 127.0.0.1 指向 AstrBot 自己。使用同一 Compose 网络中的服务名,或宿主机 IP。

MCP 工具没有出现在模型的函数列表里
确认模型支持 function calling、插件已连接服务器;工具太多时可用 tool_denylist、每个服务器的 ignore_tools、max_tools_per_server 限制数量,或关闭 auto_register 只用 mcp_call_tool。

搜索返回 0 条
DuckDuckGo 可能限流。配置 Tavily / Bing / SearXNG 作为后端。

知识库中文检索效果
默认使用 SQLite FTS5 trigram;若你的 SQLite 太旧,会回退到 unicode61 或 LIKE。可开启向量检索提升语义召回。

邮件/日历工具没有出现
它们在示例配置中默认 enabled: false,开启并填好配置后重启即可。


9. 许可证

MIT M8ven Verified

Available Tools

35 tools
convert_currencyA

按实时汇率换算货币(open.er-api.com,无需 API Key)。

Args: amount: 金额。 from_currency: 源货币代码,例如 USD、CNY、EUR。 to_currency: 目标货币代码,例如 JPY、GBP。

Inputs: amount (required), to_currency (required), from_currency (required). Returns: result

fs_deleteA

删除沙箱内的文件或目录(需开启 files.allow_delete)。

Args: path: 相对于沙箱根目录的路径。 recursive: 删除目录时必须为 true。

Inputs: path (required), recursive. Returns: result

fs_listB

列出沙箱目录中的文件与子目录。

Args: path: 相对于沙箱根目录的路径,默认 "."。 pattern: 文件名匹配模式,默认 "*"。 recursive: 是否递归子目录。 include_hidden: 是否包含以点开头的隐藏文件。 max_results: 最多返回条目数,1-1000。

Inputs: path, pattern, recursive, max_results, +1 more. Returns: result

fs_mkdirA

在沙箱内创建目录(需开启 files.allow_write)。

Args: path: 相对于沙箱根目录的目录路径。

Inputs: path (required). Returns: result

fs_readA

读取沙箱内的文本文件,可按行截取。

Args: path: 相对于沙箱根目录的文件路径。 start_line: 起始行号(从 1 开始)。 end_line: 结束行号;0 表示读到文件末尾。 max_bytes: 最多读取的字节数;0 表示使用配置上限。

Inputs: path (required), end_line, max_bytes, start_line. Returns: result

fs_statB

查看沙箱内文件或目录的元信息。

Args: path: 相对于沙箱根目录的路径。

Inputs: path (required). Returns: result

fs_writeA

向沙箱内写入文本文件(需开启 files.allow_write)。

Args: path: 相对于沙箱根目录的文件路径。 content: 要写入的文本内容。 append: 是否追加而不是覆盖。 create_dirs: 是否自动创建父目录。

Inputs: path (required), content (required), append, create_dirs. Returns: result

get_timeA

获取指定时区的当前时间。

Args: timezone: IANA 时区名,例如 Asia/Shanghai、UTC、America/New_York。

Inputs: timezone. Returns: result

get_weatherA

查询城市天气(Open-Meteo,无需 API Key)。

Args: location: 城市名称,例如 北京、Shanghai、Tokyo。 days: 预报天数,1-16。

Inputs: location (required), days. Returns: result

github_create_issueA

创建 GitHub Issue(需开启 github.allow_write 且配置 token)。

Args: owner: 仓库拥有者。 repo: 仓库名称。 title: Issue 标题。 body: Issue 正文(Markdown)。 labels: 标签名称列表。

Inputs: repo (required), owner (required), title (required), body, +1 more. Returns: result

github_get_fileB

读取仓库中的文件内容。

Args: owner: 仓库拥有者。 repo: 仓库名称。 path: 文件路径,例如 src/main.py。 ref: 分支、标签或 commit SHA;留空使用默认分支。

Inputs: path (required), repo (required), owner (required), ref. Returns: result

github_get_issueB

获取单个 Issue 或 PR 的正文。

Args: owner: 仓库拥有者。 repo: 仓库名称。 number: Issue 或 PR 编号。

Inputs: repo (required), owner (required), number (required). Returns: result

github_get_repoC

获取 GitHub 仓库详情。

Args: owner: 仓库拥有者。 repo: 仓库名称。

Inputs: repo (required), owner (required). Returns: result

github_list_issuesA

列出仓库的 Issue(可选是否包含 Pull Request)。

Args: owner: 仓库拥有者。 repo: 仓库名称。 state: open、closed 或 all。 labels: 逗号分隔的标签过滤。 include_pulls: 是否把 Pull Request 也包含在结果中。 per_page: 返回数量,1-100;0 表示使用配置值。

Inputs: repo (required), owner (required), state, labels, +2 more. Returns: result

github_search_codeB

搜索 GitHub 代码(需要配置 token)。

Args: query: 搜索语法,例如 "repo:AstrBotDevs/AstrBot mcp"。 per_page: 返回数量,1-100。

Inputs: query (required), per_page. Returns: result

github_search_reposB

搜索 GitHub 仓库。

Args: query: GitHub 搜索语法,例如 "language:python mcp"。 sort: 排序字段,可选 stars、forks、updated。 per_page: 返回数量,1-100;0 表示使用配置值。

Inputs: query (required), sort, per_page. Returns: result

http_requestA

发送任意 HTTP/REST 请求,用于访问未单独接入的开放 API。

Args: method: HTTP 方法,支持 GET、POST、PUT、PATCH、DELETE、HEAD、OPTIONS。 url: 完整 URL,必须是 http:// 或 https:// 开头。 headers: 附加请求头,例如 {"Authorization": "Bearer ..."}。 params: URL 查询参数对象。 json_body: 以 JSON 发送的请求体(对象或数组)。 body: 原始字符串请求体,与 json_body 二选一。 timeout: 请求超时秒数。 max_bytes: 最多读取的响应字节数,超出会被截断。 follow_redirects: 是否跟随重定向;每一跳都会重新执行安全检查。

Inputs: url (required), method (required), body, params, +5 more. Returns: result

kb_addA

向知识库添加或更新一篇文档。

Args: source: 文档唯一标识,例如 URL、文件路径或自定义 ID。 content: 文档正文。 title: 标题。 tags: 逗号分隔的标签,便于后续过滤。 replace: source 已存在时是否覆盖。

Inputs: source (required), content (required), tags, title, +1 more. Returns: result

kb_deleteC

按 ID 或 source 删除知识库文档。

Args: key: 文档 ID 或 source。

Inputs: key (required). Returns: result

kb_exportA

导出知识库为 JSON。

Args: path: 导出文件路径(必须在知识库目录内);留空则直接返回 JSON。 include_embeddings: 是否包含向量数据。

Inputs: path, include_embeddings. Returns: result

kb_getB

按 ID 或 source 读取一篇知识库文档。

Args: key: 文档 ID、source 或 URL。 max_chars: 正文最大字符数,100-200000。

Inputs: key (required), max_chars. Returns: result

kb_learn_fileB

从本地文本文件学习内容并写入知识库。

Args: path: 相对于 files.root 沙箱的文件路径。 tags: 逗号分隔的标签。

Inputs: path (required), tags. Returns: result

kb_learn_urlB

抓取网页、提取正文并写入知识库(自学习入口)。

Args: url: 要学习的 http/https 地址。 tags: 逗号分隔的标签。 title: 可选标题;留空使用网页标题。

Inputs: url (required), tags, title. Returns: result

kb_listB

列出知识库中的文档。

Args: limit: 返回数量,1-500。 offset: 分页偏移。 tags: 逗号分隔的标签过滤。

Inputs: tags, limit, offset. Returns: result

kb_reindexA

重建全文索引(在数据库被外部修改后使用)。

Inputs: no named parameters. Returns: result

kb_rememberA

记住一条事实或笔记(供 Agent 自学习时调用;自动去重)。

Args: content: 要长期记住的内容。 title: 可选标题。 tags: 逗号分隔的标签。 source: 可选唯一标识;默认按内容哈希生成。

Inputs: content (required), tags, title, source. Returns: result

kb_statsA

查看知识库统计信息(文档数、片段数、FTS 与向量状态)。

Inputs: no named parameters. Returns: result

sqlite_describeB

查看 SQLite 表结构。

Args: database: 数据库文件名或沙箱内的路径。 table: 表名或视图名。

Inputs: table (required), database (required). Returns: result

sqlite_executeA

执行单条写操作 SQL(需开启 sqlite.allow_write)。

Args: database: 数据库文件名或沙箱内的路径;不存在时会创建。 sql: 单条 INSERT / UPDATE / DELETE / CREATE 等语句。 params: 绑定参数列表,使用 ? 占位符。

Inputs: sql (required), database (required), params. Returns: result

sqlite_list_tablesA

列出 SQLite 数据库中的表和视图。

Args: database: 数据库文件名(相对于 sqlite.root)或沙箱内的路径。

Inputs: database (required). Returns: result

sqlite_queryA

以只读方式执行 SQL 查询。

Args: database: 数据库文件名或沙箱内的路径。 sql: 单条 SQL 查询语句(SELECT / WITH / PRAGMA 等)。 params: 绑定参数列表,使用 ? 占位符。 max_rows: 最多返回行数;0 表示使用配置上限。

Inputs: sql (required), database (required), params, max_rows. Returns: result

web_fetchA

抓取网页并提取可读正文,用于阅读搜索结果或在线文档。

Args: url: 要抓取的 http/https URL。 max_chars: 正文字符上限,100-50000。 include_links: 是否同时返回页面中的链接。 max_links: include_links=true 时最多返回多少条链接。

Inputs: url (required), max_chars, max_links, include_links. Returns: result

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.4/5.0

    Scored across 35 tools

    Disambiguation4/5

    Prefix-based grouping (fs_, sqlite_, github_, kb_, web_) makes most tools clearly distinct, and read/list/search/stat are well separated within each domain. The main ambiguity is the knowledge-base ingestion quartet (kb_add, kb_remember, kb_learn_url, kb_learn_file), which all write documents with overlapping semantics, plus some overlap between web_fetch, http_request, and kb_learn_url.

    Naming Consistency4/5

    Almost everything follows a predictable snake_case prefix_verb/noun pattern (fs_read, sqlite_query, github_create_issue, kb_search). The only deviations are the three unprefixed standalone utilities (get_weather, get_time, convert_currency) and slight verb inconsistency between kb_add and kb_remember.

    Tool Count3/5

    35 tools is heavy on its own, but the server is explicitly a multi-domain toolkit (filesystem, SQLite, GitHub, knowledge base, web, utilities), so each domain contributes a bounded, purposeful subset. Still, the sheer surface is large enough that an agent must route across many prefixes, and the three one-off utility tools feel peripheral.

    Completeness4/5

    Filesystem and SQLite cover full CRUD lifecycles, the knowledge base has add/search/get/list/stats/reindex/delete/export, and web access is covered by search, fetch, and a generic http_request. GitHub is the weakest area: no PR creation/merge, no update/close issue, and no comment operations, but the read/create core is present.

    Maintenance

    ActivityMaintained
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      Not graded
      quality
      D
      maintenance
      A production-ready Python MCP server providing tools for fetching live weather data, querying local SQLite databases, reading files, summarizing webpages, and performing safe mathematical calculations. It enables MCP-compatible LLM clients to execute these tasks autonomously as part of agentic workflows.
      -
    • F
      license
      A
      quality
      D
      maintenance
      Lightweight MCP server that exposes tools for system information and weather lookup, designed for agent integration via stdio.
      1
      -
    • A
      license
      Not graded
      quality
      B
      maintenance
      A passive MCP server that exposes a toolbox of executable tools (shell, network, HTTP, AI search, SSH, S3 file operations) to autonomous agents via Streamable HTTP, with strong security features including Docker sandboxing and WAF.
      2
      Apache 2.0
    • F
      license
      Not graded
      quality
      D
      maintenance
      Enterprise MCP server providing a suite of tools including file, database, GitHub, Slack, calendar, email, vector search, and Python execution, with safe defaults and OpenAI integration for automatic tool selection.
      -