@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.
Files changed (52) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +264 -0
  3. package/biome.json +49 -0
  4. package/dist/charts/bar.js +43 -0
  5. package/dist/charts/bubble.js +71 -0
  6. package/dist/charts/doughnut.js +104 -0
  7. package/dist/charts/gauge.js +84 -0
  8. package/dist/charts/index.js +15 -0
  9. package/dist/charts/line.js +74 -0
  10. package/dist/charts/ohlc.js +455 -0
  11. package/dist/charts/pie.js +50 -0
  12. package/dist/charts/polarArea.js +50 -0
  13. package/dist/charts/progressBar.js +50 -0
  14. package/dist/charts/radar.js +59 -0
  15. package/dist/charts/radialGauge.js +43 -0
  16. package/dist/charts/sankey.js +64 -0
  17. package/dist/charts/scatter.js +70 -0
  18. package/dist/charts/sparkline.js +43 -0
  19. package/dist/charts/violin.js +67 -0
  20. package/dist/index.js +236 -0
  21. package/dist/stdio-server.js +58 -0
  22. package/dist/utils/index.js +1 -0
  23. package/dist/utils/schema.js +9 -0
  24. package/image.png +0 -0
  25. package/language.json +1 -0
  26. package/package.json +1 -0
  27. package/package_name +1 -0
  28. package/push_info.json +5 -0
  29. package/screenshot/image.png +0 -0
  30. package/src/charts/bar.ts +48 -0
  31. package/src/charts/bubble.ts +78 -0
  32. package/src/charts/doughnut.ts +117 -0
  33. package/src/charts/gauge.ts +92 -0
  34. package/src/charts/index.ts +15 -0
  35. package/src/charts/line.ts +80 -0
  36. package/src/charts/ohlc.ts +474 -0
  37. package/src/charts/pie.ts +56 -0
  38. package/src/charts/polarArea.ts +56 -0
  39. package/src/charts/progressBar.ts +56 -0
  40. package/src/charts/radar.ts +65 -0
  41. package/src/charts/radialGauge.ts +49 -0
  42. package/src/charts/sankey.ts +71 -0
  43. package/src/charts/scatter.ts +77 -0
  44. package/src/charts/sparkline.ts +49 -0
  45. package/src/charts/violin.ts +73 -0
  46. package/src/index.ts +279 -0
  47. package/src/stdio-server.ts +77 -0
  48. package/src/utils/index.ts +1 -0
  49. package/src/utils/schema.ts +10 -0
  50. package/tsconfig.json +1 -0
  51. package/worker-configuration.d.ts +5709 -0
  52. 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"]}