Calibrated AI skill routing via orbital mechanics β picks the right expertise for every query.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Dynamic task routing via orbital mechanics. Domain-agnostic β candidates can be tools, prompts, documents, products, or any routable entity.
Per request, an LLM (Llama-3.3-70B via GitHub Models' free tier) emits N candidate routing entries. A deterministic classifier extracts a 9-scalar physics signature from each candidate's content alone β no curated lookup: mass (log-scaled body length Γ keyword count), scope, independence, cross_domain affinity (token-domain entropy across three star systems), fragmentation, drag, dep_ratio (max sibling Jaccard), lagrange_potential, coherence_time (gβ½ΒΉβΎ-style autocorrelation over the candidate's token stream β added in 3.1.0), plus orbital and optical parameters (semi-major axis, eccentricity, inclination, period, perihelion, aphelion, mean anomaly; wavelength, polarization, amplitude, phase). Six per-class scoring rules assign a celestial body class by argmax: planet, moon, trojan, asteroid, comet, or irregular.
The class-scoring rules:
Output: a deterministically ranked list with route_score, full classification, and decision rule per candidate. Wire format: Model Context Protocol over stdio or Streamable HTTP. Stdio shim is ~5 KB. Tested with Claude Code, Cursor, Windsurf, Goose, Continue, Grok custom connectors, ChatGPT custom MCPs, and Claude.ai connectors.
3.0 β renamed from
meridian-skills-mcp. The classifier was always domain-agnostic; the "skills" framing biased the LLM prompt toward AI-agent capabilities. v3 drops that framing across the prompt, code, branding, and npm name. Migration:npm i -g meridian-orbital(the old package is deprecated; both binaries are still namedmeridian-mcp/meridian-mcp-httpso client configs keep working). The hosted HTTP MCP atmcp.ask-meridian.uk/mcpcontinues to work β URL unchanged.
Same install works in Cursor, Windsurf, Goose, Continue, and any MCP client that speaks stdio.
You'll need a GitHub personal access token with the Models: read permission (free tier). Generate one at https://github.com/settings/personal-access-tokens/new and export it:
(The MCP also picks up plain GITHUB_TOKEN if you have one already in your environment.)
A hosted Streamable-HTTP variant lives at https://mcp.ask-meridian.uk/mcp with full OAuth 2.1 + PKCE so it slots into any host that requires a connector URL β Grok's custom MCP connectors, ChatGPT custom MCPs, Claude.ai connectors. No npm install, no PAT entry from your side, no infra.
In Grok's "Add custom connector" dialog, paste these:
| Field | Value |
|---|---|
| Server URL | https://mcp.ask-meridian.uk/mcp |
| Authorization endpoint | https://mcp.ask-meridian.uk/authorize |
| Token endpoint | https://mcp.ask-meridian.uk/token |
| Client ID | grok |
| Client secret | (empty) |
| Token auth method | none (PKCE only) |
| Scopes | route_task |
When you click "Authorize" in Grok, it opens /authorize β a one-click confirmation page (no PAT pasting, no GitHub jargon). Inference runs against GitHub Models using the operator's PAT, so end users see zero friction. Tokens last 1 hour and can be reauthorized any time.
The same URL works for ChatGPT custom MCPs and Claude.ai connectors β they speak the same MCP Streamable HTTP + OAuth 2.1 spec.
If you'd rather operate your own remote MCP, the package ships a Node binary:
Or via Docker (MCP_MODE=http flips the entrypoint):
Auth modes:
Authorization: Bearer β¦ is forwarded to GitHub Models. Users bring their own PAT.MERIDIAN_GATEWAY_TOKEN (what callers pass) + MERIDIAN_GITHUB_TOKEN (what the server uses for inference).The hosted Worker variant additionally implements OAuth 2.1 + PKCE; the Node binary is bearer-only (suitable for stdioβHTTP bridges and tools like curl).
Single tool: route_task(task, limit?).
Typical call takes 5β15 seconds. Each result ships its full markdown body so the caller agent can lift the candidate straight into its context window.
| Env var | Default | Purpose |
|---|---|---|
MERIDIAN_GITHUB_TOKEN | falls back to GITHUB_TOKEN | GitHub PAT with Models: read scope. Required. |
MERIDIAN_MODEL | meta/llama-3.3-70b-instruct | Any GitHub Models chat model |
MERIDIAN_MODELS_ENDPOINT | https://models.github.ai/inference/chat/completions | Override for self-hosted gateways |
MERIDIAN_CANDIDATES | 5 | How many candidates the LLM generates per call |
MERIDIAN_TIMEOUT_MS | 90000 | Abort the fetch after this many ms |
PORT | 3333 | (HTTP mode) port for meridian-mcp-http |
HOST | 0.0.0.0 | (HTTP mode) bind address |
MERIDIAN_HTTP_PATH | /mcp | (HTTP mode) endpoint path |
MERIDIAN_GATEWAY_TOKEN | (unset) | (HTTP mode) if set, switches auth from pass-through to shared-key gateway. Bearer must match this value; server uses its own MERIDIAN_GITHUB_TOKEN for inference. |
2.0.0The 1.x line called a Cloudflare Worker (https://ask-meridian.uk/api/orbital-route) that ran the LLM and orbital classifier server-side. That backend has been retired. 2.0.0:
To keep using the closed-domain Python scorer + curated 88-entry corpus that shipped with 0.3.x, pin to meridian-skills-mcp@0.3.2. To keep calling the now-defunct Cloudflare backend, pin to 1.0.1 (will fail with HTTP 405 on every call).
Same orbital classifier powers two front-ends served from mcp.ask-meridian.uk:
mcp.ask-meridian.uk/v1/route, same Llama-3.3-70B + classifier path the connector uses.mcp.ask-meridian.uk/v1/vision (GPT-4o-mini, operator-paid), candidates orbit anchored star systems in-view. Same backend as miniapp.Both call the first-party browser endpoint /v1/route β Origin-allowlisted, operator-paid, no PAT pasting. The OAuth-gated /mcp endpoint (this section's "Use as a Grok connector" path) is unchanged.
The browser endpoint /v1/route applies a fitted-correction layer on top of the heuristic ranking. Every time a user engages a candidate (planet click in lens, detail-panel open in miniapp, card click in vision-lab), the front-end POSTs to /v1/feedback and the worker runs one pairwise-ranking SGD step against the chosen candidate vs every other. Constant per-request cost (~1 ms), no GPU, no local execution.
final_score = heuristic_route_score Γ (1 + tanh(K Β· wΒ·x)) β bounded to [0, 2], so no individual candidate can be silently boosted beyond 2Γ heuristic.coherence_time added in 3.1.0) + 6 class one-hot + 3 star-system one-hot + 3 token-hit features + 4 ranking features. Stored under FEATURE_VERSION=v2 in KV; bumping the version re-inits weights cleanly.w = 0, multiplier = 1, pure heuristic. Day 1 deployments don't need any training data./mcp path (Grok / ChatGPT / Claude.ai connectors) keeps deterministic heuristic ranking for reproducibility.classifier-bootstrap.yml (every 3 days, feeds labelled examples from a public HF benchmark into /v1/feedback) and classifier-health.yml (Mondays, posts recall@1 / @5 + model state to landing/healthz.json).Factual signals from GitHub, npm, and our automated checks β not a rating.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/meridian-skills)<a href="https://allmcps.com/mcp/meridian-skills"><img src="https://allmcps.com/api/badge/meridian-skills?style=directory" alt="Meridian Skills on AllMCPs" /></a>