Pod

Yes, this is on purpose. Pod is built for agents, so the default page is plain HTML.
Human? View the normal website.
Agent? You probably prefer /mcp/mcp-plesk-dev-docs/issues.md or /mcp/mcp-plesk-dev-docs/issues.json, or Pod over MCP.

Reported issues for mcp-plesk-dev-docs

Pod holds 18 of 53 problems reported by people outside the maintainer team. Issues filed by the project's own owners, members and collaborators are excluded entirely — a maintainer's release checklist is not a warning to a prospective user.

Back to mcp-plesk-dev-docs.

Most discussed

Excise ghost profiles from settings and search

Problem

Three ghost profile names exist in the codebase that don't match the actual profiles in domain/models.py:_PROFILES:

Location Reference Actual profiles
config/settings.py:27 Default: "pro" light, medium, full, full-tq
search_service.py:195 Checks "local" light, medium, full, full-tq
search_service.py:197 Checks "pro" light, medium, full, full-tq

The default "pro" triggers a warning-and-fallback on

Read the thread · 2026-06-18 · closed · 1 comment

Introduce repository Protocol interfaces

Problem

SearchService.__init__ takes 6 Any-typed dependencies; IndexingService.__init__ takes 10. Every test constructs a full mock surface. Swapping a storage backend (e.g. LanceDB → another DB) means touching every consumer, not one seam.

Solution

Define Protocol classes for the three real repository seams:

Wire con

Read the thread · 2026-06-18 · closed · 1 comment

Seal the benchmark seam — lightweight RetrievalContainer

Problem

Benchmarks bootstrap the full production DI container (18 dependencies), mutate a process-global settings singleton at benchmark_runner.py:172, and duplicate TurboQuant index construction logic that already lives in storage_runtime.build_tq_index_from_table().

If benchmarking ever ran concurrently with search queries, the profile would silently change mid-flight due to global_settings.plesk_model_profile mutation.

Solution

Introduce a lightweight RetrievalContainer with

Read the thread · 2026-06-18 · closed · 1 comment

Progress notifications ctx.report_progress

Progress notifications via ctx.report_progress during long operations


Imported from beads issue tracker

Read the thread · 2026-06-18 · closed · 1 comment

LLM Sampling ctx.sample

LLM Sampling via ctx.sample (gated by PLESK_ENABLE_SAMPLING)


Imported from beads issue tracker

Read the thread · 2026-06-18 · closed · 1 comment

Search telemetry logging

Per-query search telemetry logged to OS logger


Imported from beads issue tracker

Read the thread · 2026-06-18 · closed · 1 comment

Rich markdown result cards

Rich markdown result cards instead of plain text output


Imported from beads issue tracker

Read the thread · 2026-06-18 · closed · 1 comment

VRAM auto-tuning

VRAM auto-tuning based on available GPU memory


Imported from beads issue tracker

Read the thread · 2026-06-18 · closed · 1 comment

Most recent

Run full MCP 2026-07-28 compliance audit

Parent

