@iflow-mcp/kamranbiglari-mcp-server-chart 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +264 -0
- package/biome.json +49 -0
- package/dist/charts/bar.js +43 -0
- package/dist/charts/bubble.js +71 -0
- package/dist/charts/doughnut.js +104 -0
- package/dist/charts/gauge.js +84 -0
- package/dist/charts/index.js +15 -0
- package/dist/charts/line.js +74 -0
- package/dist/charts/ohlc.js +455 -0
- package/dist/charts/pie.js +50 -0
- package/dist/charts/polarArea.js +50 -0
- package/dist/charts/progressBar.js +50 -0
- package/dist/charts/radar.js +59 -0
- package/dist/charts/radialGauge.js +43 -0
- package/dist/charts/sankey.js +64 -0
- package/dist/charts/scatter.js +70 -0
- package/dist/charts/sparkline.js +43 -0
- package/dist/charts/violin.js +67 -0
- package/dist/index.js +236 -0
- package/dist/stdio-server.js +58 -0
- package/dist/utils/index.js +1 -0
- package/dist/utils/schema.js +9 -0
- package/image.png +0 -0
- package/language.json +1 -0
- package/package.json +1 -0
- package/package_name +1 -0
- package/push_info.json +5 -0
- package/screenshot/image.png +0 -0
- package/src/charts/bar.ts +48 -0
- package/src/charts/bubble.ts +78 -0
- package/src/charts/doughnut.ts +117 -0
- package/src/charts/gauge.ts +92 -0
- package/src/charts/index.ts +15 -0
- package/src/charts/line.ts +80 -0
- package/src/charts/ohlc.ts +474 -0
- package/src/charts/pie.ts +56 -0
- package/src/charts/polarArea.ts +56 -0
- package/src/charts/progressBar.ts +56 -0
- package/src/charts/radar.ts +65 -0
- package/src/charts/radialGauge.ts +49 -0
- package/src/charts/sankey.ts +71 -0
- package/src/charts/scatter.ts +77 -0
- package/src/charts/sparkline.ts +49 -0
- package/src/charts/violin.ts +73 -0
- package/src/index.ts +279 -0
- package/src/stdio-server.ts +77 -0
- package/src/utils/index.ts +1 -0
- package/src/utils/schema.ts +10 -0
- package/tsconfig.json +1 -0
- package/worker-configuration.d.ts +5709 -0
- package/wrangler.jsonc +28 -0
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
3
|
+
import * as Charts from './charts/index.js';
|
|
4
|
+
|
|
5
|
+
// Type for chart export
|
|
6
|
+
type ChartExport = {
|
|
7
|
+
schema: any;
|
|
8
|
+
tool: {
|
|
9
|
+
name: string;
|
|
10
|
+
description: string;
|
|
11
|
+
inputSchema: any;
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
// Create MCP server
|
|
16
|
+
const server = new McpServer({
|
|
17
|
+
name: "mcp-server-chart",
|
|
18
|
+
version: "1.0.0",
|
|
19
|
+
description: "MCP Server for generating charts using QuickChart",
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
// Register all chart tools
|
|
23
|
+
async function registerTools() {
|
|
24
|
+
for (const chart of Object.values(Charts)) {
|
|
25
|
+
// @ts-ignore
|
|
26
|
+
// @ts-ignore
|
|
27
|
+
const chartExport = chart as ChartExport;
|
|
28
|
+
// @ts-ignore
|
|
29
|
+
server.tool(
|
|
30
|
+
chartExport.tool.name,
|
|
31
|
+
chartExport.tool.description,
|
|
32
|
+
chartExport.tool.inputSchema,
|
|
33
|
+
async (input: any) => {
|
|
34
|
+
console.error(`[${new Date().toISOString()}] Received input for ${chartExport.tool.name}:`, JSON.stringify(input).substring(0, 100));
|
|
35
|
+
|
|
36
|
+
try {
|
|
37
|
+
const response = await fetch(`http://quickchart.io/chart?v=3&c=${encodeURIComponent(JSON.stringify(input))}`);
|
|
38
|
+
const data = await response.arrayBuffer();
|
|
39
|
+
const base64Image = Buffer.from(data).toString('base64');
|
|
40
|
+
return {
|
|
41
|
+
content: [
|
|
42
|
+
{
|
|
43
|
+
type: "image",
|
|
44
|
+
data: base64Image,
|
|
45
|
+
mimeType: "image/png",
|
|
46
|
+
},
|
|
47
|
+
],
|
|
48
|
+
};
|
|
49
|
+
} catch (error: any) {
|
|
50
|
+
console.error(`[${new Date().toISOString()}] Error generating ${chartExport.tool.name} chart:`, error.message);
|
|
51
|
+
return {
|
|
52
|
+
content: [
|
|
53
|
+
{
|
|
54
|
+
type: "text",
|
|
55
|
+
text: `Error generating ${chartExport.tool.name} chart: ${error.message}`,
|
|
56
|
+
},
|
|
57
|
+
],
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// Start server
|
|
66
|
+
async function main() {
|
|
67
|
+
console.error(`[${new Date().toISOString()}] Starting MCP Chart Server...`);
|
|
68
|
+
await registerTools();
|
|
69
|
+
const transport = new StdioServerTransport();
|
|
70
|
+
await server.connect(transport);
|
|
71
|
+
console.error(`[${new Date().toISOString()}] MCP Chart Server running on stdio`);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
main().catch((error) => {
|
|
75
|
+
console.error(`[${new Date().toISOString()}] Fatal error:`, error);
|
|
76
|
+
process.exit(1);
|
|
77
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { zodToJsonSchema } from "./schema.js";
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { zodToJsonSchema as zodToJsonSchemaOriginal } from "zod-to-json-schema";
|
|
3
|
+
|
|
4
|
+
// TODO: use zod v4 JSON to schema to replace zod-to-json-schema when v4 is stable
|
|
5
|
+
// biome-ignore lint/suspicious/noExplicitAny: <explanation>
|
|
6
|
+
export const zodToJsonSchema = (schema: Record<string, z.ZodType<any>>) => {
|
|
7
|
+
return zodToJsonSchemaOriginal(z.object(schema), {
|
|
8
|
+
rejectedAdditionalProperties: undefined,
|
|
9
|
+
});
|
|
10
|
+
};
|
package/tsconfig.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"compilerOptions": {"target": "es2021", "lib": ["es2021"], "jsx": "react-jsx", "module": "es2022", "moduleResolution": "bundler", "resolveJsonModule": true, "allowJs": true, "checkJs": false, "noEmit": false, "outDir": "./dist", "isolatedModules": true, "allowSyntheticDefaultImports": true, "forceConsistentCasingInFileNames": true, "strict": false, "skipLibCheck": true, "esModuleInterop": true}, "include": ["worker-configuration.d.ts", "src/**/*.ts"]}
|