feat: add mcp server, reorganize repo
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
import { createMcpHandler } from "mcp-handler";
|
||||
import { registerDuckTools } from "@/lib/mcp";
|
||||
|
||||
export const runtime = "nodejs";
|
||||
|
||||
const post = createMcpHandler(
|
||||
async (server) => {
|
||||
registerDuckTools(server);
|
||||
},
|
||||
{
|
||||
serverInfo: { name: "rubber-duck-mcp", version: "1.0.0" },
|
||||
},
|
||||
);
|
||||
|
||||
export async function GET(req: Request) {
|
||||
return post(req);
|
||||
}
|
||||
|
||||
export async function POST(req: Request) {
|
||||
return post(req);
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 25 KiB |
@@ -0,0 +1,49 @@
|
||||
:root {
|
||||
--background: #ffffff;
|
||||
--foreground: #171717;
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
:root {
|
||||
--background: #0a0a0a;
|
||||
--foreground: #ededed;
|
||||
}
|
||||
}
|
||||
|
||||
html {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
html,
|
||||
body {
|
||||
max-width: 100vw;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
body {
|
||||
min-height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
color: var(--foreground);
|
||||
background: var(--background);
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
a {
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
html {
|
||||
color-scheme: dark;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
import type { Metadata } from "next";
|
||||
import "./globals.css";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "Rubber Duck MCP",
|
||||
description: "MCP server for rubber duck debugging — quack() to articulate your thinking.",
|
||||
};
|
||||
|
||||
export default function RootLayout({ children }: { children: React.ReactNode }) {
|
||||
return (
|
||||
<html lang="en">
|
||||
<body>{children}</body>
|
||||
</html>
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
export default function Home() {
|
||||
return (
|
||||
<main style={{ fontFamily: "system-ui, sans-serif", maxWidth: 640, margin: "0 auto", padding: "3rem 1rem" }}>
|
||||
<h1>Rubber Duck MCP</h1>
|
||||
<p>
|
||||
MCP-сервер для техники «резиновая уточка»: когда ИИ застревает, он вызывает инструмент{" "}
|
||||
<code>quack()</code>, чтобы сформулировать мысль и продолжить. Сервер работает в режиме
|
||||
Streamable HTTP и предназначен для подключения в Cursor, Claude Desktop и других MCP-клиентах.
|
||||
</p>
|
||||
<h2>Эндпоинт</h2>
|
||||
<p>
|
||||
<code>/api/mcp</code> — подключите этот URL как MCP-сервер (тип Streamable HTTP).
|
||||
</p>
|
||||
<h2>Инструменты</h2>
|
||||
<ul>
|
||||
<li>
|
||||
<code>quack</code> — возвращает кряк. Опциональный параметр <code>mood</code>:{" "}
|
||||
<code>happy | confused | excited | sleepy</code>.
|
||||
</li>
|
||||
</ul>
|
||||
</main>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user