Chisle
The coding-agent plugin that bills 52% of a bare model across 20 live tasks. Terse persona + tool-output compressor + context diet.
翻訳待ち
Deploy, test, and monitor MCP servers for ChatGPT, Claude, and Grok, with publishing checks built in. From the creators of the open-source mcp-use framework.
翻訳待ち
開発ツールTypeScript · PythonGitHub @mcp-useオンライン所有者未確認
Have you tried it? One tap is enough. No sign-in needed.
The fullstack MCP framework to develop MCP Apps for ChatGPT / Claude & MCP Servers for AI Agents.
翻訳待ち
Loading the full README. The saved excerpt is shown below.
The TypeScript framework for MCP
Build, test, and ship MCP servers, ChatGPT plugins, Claude connectors
Fully Typed, native Views and MCP Apps support, built-in Inspector and first class Agent experience.
Migrating from v1? Give it to your agent:
Run npm run dev in the generated project · open http://localhost:3000/mcp/inspector
Fully typed
Zod schemas flow from tools to structured results, View props, and tool calls.
Native Views
Bind React Views directly to tools and ship interactive apps without custom extension wiring.Read the full README ↗[!NOTE] Migrating from v1? Give it to your agent:
Migrate this mcp-use project to v2 following https://docs.mcp-use.com/v2/typescript/server/migration
Build an MCP server: https://mcp-use.com/prompt.md
npx -y create-mcp-use-app@latest
Run npm run dev in the generated project · open http://localhost:3000/mcp/inspector
The scaffold gives you the server, TypeScript configuration, development scripts, Inspector, and a React view pipeline. Start it once and the MCP endpoint also serves a client-ready landing page with its connection URL and setup instructions.
Replace its index.ts with a view-bound tool like this:
import { MCPServer } from "mcp-use";
import { z } from "zod";
const server = new MCPServer({
name: "weather-app",
title: "Weather App",
version: "1.0.0",
});
const weatherInput = z.object({
city: z.string().describe("City to look up"),
});
const weatherOutput = z.object({
city: z.string(),
temperature: z.number(),
conditions: z.string(),
});
export const getWeather = server.tool(
{
name: "get-weather",
title: "Get weather",
description: "Get the current weather for a city",
inputSchema: weatherInput,
outputSchema: weatherOutput,
view: { name: "weather-card" },
annotations: {
readOnlyHint: true,
destructiveHint: false,
openWorldHint: true,
},
},
async ({ city }) => {
const weather = {
city,
temperature: 22,
conditions: "Sunny",
};
return {
content: [
{
type: "text",
text: `Weather in ${city}: ${weather.conditions}, ${weather.temperature}°C`,
},
],
structuredContent: weather,
};
},
);
export default server;
Create views/weather-card/view.tsx. The directory name matches view.name on the tool:
import { useCallTool, useToolContext } from "mcp-use/react";
export default function WeatherCard() {
const { status, toolOutput, toolInput } =
useToolContext<"get-weather">();
const refresh = useCallTool("get-weather");
if (status === "pending") {
return <p>Checking the weather in {toolInput?.city ?? "your city"}…</p>;
}
if (status === "error") return <p>Could not load the weather.</p>;
const weather = refresh.data?.structuredContent ?? toolOutput;
return (
<main style={{ padding: 24 }}>
<h2>{weather.city}</h2>
<p>
{weather.temperature}°C · {weather.conditions}
</p>
<button
disabled={refresh.isPending}
onClick={() => void refresh.callTool({ city: weather.city })}
>
{refresh.isPending ? "Refreshing…" : "Refresh"}
</button>
{refresh.error && <p>{refresh.error.message}</p>}
</main>
);
}
Build ChatGPT Plugin Extensions with interactive Views that users can open alongside their conversation. Use useModelContext to let them add content from a View to the conversation, such as a book to discuss or analytics to explore.
import { useModelContext } from "mcp-use/react";
export default function AddBook() {
const { add, pending, error } = useModelContext();
async function shareBook() {
try {
await add("selected-book", {
type: "text",
title: "The Great Gatsby",
text: "Selected book: The Great Gatsby by F. Scott Fitzgerald",
});
} catch (error) {
console.error("Could not share the book", error);
}
}
return (
<>
<button disabled={pending} onClick={shareBook}>
{pending ? "Adding…" : "Add book to chat"}
</button>
{error && <p role="alert">{error.message}</p>}
</>
);
}
Little Bookshop
https://github.com/user-attachments/assets/2f9b56c1-f149-430e-b5b6-a258c08491e6
Manufact Analytics
https://github.com/user-attachments/assets/e488c66e-8f65-4930-8e08-711bdf12ec6e
Explore ChatGPT Plugin Extensions →
Create the production build:
npm run build
Start development mode to serve the MCP endpoint at http://localhost:3000/mcp. The Inspector is automatically available at http://localhost:3000/mcp/inspector:
npm run dev
Start a tunnel from the Inspector UI or run mcp-use dev --tunnel to get a public URL for your local MCP server and test it with ChatGPT and Claude before deployment. Learn more about tunneling →
Inspect the same server headlessly from the terminal, invoke representative tools, and capture a View screenshot:
npm install --save-dev @mcp-use/client
npx mcp-use client connect local http://localhost:3000/mcp
npx mcp-use client local tools list
npx mcp-use client local tools call get-weather city=Tokyo
npx mcp-use screenshot \
--server local \
--tool get-weather \
city=Tokyo \
--output weather-card.png
Ship to Manufact and get observability, analytics, evals, submission readiness, and Git-based preview environments for free.
npm run deploy
Prefer to run it yourself? Follow the self-hosting guide →.
This is the beginning of the README. Read the rest at the original. Read the full README ↗