mcp-registryREADME.md4 matches
9- Val.Town & Deno
10- Hono server
11- Official MCP Registry API
12- Webawesome components and icons
1318This project is available on [Val.Town](https://www.val.town/x/cameronpak/mcp-registry) and can be accessed at: `https://cameronpak-mcp-registry.web.val.run`
1920## API Proxy
2122This server acts as a proxy for the official MCP Registry API, allowing you to access registry endpoints through this server. All requests are forwarded to `https://registry.modelcontextprotocol.io`.
2324- `GET /v0/servers` - [List Servers](https://registry.modelcontextprotocol.io/docs#/operations/list-servers)
27- `GET /v0/health` - Health check
28- `GET /v0/ping` - Ping the registry
29- `GET /docs` - Redirect to official API documentation
3031## Additional MCP Registries
nabanhotelmain.ts2 matches
6<meta name="description" content="NABAN HOTEL — comfortable rooms, excellent service and minutes from the new airport under construction." />
7<link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet">
8<link rel="preconnect" href="https://fonts.googleapis.com">
9<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
10<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;600;700;800&display=swap" rel="stylesheet">
11<style>body { font-family: 'Inter', system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial; }</n/style>
12<style>
manifoldHttpmain.ts19 matches
6const [url, setUrl] = useState("");
7const [result, setResult] = useState<any>(null);
8const [apiKey, setApiKey] = useState("");
9const [betAmount, setBetAmount] = useState(0);
10const [status, setStatus] = useState<string | null>(null);
1112useEffect(() => {
13const storedKey = localStorage.getItem("manifoldApiKey");
14if (storedKey) setApiKey(storedKey);
15}, []);
1617function saveKey() {
18localStorage.setItem("manifoldApiKey", apiKey);
19alert("API key saved locally");
20}
213435async function handleBetTest() {
36if (!result || !apiKey || betAmount <= 0) return;
37setStatus("Placing test bet on first option...");
3842body: JSON.stringify({
43url,
44apiKey,
45amount: betAmount
46})
5657<div className="mb-4">
58<h2 className="font-semibold mb-2">API Key</h2>
59<input
60type="password"
61value={apiKey}
62onChange={(e) => setApiKey(e.target.value)}
63placeholder="Enter Manifold API key"
64className="border p-2 rounded w-full mb-2"
65/>
133const slug = parts.pop() || parts.pop();
134135const apiUrl = `https://manifold.markets/api/v0/slug/${slug}`;
136const res = await fetch(apiUrl);
137if (!res.ok) return new Response(`Failed to fetch market: ${res.statusText}`, { status: 500 });
138152153if (pathname === "/betTest" && req.method === "POST") {
154const { url, apiKey, amount } = await req.json();
155if (!url || !apiKey || !amount) return new Response("Missing parameters", { status: 400 });
156157const parts = url.split("/");
158const slug = parts.pop() || parts.pop();
159160const apiUrl = `https://manifold.markets/api/v0/slug/${slug}`;
161const res = await fetch(apiUrl);
162if (!res.ok) return new Response(`Failed to fetch market: ${res.statusText}`, { status: 500 });
163169const first = data.answers.sort((a: any, b: any) => b.probability - a.probability)[0];
170171const betRes = await fetch("https://manifold.markets/api/v0/bet", {
172method: "POST",
173headers: {
174"content-type": "application/json",
175"Authorization": `Key ${apiKey}`,
176},
177body: JSON.stringify({
manifoldSummain.ts2 matches
4const slug = parts.pop() || parts.pop(); // handle trailing slash
56const apiUrl = `https://manifold.markets/api/v0/slug/${slug}`;
7const res = await fetch(apiUrl);
8if (!res.ok) throw new Error(`Failed to fetch market: ${res.statusText}`);
9const data = await res.json();
185<meta name="viewport" content="width=device-width, initial-scale=1.0">
186<title>Principia</title>
187<link rel="preconnect" href="https://fonts.googleapis.com">
188<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
189<link href="https://fonts.googleapis.com/css2?family=Merriweather:wght@300;400;700&family=Roboto+Mono:wght@300;400&display=swap" rel="stylesheet">
190<style>
191:root {
h6-val-summary.ts3 matches
18SUM(num_images) as total_images
19FROM ${USAGE_TABLE}
20WHERE val_id = ? AND our_api_token = 1
21GROUP BY val_id
22`, [valId]);
34FROM ${INFERENCE_CALLS_TABLE} i
35JOIN ${USAGE_TABLE} u ON i.usage_id = u.id
36WHERE u.val_id = ? AND u.our_api_token = 1
37GROUP BY u.val_id
38`, [valId]);
41const requestsResult = await sqlite.execute(`
42SELECT * FROM ${USAGE_TABLE}
43WHERE val_id = ? AND our_api_token = 1
44ORDER BY timestamp DESC
45`, [valId]);
h6-val-detail.ts1 match
18finish_reason?: string;
19num_images?: number;
20our_api_token: boolean;
21}
22
h6-useUser.tsx1 match
1import { useState, useEffect } from "react";
23const USER_ENDPOINT = "/api/user";
45export function useUser() {
h6-user-summary.ts2 matches
20SUM(num_images) as total_images
21FROM ${USAGE_TABLE}
22WHERE our_api_token = 1
23`;
24
41FROM ${INFERENCE_CALLS_TABLE} i
42JOIN ${USAGE_TABLE} u ON i.usage_id = u.id
43WHERE u.our_api_token = 1
44`;
45
h6-user-detail.ts2 matches
1import { renderLayout } from "./layout.ts";
2import { formatNumber, formatPrice, formatDate, formatBoolean } from "../utils/formatters.ts";
3import { CreditAddition } from "../api/credit-additions.ts";
45interface UserSummaryRow {
33finish_reason?: string;
34num_images?: number;
35our_api_token: boolean;
36}
37