WebSharp.Mcp.Http 0.99.0-rc2

This is a prerelease version of WebSharp.Mcp.Http.
dotnet add package WebSharp.Mcp.Http --version 0.99.0-rc2
                    
NuGet\Install-Package WebSharp.Mcp.Http -Version 0.99.0-rc2
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="WebSharp.Mcp.Http" Version="0.99.0-rc2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="WebSharp.Mcp.Http" Version="0.99.0-rc2" />
                    
Directory.Packages.props
<PackageReference Include="WebSharp.Mcp.Http" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add WebSharp.Mcp.Http --version 0.99.0-rc2
                    
#r "nuget: WebSharp.Mcp.Http, 0.99.0-rc2"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package WebSharp.Mcp.Http@0.99.0-rc2
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=WebSharp.Mcp.Http&version=0.99.0-rc2&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=WebSharp.Mcp.Http&version=0.99.0-rc2&prerelease
                    
Install as a Cake Tool

WebSharp MCP HTTP Server

WebSharp is a Model Context Protocol (MCP) server written in C# (.NET 9) that exposes web search and readable page extraction tools over the streamable HTTP transport. It pairs a SearXNG metasearch instance with the SmartReader content extraction library and ships with Docker assets so you can run everything locally with one command.

Highlights

  • Streamable HTTP MCP endpoint served by ASP.NET Core via ModelContextProtocol.AspNetCore.
  • SearXNG-backed metasearch tool that returns both a readable summary and structured JSON metadata.
  • SmartReader-powered page reader tools for single URLs or batches, ideal for grounding and fact checking workflows.
  • Container-first development story with Docker Compose and an inspector-ready .mcp.json profile.

Available MCP tools

Parameter Type Default Notes
query string required Free-form search string submitted to the configured search backend (defaults to SearXNG).
limit integer 10 Maximum number of results to surface in the text summary. When set to 0 or negative, the parameter is omitted and the backend decides the result count.
categories string "general" Comma-separated categories forwarded to the backend (for SearXNG, examples include general,it,science).
language string "en" Language tag forwarded to the backend. When using the default SearXNG instance, see its language list.

Response

  • Text summary showing the top results, related suggestions, and any unresponsive engines.
  • structuredContent contains a JSON object with:
    • query: echo of the evaluated query string.
    • items: array of result objects (title, url, content, engine/engines, category, positions, parsed_url).
    • suggestions: related queries returned by the backend (SearXNG surfaces them when available).
    • unresponsive_engines: list of engines that timed out or failed, with optional messages.
    • error: present when the search could not be completed.

web_page_read

Parameter Type Default Notes
urls array<string> required One or more absolute HTTP/HTTPS URLs to fetch and parse.

Response

  • When a single URL is provided, returns the article title, excerpt, a preview of the readable text (~800 characters), and footer metadata (source URL, detected language).
  • When multiple URLs are provided, the summary includes overall success/failure counts, per-page details (title, URL, full text, language), and error messages for any failures. Requests run concurrently and honor the MCP cancellation token.
  • structuredContent is not populated; all data is returned in the text block.

Run everything with Docker Compose

  1. Install Docker Desktop (or another OCI-compatible runtime) and ensure it is running.
  2. From the repository root, start both the SearXNG dependency and the MCP server:
    docker compose -f docker-compose.yaml --project-name websharp up -d (add --build on the first run or whenever the Dockerfile changes).
  3. Wait until the websharp-mcp container reports Now listening on: http://0.0.0.0:8080.
  4. The MCP server is now reachable at http://localhost:8081 (mapped from container port 8080). SearXNG is available at http://localhost:8080/ for inspection.

Build the Docker image manually

Run the server image build without Docker Compose from the repository root:

docker build -f .\src\WebSharp.Mcp.Http\Dockerfile -t jessegador/websharp-mcp:v0.99.0-rc2 --no-cache src

Update -t to match the image registry and tag you plan to publish.

Connect with the MCP Inspector

  1. Start (or keep running) the compose stack above.
  2. Launch the Inspector with the included client profile:
    npx -y @modelcontextprotocol/inspector --config .\.mcp.json --server websharp-mcp
  3. Copy the printed token into the Inspector UI by opening http://localhost:6274/?MCP_PROXY_AUTH_TOKEN=<token> in your browser.
  4. In the Inspector UI, pick the websharp-mcp server to explore the available tools and try calls right away.

Running from source

  • Install the .NET 9 SDK.
  • Ensure you have access to a SearXNG endpoint. The easiest option is to keep using the Docker Compose service and export Searxng__BaseUrl to http://localhost:8080 before starting the app.
  • Launch the server:
    dotnet run --project src/WebSharp.Mcp.Http/WebSharp.Mcp.Http.csproj --urls http://localhost:8081
  • The MCP endpoint listens on /. In DEBUG builds you can hit /__routes to inspect the configured ASP.NET endpoints.

Configuration

Environment variable Default Description
ASPNETCORE_URLS http://0.0.0.0:8080 (Docker) Listening address(es) for the HTTP server. Override to change the exposed MCP port.
Searxng__BaseUrl http://searxng:8080 Base URL of the SearXNG instance. Required if you are not running the bundled Docker service. Must be an absolute URI.
Cors__AllowAnyOrigin true Permit all origins. Set to false when you want to limit callers via Cors__AllowedOrigins__0=<origin> style keys.
Cors__AllowAnyHeader true Allow all request headers.
Cors__AllowAnyMethod true Allow all HTTP methods.
Cors__AllowCredentials false When true, credentials are accepted and you must explicitly enumerate origins.
Cors__AllowedOrigins__{n} (empty) Optional origin allowlist entries when AllowAnyOrigin is false.
Cors__AllowedHeaders__{n} (empty) Optional header allowlist.
Cors__AllowedMethods__{n} (empty) Optional method allowlist.

All configuration values can also be supplied via appsettings.json/appsettings.Development.json. The Docker Compose definition mounts the correct defaults for local experimentation.

Using a different SearXNG instance

  • Point Searxng__BaseUrl at your hosted SearXNG deployment (for example https://searxng.example.com).
  • Make sure the endpoint you target exposes the SearXNG Search API and permits the categories/languages you request.
  • Consider adjusting the bundled searxng/settings.yml to tune activated engines, safe search, or rate limits before publishing to the MCP registry.

Security notes

  • The HTTP transport does not include authentication. Run behind a reverse proxy, tunnel, or VPN when exposing beyond localhost.
  • CORS defaults to permissive settings for debugging. Tighten them before deploying to shared environments.
  • The server respects MCP cancellation tokens, and page fetches enforce short HTTP timeouts to avoid hanging client sessions.

Registry metadata

  • Name: websharp-mcp
  • Transport: streamable-http
  • Endpoint: /
  • See .mcp.json for a ready-to-use inspector profile.

License

This project is available under the MIT license (see LICENSE).

Product Compatible and additional computed target framework versions.
.NET net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.99.0-rc2 20 9/22/2025