mcp-my-site

io.github.pournasserianPublished by GitHub account pournasserianv0.4.0Updated Oct 29, 2026

Search and fetch tools for one website, served from an index you build with the mcpmysite crawler.

VerifiedStreamable HTTPWeb executableWeb Search & ScrapingKnowledge & Memory

Overview

AI-generated overview

Serves a searchable index of one website, letting an assistant search its pages and fetch full page content as Markdown.

What you can do
  • Search the indexed site with a question or keywords and get matching pages with URLs and snippets
  • Fetch a single page by id or URL and return its full content as Markdown with title, description, language and last-modified date
  • Read-only access to a snapshot of the site's published pages, with server instructions generated from the site itself
When to use it
Useful when answers should rest on one specific website rather than general knowledge, for example a personal site, documentation or small marketing site under about 1,000 pages. The hosted instance covers only pournasserian.com; for any other site you build your own index with the crawler.
Requirements
Either connect to the hosted endpoint, or run the server yourself: the .NET 10 SDK to install the mcpmysite CLI and build an index, or the Docker image with the index folder mounted and Index__Path set. Hybrid semantic search additionally needs an OpenAI-compatible embeddings provider and an AI_API_KEY; a keyword-only index needs no key.
Before you install
The index is a snapshot, so later site changes are not covered. Hybrid search sends page text to an embeddings provider (OpenRouter by default) and requires AI_API_KEY; a small site costs a fraction of a cent. The tools are read-only, but the server also exposes a public search API and optional telemetry, and query text is not logged unless enabled.

Installation

In SourceWeft

  1. Open mcp-my-site in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.pournasserian%2Fmcp-my-site/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "my-site": {
      "type": "http",
      "url": "https://ai.pournasserian.com/mcp"
    }
  }
}

README

mcp-my-site

[CI] [License: MIT] [.NET 10]

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 endpointhttps://ai.pournasserian.com/mcp
Search APIhttps://ai.pournasserian.com/api/search?q=mcp%20caching
API referencehttps://ai.pournasserian.com/docs
bash
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.

bash
dotnet tool install --global mcpmysitemcpmysite init https://example.com --keyword-only   # writes appsettings.jsonmcpmysite build                                     # crawls the site into ./indexmcpmysite search "how can I contact you"            # checks the indexdocker 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.

bash
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.

bash
export AI_API_KEY=sk-...# in appsettings.json, under Embeddings, change "Enabled": false to true, then rebuild and servemcpmysite builddocker 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 search and fetch tools 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-card serves the MCP server card (SEP-2127) with the endpoint, the protocol versions and whether a key is needed, and /llms.txt lists the indexed pages for language models.
  • Listable in directories. Set Maintainers and the server serves /.well-known/mcpbundles.json and /.well-known/security.txt so a directory such as MCP Bundles can verify a maintainer before publishing (user guide).
  • Search API for your own site. GET /api/search with 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

Repository

PathWhat
src/McpMySite.CoreIndex model and manifest, JSON and SQLite stores, hybrid search, embedding client
src/McpMySite.IndexerThe mcpmysite CLI: crawl, extract, chunk, embed, write
src/McpMySite.ServerASP.NET Core app: MCP endpoint, search API, index loading, telemetry
tests/McpMySite.TestsUnit and integration tests
bash
dotnet builddotnet test

Questions and ideas go to Discussions; bugs to Issues. Changes land on master through pull requests only. MIT licence.

Source: README.md at commit f70c715

Tools

2

fetch

Fetch a page

Returns the full content of one page of the website as Markdown in text, with its title, description, language and last modified date. Pass the id (or url) of a search result.

Parametersidurl

Version history

4
  1. v0.4.0LatestOct 29, 2026
  2. v0.3.0Oct 24, 2026
  3. v0.2.2Oct 18, 2026
  4. v0.2.1Oct 17, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts