全栈MCP集线器
FullStack MCP Hub——完整的MCP工具包,内置RAG、GUI和50多种免费工具(无付费API),开箱即用。
适用于:
- OpenAI/ChatGPT Codex CLI
- 双子座命令行界面
- ChatGPT(开发模式) 通过自定义连接器
- 克劳德 (台式机/MCP)
- 本地LLMs (llama.cpp、LM工作室等)
- 基本上 *任何事物* 可以通过以下方式连接到MCP服务器 标准 或 上海证券交易所
FullStack MCP Hub为您提供的不是每个模型都有自己的隔离工具和半内存 一个中央MCP堆栈:
- A. 网关+集线器 它连接到多个MCP服务器,发现工具,并通过单个端点公开它们。
- A. 图形UI 您可以在哪里:
- 从所有连接的服务器浏览工具, - 编辑工具描述, - 阻止你不想使用的工具, - 保存有效载荷预设, - 并使用JSON输入和真实响应运行工具。
- A. 内置RAG系统 有自己的选项卡:
- 将文件直接拖放到UI中, - 浏览您的RAG文件夹(uploads, saved_chats, images, indexes、配置文件), - 从目录创建命名索引, - 使用关键字+模糊匹配+过滤器进行搜索, - 并将该上下文连接到您正在使用的任何模型中。
开箱即用,你会得到一个 坚固、免费的MCP工具栈 (无需付费API):
- 文件系统、shell、Python REPL(有自己的venv)
- 本地RAG(分块搜索、过滤器等),
save_chat,save_image) - 剧作家(浏览器自动化、截图、交互式浏览)
- SQLite(读/写、模式、见解)
- 网络搜索(快速DuckDuckGo+深度多引擎克隆)
- 研究(维基百科、arXiv、维基媒体图片)
- 刮刀(HTML→ text)
- 通过投票生成图像(基于URL)
- CoinGecko市场数据(经过策划,基于上交所)
- 时钟/时间实用程序
目标: 使MCP服务器集成变得容易,并为您提供一个可重用的工具+RAG层,您可以将其插入任何LLM工作流中——云、本地或混合。
______________________________________________________________________
截图
______________________________________________________________________
快速安装和首次运行
想法:\ 克隆→ 运行一个脚本→ 打开UI→ 开始添加MCP服务器。
需求
- Node.js 18+
npm- Linux/macOS shell(bash/zsh)或Windows上的WSL
你做到了 *不* 需要任何付费的API密钥才能开始。\ 所有捆绑的MCP服务器都在本地运行,并使用免费/公共数据源。
______________________________________________________________________
1.克隆仓库
git clone https://github.com//FullStack_MCP_Hub.git
cd FullStack_MCP_Hub设置根路径(由辅助脚本使用):
export MCP_ROOT="$(pwd)"(可选)将此添加到您的shell rc中(~/.bashrc 或 ~/.zshrc)所以它总是被设置:
echo "export MCP_ROOT=/full/path/to/FullStack_MCP_Hub" >> ~/.bashrc重新加载shell或在添加后打开新终端。
______________________________________________________________________
2.一次性设置(推荐)
这将:
- 安装网关和UI依赖关系,
- 构建React UI,
- 为Playwright MCP服务器安装Playwright浏览器。
从repo根目录:
cd "$MCP_ROOT"
chmod +x setup.sh start.sh
./setup.sh运行一次。如果它没有错误地完成,您就可以启动集线器了。
______________________________________________________________________
3.启动集线器+UI
从repo根目录:
cd "$MCP_ROOT"
./start.sh这将:
- 启动MCP网关 http://localhost:3333
- 暴露:
- GET /tools –列出工具 - GET /sse –通用MCP SSE端点 - POST /gemini/v1/execute –Gemini风格适配器
- 服务于 web用户界面 在 http://localhost:3333
打开浏览器:
http://localhost:3333中频端口 3333 已在使用中:
lsof -i :3333
kill
./start.sh______________________________________________________________________
4.手动设置(如果您不想使用setup.sh)
如果您更喜欢查看各个步骤:
- 安装网关deps:
cd "$MCP_ROOT/gateway"
npm install- 安装UI deps并构建:
cd "$MCP_ROOT/gateway/ui"
npm install
npm run build- 启动网关:
cd "$MCP_ROOT/gateway"
npm start- 打开用户界面:
http://localhost:3333______________________________________________________________________
5.第一台MCP服务器(剧作家示例)
打开UI后:
- 转到 服务器 部分(左侧边栏)。
- 点击 “打开表单”.
- 填写表格:
- 运输: stdio - 命令: npx - Args: -y @automatalabs/mcp-server-playwright - CWD: servers (相对于回购根)
- 点击 测试连接.
- 成功后,单击 添加服务器.
现在,您应该看到一组 playwright__* 列表中的工具。
要快速进行健全性检查,请选择 playwright__browser_navigate 并运行:
{ "url": "https://example.com" }然后运行 playwright__browser_screenshot:
{ "name": "example_full", "fullPage": true }您应该在配置的Playwright输出路径中看到一个屏幕截图文件。
此时,集线器正在工作并准备插入:
- OpenAI/ChatGPT Codex CLI
- 双子座命令行界面
- ChatGPT开发模式
- 克劳德 或任何其他MCP感知客户端。
______________________________________________________________________
架构和仓库布局
FullStack MCP Hub有三个主要层: 中心, 网关,以及 用户界面,再加上一组捆绑的MCP服务器和RAG数据目录。
回购布局
hub/
MCP集线器核心:
- 连接到配置的MCP服务器, - 列出所有服务器上的工具, - 执行呼叫, - 合并工具元数据, - 应用描述覆盖和阻止列表。
gateway/
HTTP/SSE前门:
- 暴露:
- GET /tools –列举工具 - GET /sse –通用MCP端点 - POST /gemini/v1/execute –Gemini风格适配器
- 从以下位置提供内置UI gateway/ui/dist.
gateway/ui/
React+Vite用户界面:
- 工具列表和详细信息窗格 - 服务器管理(添加/测试/删除) - 被阻止的工具视图 - 工具有效载荷预设 - RAG选项卡(拖放上传、浏览文件夹、搜索索引)
tool-registry/master.json
- MCP服务器注册表(stdio+SSE)及其配置。
tool-registry/tool-overrides.json
- 按工具描述覆盖(在UI中可编辑)。
tool-registry/tool-blocklist.json
- 持久工具块列表(从UI的“阻止”选项卡管理)。
servers/
- 需要以下条件的捆绑MCP服务器 不 付费API:
- local_rag - sqlite - python_repl - research - scrape - pollinations - coingecko - websearch - web-search-mcp (高级) - playwright - shell - filesystem
data/rag/
- 本地RAG存储:
- uploads/ –通过UI导入的任意文件。 - saved_chats/ –原始+摘要聊天记录。 - images/ –保存的图像来自 local_rag__save_image. - profile_* –个人资料文件夹(例如。 profile_jeff). - indexes/ –每个索引文件夹(如果使用)。 - indexes.pkl –一个持久的全局索引元数据文件。
______________________________________________________________________
RAG系统(“1.5代”)
内置RAG系统的设计目的是:
- 轻量级 (无需嵌入),
- 分块的 (约500个单词块),
- 模糊可搜索,
- 和 可过滤的 (路径、标签、时间)。
它是如何工作的(高级)
- 您将文件放入
data/rag/(通常通过UI中的RAG选项卡)。
- 你点
local_rag__create_index在目录中,为索引命名。
- 服务器:
- 浏览该目录, - 提取文本, - 将每个文件分割成约500个重叠的单词块, - 存储块+元数据, - 并将该结构持久化 indexes.pkl.
- 当你使用
local_rag__search_index:
- 它查找所选索引, - 在块上运行关键字+模糊搜索, - 应用可选过滤器(如 path_contains, tag或mtime), - 并返回具有足够上下文的匹配块以馈送到模型中。
“1.5代”升级
“1.5代”RAG升级改进了几个关键方面:
- 路径处理
- local_rag__create_index 和 local_rag__search_index 现在处理 正确的相对路径,因此您可以将索引指向以下目录 data/rag/ 无需硬编码绝对路径。
- 分块索引
- local_rag__create_index 将内容拆分为 约500个重叠的单词块,而不是为整个文件建立索引。 - 这提高了相关性,并使传递回模型的文本量易于管理。
- 模糊搜索
- local_rag__search_index 支持 模糊匹配,所以轻微的拼写错误或措辞变化不会影响召回。 - 它在预分块文本上使用滑动窗口+相似性评分方法。
- 过滤器
- path_contains 已确认工作正常。
- 其他过滤器(tag,mtime过滤器)已实现,并按预期运行:
- tag 来源于以下行 #tags: project, profile 在你的降价中。 - 时间过滤器使用文件修改时间来缩小搜索块的范围。
总体而言,这为您提供了一个介于以下两者之间的RAG系统:
- 纯关键字搜索 (太笨了,没有大块,没有模糊),以及
- 全矢量/嵌入RAG (更重,需要额外的型号+基础设施),
同时保持个人/本地知识库的简单和快速。
您(或贡献者)稍后可以在顶部添加可选的向量层,而不会破坏现有的API。
______________________________________________________________________
RAG文件夹和工作流程
文件夹布局
在...之下 data/rag/ 您通常会看到:
uploads/
- 通过RAG选项卡拖放的文件。
saved_chats/
- 由创建的文件 local_rag__save_chat,通常:
- 完整的原始转录文件, - 摘要文件, - 用时间戳+模型名称编码的文件名。
images/
- 由创建的文件 local_rag__save_image base64有效载荷。
profile_template/
- 模板配置文件: profile_public.md.
profile_*(例如。profile_jeff/)
- 您的实际个人资料数据:
- profile_public.md (姓名、首选项、项目等)。
indexes/
- 如果每个索引存储额外的元数据,则每个索引结构都是可选的。
indexes.pkl
- 跟踪所有索引和缓存文本的单个持久文件。
典型RAG流量
- 创建个人资料
- 复制模板:
mkdir -p data/rag/profile_jeff
cp data/rag/profile_template/profile_public.md data/rag/profile_jeff/- 编辑 profile_public.md 您的个人信息和偏好。
- 在顶部附近添加标记线(可选):
#tags: profile, persona- 为它创建一个索引:
{
"index_name": "profile_jeff",
"directory": "data/rag/profile_jeff"
}通过 local_rag__create_index.
- 在新聊天中使用您的个人资料
- 在连接到此集线器的任何客户端中,要求它调用 local_rag__search_index 与:
{
"index_name": "profile_jeff",
"query": "profile persona",
"max_results": 5
}- 然后告诉模型在剩下的会话中记住这个配置文件。
- 保存聊天记录
- 当谈话很重要时,打电话 local_rag__save_chat 与:
- 完整成绩单, - 可选摘要, - 型号/客户名称。
- 文件将被放入 data/rag/saved_chats/ 带有时间戳的名字。
- 索引和搜索项目文件夹
- 将项目文件夹放在 data/rag/uploads/my_project/.
- 创建索引:
{
"index_name": "my_project",
"directory": "data/rag/uploads/my_project"
}- 稍后,通过搜索 local_rag__search_index 以便快速回忆。
______________________________________________________________________
工具参考(56个捆绑工具)
一旦服务器连接,所有工具都会通过MCP集线器暴露出来。
文件系统(14个工具)
filesystem__create_directoryfilesystem__directory_treefilesystem__edit_filefilesystem__get_file_infofilesystem__list_allowed_directoriesfilesystem__list_directoryfilesystem__list_directory_with_sizesfilesystem__move_filefilesystem__read_filefilesystem__read_media_filefilesystem__read_multiple_filesfilesystem__read_text_filefilesystem__search_filesfilesystem__write_file
使用这些用于检查、读取、写入和组织允许根下的文件和目录(在文件系统MCP服务器上配置)。
______________________________________________________________________
本地RAG(6个工具)
local_rag__create_index
从文本文件目录(分块)构建一个命名索引。
local_rag__search_index
使用关键字+模糊匹配和可选过滤器搜索命名索引。
local_rag__list_files
列出RAG目录中的文件。
local_rag__list_indexes
列出所有可用索引。
local_rag__read_file
读取由local_rag管理的文件。
local_rag__save_chat
将原始+摘要聊天保存到 data/rag/saved_chats/.
local_rag__save_image
将base64图像保存到 data/rag/images/.
______________________________________________________________________
外壳(1个工具)
shell__run_command
在主机上执行shell命令。 功能强大且具有潜在危险性——适用于可信的本地设置。
______________________________________________________________________
剧作家(10种工具)
playwright__browser_navigateplaywright__browser_screenshotplaywright__browser_clickplaywright__browser_click_textplaywright__browser_fillplaywright__browser_selectplaywright__browser_select_textplaywright__browser_hoverplaywright__browser_hover_textplaywright__browser_evaluate
使用这些实现浏览器的完全自动化:
- 打开页面,
- 填写表格,
- 点击按钮/链接,
- 运行JS,
- 并截取屏幕截图。
______________________________________________________________________
SQLite(6个工具)
sqlite__read_querysqlite__write_querysqlite__create_tablesqlite__list_tablessqlite__describe_tablesqlite__append_insight
非常适合直接从LLM运行中存储结构化日志、指标和注释。
______________________________________________________________________
网络搜索(基础+高级,3个工具)
websearch__web_search
使用片段快速搜索DuckDuckGo。
websearch_adv__full-web-search
多引擎深度搜索,全页面提取。
websearch_adv__get-single-web-page-content
强大的单页内容提取器。
______________________________________________________________________
研究(3种工具)
research__wikipedia_searchresearch__arxiv_searchresearch__images_search_commons
这些为技术/学术问题和图像查找提供了高信号参考材料。
______________________________________________________________________
Python REPL(3个工具)
python_repl__execpython_repl__resetpython_repl__pip_install
具有自己venv的持久Python进程:
- 运行分析代码,
- 解析/转换数据,
- 安装以下软件包
pandas,numpy等,无需接触系统Python。
______________________________________________________________________
刮刀(1个工具)
scrape__scrape_page
获取一个URL并返回干净的文本和标题。 当你想要快速HTML时很好→不运行完整浏览器的文本。
______________________________________________________________________
民意调查(2个工具)
pollinations__generateImageUrl
从文本提示生成图像URL(无付费API密钥)。
pollinations__listImageModels
了解哪些型号可用。
______________________________________________________________________
CoinGecko(4工具)
CoinGecko MCP服务器的管理子集(基于SSE):
coingecko__get_simple_pricecoingecko__get_coins_marketscoingecko__get_range_coins_market_chartcoingecko__get_search
使用这些工具可以快速查找价格、市场列表和基本图表。
______________________________________________________________________
时钟(2个工具)
clock__now
当前时间(UTC+本地)和ISO格式。
clock__add_delta
从现在开始加上或减去时间增量(天/小时/分钟)。
______________________________________________________________________
从其他LLM客户端使用此集线器
CLI 游戏
- 将您的Gemini MCP配置指向:
http://localhost:3333/sse- 或者,使用
POST /gemini/v1/execute端点作为脚本中的Gemini风格适配器。
连接后,Gemini CLI可以:
- 列出工具,
- 调用50多种工具中的任何一种,
- 将RAG索引用作上下文。
OpenAI/ChatGPT Codex命令行界面
- 配置指向以下位置的自定义MCP端点:
http://localhost:3333/sse- 使用Codex CLI的MCP集成(您选择的服务器名称)访问与UI相同的工具和RAG。
ChatGPT(开发模式)
- 添加a 定制MCP连接器 在开发模式下。
- 如果
http://localhost:3333被环境阻挡:
- 使用 ngrok (或类似)暴露它:
ngrok http 3333- 使用生成的 超文本传输安全协议 URL作为MCP端点。
然后,您可以在Dev Mode聊天中使用相同的工具/RAG堆栈。
Claude(桌面/MCP感知应用程序)
- 添加指向同一SSE端点的MCP服务器:
http://localhost:3333/sse- Claude将看到中心中定义的工具,并可以像UI一样调用它们。
______________________________________________________________________
安保/安全注意事项
这个堆栈是 强大的它揭示了:
- 完全文件系统访问(在允许的根内读/写/移动/删除),
- 系统外壳执行,
- 浏览器自动化,
- SQLite写入。
推荐基础知识:
- 运行集线器 本地主机 或者在VPN后面。
- 只连接您信任的LLM客户端。
- 小心那些鼓励任意shell命令的提示。
- 使用 已屏蔽 选项卡禁用不希望特定客户端使用的工具。
- 对于“安全”与“全功率”环境,考虑单独的集线器实例或单独的工具注册表。
______________________________________________________________________
故障排除
- 正在使用的端口(
EADDRINUSE)
- 看看有什么 :3333:
lsof -i :3333- 杀死它:
kill
- 重新启动:
./start.sh- 添加服务器时“测试连接”失败
- 仔细检查:
- Command 存在于您的PATH中(node, python3, npx等等)。 - Args 对于该MCP服务器是正确的。 - CWD 指向正确的文件夹。 - 对于SSE:URL以结尾 /sse 服务器实际上正在运行。
- 请重试并读取UI中返回的错误。
- 添加服务器后没有显示任何工具
- 点击 刷新工具 在UI中。
- 如果仍然为空:
- 检查 tool-registry/master.json 对于拼写错误, - 重新启动网关(Ctrl+C 然后 ./start.sh).
- 一台服务器不断出现故障/垃圾邮件错误
- 确保其依赖项已安装。 - 在注册表中暂时禁用它,或通过 已屏蔽 选项卡。 - 一旦事情解决,就重新添加它。
- 托管用户界面无法访问本地主机
- 使用 ngrok (或类似)以暴露您的集线器:
ngrok http 3333- 使用HTTPS URL作为该客户端中的MCP端点。
______________________________________________________________________
路线图/想法
该项目可以发展的一些方向:
- 可选的 基于矢量的RAG 层(嵌入+向量存储)。
- 每个索引元数据,而不是单个元数据
indexes.pkl.
- 内建 调度器 用于基于时间的作业的MCP服务器(按计划运行工具)。
- RAG+SQLite之上的更高级“注释”和“项目”API。
- 每个客户端的配置文件和预设(例如,不同LLM的不同默认值)。
- 更多捆绑服务器:
- 电子邮件/日历/联系人集成, - 额外的搜索/抓取工具, - 专业开发工具。
______________________________________________________________________
联系与协作
由...创建 杰夫·布尔格
- 网站: https://jeffbulger.dev
- 电子邮件:
admin@jeffbulger.dev - github:
如果您对以下内容感兴趣:
- MCP工具和服务器,
- LLM“全栈”工作流,
- RAG+搜索,
- 自动化/“LLM运维”,
问题、公关和想法都是受欢迎的。
______________________________________________________________________
许可证
许可证(MIT、Apache-2.0等)。
