About mcp-my-site
mcp-my-site crawls one website into a keyword or hybrid index, then serves MCP search and fetch tools through ASP.NET Core, alongside a JSON API for the site's own search box. It is for site operators who want AI clients to find and read their content.
Key features
- 01Website crawling and index building
- 02Hybrid keyword and vector search
- 03MCP search and fetch tools
- 04JSON search API for websites
- 05Hot-swapping updated indexes
- 06OpenAI-compatible embedding providers
Use cases
- 01Let AI clients find pages on a website
- 02Power a site's search box from its index
- 03Build a keyword index without an API key
- 04Add semantic retrieval with an embedding provider
MCP support
The server exposes search and fetch tools over Streamable HTTP, with server instructions generated from the site. A command-line indexer crawls the website and builds the index the server reads.
Configuration
Remote servers need no local install. Pick your client, then copy the config or install in one click.
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"}}}Open in Cursor{"servers":{"pournasserian-mcp-my-site":{"type":"http","url":"https://ai.pournasserian.com/mcp"}}}Open in 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"}}}Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.
ghcr.io/pournasserian/mcp-my-site:0.3.0Streamable HTTPTools
Details
From the project READMEmcp-my-site
Point it at your website and ChatGPT, Claude and any other MCP client can search and read it.
A command-line indexer crawls the site and builds a hybrid keyword and vector index. A small
ASP.NET Core app serves that index as an MCP server with search and fetch tools, and as a JSON
search API for the site's own search box. One site per server, built for sites under 1,000 pages.
Try it now
A live instance indexes pournasserian.com:
| MCP endpoint | https://ai.pournasserian.com/mcp |
| Search API | https://ai.pournasserian.com/api/search?q=mcp%20caching |
| API reference | https://ai.pournasserian.com/docs |
claude mcp add --transport http pournasserian https://ai.pournasserian.com/mcp
Then ask Claude Code something about the site. For ChatGPT, add the endpoint as a connector; the
tools follow the search and fetch contract its connectors expect.
Quick start
You need the .NET 10 SDK. Nothing else: the first index is keyword-only, so no API key is involved.
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
Without Docker, clone the repository and run the server from source with
Index__Path=index dotnet run --project src/McpMySite.Server from the clone, or publish it
(user guide). The indexer also runs from a clone as
dotnet run --project src/McpMySite.Indexer -- ..., which is how to try unreleased changes.
The server is now at http://localhost:5000: /mcp for agents, /api/search?q=contact for JSON,
/healthz for the loaded index. The landing page at / shows how to connect each client and how to
test the server with the MCP Inspector.
claude mcp add --transport http mysite http://localhost:5000/mcp
Upgrade to hybrid search. Keyword search matches words; hybrid search also matches meaning, and
is what the live instance runs. It needs an API key for an OpenAI-compatible embeddings endpoint,
OpenRouter by default or another provider; the key is read
from AI_API_KEY and never written to a file. A small site embeds for a fraction of a cent.
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 and cmd, Docker without .NET on the host, and other MCP clients (VS Code,
Cursor, Claude Desktop) are in the user guide.
Features
- Hybrid search. BM25 keyword search and vector search over embeddings, fused per query, with a keyword-only fallback when the embedding provider is unavailable.
- Works without a key. A keyword-only index needs no embeddings provider at all; switch to hybrid search later with one setting and a rebuild.
- ChatGPT and Claude ready. Streamable HTTP MCP endpoint with
searchandfetchtools in the shape ChatGPT connectors use, and server instructions generated from the site itself. Works with Claude Code, Claude Desktop, VS Code, Cursor and the MCP Inspector. - Discoverable.
/mcp/server-cardserves the MCP server card (SEP-2127) with the endpoint, the protocol versions and whether a key is needed, and/llms.txtlists the indexed pages for language models. - Search API for your own site.
GET /api/searchwith CORS, rate limiting, offset paging, an OpenAPI 3.1 document and an interactive reference. Drop-in snippet for a search box in the user guide. - Docker image.
docker pull ghcr.io/pournasserian/mcp-my-site:latest; mount the index or point it at a URL. - Hot swap. The server polls the index source and swaps in a new build without a restart.
- Telemetry. OpenTelemetry traces, metrics and logs to Application Insights or any OTLP collector. Query text is not logged unless you turn it on.
- Any embeddings provider. OpenRouter by default; any OpenAI-compatible endpoint works.
Documentation
- User guide: installation, every setting, connecting clients, deployment, troubleshooting, FAQ.
- Architecture: how the indexer, the index format and the server fit together.
- Changelog and contributing.
Repository
| Path | What |
|---|---|
src/McpMySite.Core | Index model and manifest, JSON and SQLite stores, hybrid search, embedding client |
src/McpMySite.Indexer | The mcpmysite CLI: crawl, extract, chunk, embed, write |
src/McpMySite.Server | ASP.NET Core app: MCP endpoint, search API, index loading, telemetry |
tests/McpMySite.Tests | Unit and integration tests |
dotnet build
dotnet test
Questions and ideas go to Discussions;
bugs to Issues. Changes land on master
through pull requests only. MIT licence.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.