关于 mcp-my-site
mcp-my-site 可将单个网站爬取并建立关键词或混合索引,再通过 ASP.NET Core 提供 MCP 搜索与抓取工具,也可供网站搜索框调用 JSON API。适用于希望让 AI 客户端检索并阅读网站内容的网站运营者。
主要功能
- 01网站爬取与索引构建
- 02关键词与向量混合搜索
- 03MCP 搜索和抓取工具
- 04供网站使用的 JSON 搜索 API
- 05索引更新后热切换
- 06支持 OpenAI 兼容嵌入服务
适用场景
- 01让 AI 客户端查找网站页面内容
- 02为网站搜索框提供索引查询接口
- 03无需 API 密钥构建关键词索引
- 04通过嵌入服务增强语义检索
MCP 相关
服务器通过 Streamable HTTP 暴露 search 和 fetch 工具,并根据网站生成服务器说明。命令行索引器负责爬取网站并构建供服务读取的索引。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://ai.pournasserian.com/mcpclaude mcp add --transport http pournasserian-mcp-my-site https://ai.pournasserian.com/mcp{"mcpServers":{"pournasserian-mcp-my-site":{"type":"http","url":"https://ai.pournasserian.com/mcp"}}}在 Cursor 中打开{"servers":{"pournasserian-mcp-my-site":{"type":"http","url":"https://ai.pournasserian.com/mcp"}}}在 VS Code 中打开{"mcpServers":{"pournasserian-mcp-my-site":{"type":"http","url":"https://ai.pournasserian.com/mcp"}}}{"mcpServers":{"pournasserian-mcp-my-site":{"serverUrl":"https://ai.pournasserian.com/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
ghcr.io/pournasserian/mcp-my-site:0.3.0Streamable HTTP工具
详细介绍
mcp-my-site
将它指向你的网站,ChatGPT、Claude 和任何其他 MCP 客户端就能搜索和阅读网站内容。
命令行索引器会爬取网站,并构建关键词与向量混合索引。一个小型 ASP.NET Core 应用将该索引作为带有 search 和 fetch 工具的 MCP 服务提供,同时也提供 JSON 搜索 API,供网站自己的搜索框使用。每个服务对应一个网站,适用于页面数少于 1,000 的网站。
立即试用
一个在线实例已为 pournasserian.com 建立索引:
| MCP 端点 | https://ai.pournasserian.com/mcp |
| 搜索 API | https://ai.pournasserian.com/api/search?q=mcp%20caching |
| API 参考 | https://ai.pournasserian.com/docs |
claude mcp add --transport http pournasserian https://ai.pournasserian.com/mcp
然后询问 Claude Code 与该网站相关的问题。对于 ChatGPT,将此端点添加为连接器;这些工具遵循连接器所期望的 search 和 fetch 契约。
快速开始
你需要 .NET 10 SDK。无需其他依赖:第一个索引仅使用关键词,因此不需要 API 密钥。
dotnet tool install --global mcpmysite
mcpmysite init https://example.com --keyword-only # writes appsettings.json
mcpmysite build # crawls the site into ./index
mcpmysite search "how can I contact you" # checks the index
docker run --rm -p 5000:8080 -v "$PWD/index:/index:ro" -e Index__Path=/index ghcr.io/pournasserian/mcp-my-site:latest
如果不使用 Docker,请克隆仓库,并在克隆目录中通过 Index__Path=index dotnet run --project src/McpMySite.Server 从源码运行服务,或将其发布(用户指南)。索引器也可以在克隆目录中通过 dotnet run --project src/McpMySite.Indexer -- ... 运行,这是试用尚未发布更改的方式。
现在服务已运行在 http://localhost:5000:/mcp 供 Agent 使用,/api/search?q=contact 提供 JSON,/healthz 用于检查已加载的索引。/ 上的首页会介绍如何连接各个客户端,以及如何使用 MCP Inspector 测试服务。
claude mcp add --transport http mysite http://localhost:5000/mcp
升级为混合搜索。 关键词搜索匹配词语;混合搜索还可以匹配含义,也是在线实例所使用的方式。它需要 OpenAI 兼容嵌入端点的 API 密钥,默认使用 OpenRouter,也可选择其他提供商;密钥从 AI_API_KEY 读取,绝不会写入文件。为小型网站生成嵌入只需不到一美分。
export AI_API_KEY=sk-...
# in appsettings.json, under Embeddings, change "Enabled": false to true, then rebuild and serve
mcpmysite build
docker run --rm -p 5000:8080 -v "$PWD/index:/index:ro" -e Index__Path=/index -e AI_API_KEY ghcr.io/pournasserian/mcp-my-site:latest
Windows PowerShell 和 cmd、无需在主机上安装 .NET 的 Docker 用法,以及其他 MCP 客户端(VS Code、Cursor、Claude Desktop)的说明,请参阅用户指南。
功能
- 混合搜索。 对嵌入向量执行 BM25 关键词搜索和向量搜索,并按查询融合结果;嵌入提供方不可用时,则回退到仅关键词搜索。
- 无需密钥即可使用。 仅关键词索引完全不需要嵌入提供方;只需更改一个设置并重新构建,即可稍后切换到混合搜索。
- 适用于 ChatGPT 和 Claude。 提供可流式传输的 HTTP MCP 端点,其中包含符合 ChatGPT 连接器使用格式的
search和fetch工具,并根据网站生成服务器说明。适用于 Claude Code、Claude Desktop、VS Code、Cursor 和 MCP Inspector。 - 易于发现。
/mcp/server-card提供 MCP 服务器卡片(SEP-2127),其中包含端点、协议版本以及是否需要密钥;/llms.txt则列出为大模型编入索引的页面。 - 适用于自有网站的搜索 API。
GET /api/search支持 CORS、速率限制、偏移分页、OpenAPI 3.1 文档和交互式参考。在用户指南中提供了可直接用于搜索框的代码片段。 - Docker 镜像。
docker pull ghcr.io/pournasserian/mcp-my-site:latest;挂载索引或指定 URL。 - 热切换。 服务会轮询索引来源,并在无需重启的情况下切换到新构建的索引。
- 遥测。 将 OpenTelemetry 跟踪、指标和日志发送到 Application Insights 或任何 OTLP 收集器。除非启用,否则不会记录查询文本。
- 支持任意嵌入提供方。 默认使用 OpenRouter;任何兼容 OpenAI 的端点均可使用。
文档
仓库
| 路径 | 内容 |
|---|---|
src/McpMySite.Core | 索引模型和清单、JSON 和 SQLite 存储、混合搜索、嵌入客户端 |
src/McpMySite.Indexer | mcpmysite CLI:抓取、提取、分块、嵌入、写入 |
src/McpMySite.Server | ASP.NET Core 应用:MCP 端点、搜索 API、索引加载、遥测 |
tests/McpMySite.Tests | 单元测试和集成测试 |
dotnet build
dotnet test
问题和想法请提交至 Discussions;错误请提交至 Issues。更改只能通过拉取请求合并到 master。MIT 许可证。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。