Spec: Full MCP 2026-07-28 compliance audit (#78)

What to build

After all migrations are complete, run a systematic audit against the 13-point checklist from the spec to verify full compliance, update the research document, and file gaps.

Acceptance criteria

# Check Expected result
1 Stateless protocol FastMCP 4 serves sessionless protocol

Read the thread · 2026-07-31 · open · 0 comments

Update Dockerfile for HTTP deployment and document remote usage

Parent

Spec: Add Streamable HTTP transport for remote deployment (#77)

What to build

Update the Dockerfile to default to HTTP transport and document how to deploy the server remotely.

Acceptance criteria

Read the thread · 2026-07-31 · open · 0 comments

Add PLESK_TRANSPORT config and branch main.py for HTTP mode

Parent

Spec: Add Streamable HTTP transport for remote deployment (#77)

What to build

Allow the server to run in Streamable HTTP mode in addition to the default stdio mode, controlled by the PLESK_TRANSPORT environment variable. The HTTP endpoint serves both modern 2026-07-28 and legacy handshake-era clients from the same URL via FastMCP 4's automatic protocol negotiation.

Acceptance criteria

Read the thread · 2026-07-31 · open · 0 comments

Upgrade FastMCP to 4.x with cache defaults

Parent

Spec: FastMCP 4.0 + Python SDK v2 upgrade (#76)

What to build

Upgrade the MCP framework from FastMCP 3.2.4 (SDK 1.27.0) to FastMCP 4.x (SDK 2.x) and adopt the production defaults for cacheable list results.

Acceptance criteria

Read the thread · 2026-07-31 · open · 0 comments

Spec: Full MCP 2026-07-28 compliance audit

Problem Statement

After completing the sampling migration, FastMCP 4 upgrade, and Streamable HTTP addition, the project needs a systematic audit to verify full compliance with the MCP 2026-07-28 specification. The spec introduces multiple changes beyond the headline ones — new error codes, new field naming conventions, server/discover requirements, per-request metadata conventions, cache hint expectations, OpenTelemetry propagation conventions, and authorization hardening. An audit ensures

Read the thread · 2026-07-31 · open · 0 comments

Spec: Add Streamable HTTP transport for remote deployment

Problem Statement

The MCP server currently runs on stdio transport only — it must be launched as a subprocess by an MCP client. This works well for local/desktop usage (Claude Desktop, IDE plugins) but prevents remote deployment scenarios: cloud-hosted servers, load-balanced fleets, serverless endpoints, and SaaS integrations. The MCP ecosystem increasingly expects Streamable HTTP as the transport for remote servers, and the 2026-07-28 spec requires Mcp-Method/Mcp-Name headers that are n

Read the thread · 2026-07-31 · open · 0 comments

Spec: FastMCP 4.0 + Python SDK v2 upgrade

Problem Statement

After migrating away from ctx.sample() (ticket #75), the project still runs on FastMCP 3.2.4 and Python MCP SDK 1.27.0, which speak the pre-2026-07-28 protocol era. These versions are pinned (fastmcp<4, mcp<2) to prevent accidental upgrades that would break the sampling-dependent code. Once sampling is migrated, those pins can be removed and the project can upgrade to FastMCP 4.0 + SDK v2, gaining:

Read the thread · 2026-07-31 · open · 0 comments

Main migration: Replace ctx.sample() with AIClient.generate_answer_async() in search synthesis

Parent

Spec: Migrate ctx.sample() to direct OpenRouter API calls (#73)

What to build

Replace the deprecated ctx.sample() call in _synthesize_answer() with a direct call to AIClient.generate_answer_async() that talks to OpenRouter. This removes the server's dependency on the MCP Sampling protocol feature, which is deprecated in MCP 2026-07-28 and removed in FastMCP 4.0.

Changes across these modules:

mcp_plesk_dev_docs/server/tools/search_tools.py

Read the thread · 2026-07-31 · open · 0 comments

Prefactor: Add AIClient.generate_answer_async() method for OpenRouter answer synthesis

Parent

Spec: Migrate ctx.sample() to direct OpenRouter API calls (#73)

What to build

Add a new async method generate_answer_async() to the existing AIClient class in infrastructure/ai_client.py. This method generates an answer from a query and context by calling the OpenRouter API with model fallback, and returns Optional[str] — it returns None when all models fail (graceful degradation).

This is a pure prefactor: the new method exists and is tested, but no caller uses it

Read the thread · 2026-07-31 · open · 0 comments

Spec: Migrate ctx.sample() to direct OpenRouter API calls (MCP 2026-07-28 compliance)

Problem Statement

The MCP 2026-07-28 specification (finalized July 28, 2026) deprecates the Sampling protocol feature — ctx.sample() will be removed no earlier than 2027-07-28. FastMCP 4.0 already removes ctx.sample() entirely on all protocol eras, meaning upgrading from FastMCP 3.2.4 is blocked until this code is migrated.

Currently, search_tools.py uses ctx.sample() via SamplingMessage/TextContent to ask the MCP host's LLM to synthesize an answer from search results. This crea

Read the thread · 2026-07-31 · open · 0 comments

The remaining reports are on the project's issue tracker.