@kasarlabs/ask-starknet-mcp 0.1.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 (40) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +197 -0
  3. package/build/graph/agents/prompts.d.ts +9 -0
  4. package/build/graph/agents/prompts.d.ts.map +1 -0
  5. package/build/graph/agents/prompts.js +25 -0
  6. package/build/graph/agents/prompts.js.map +1 -0
  7. package/build/graph/agents/selector.d.ts +9 -0
  8. package/build/graph/agents/selector.d.ts.map +1 -0
  9. package/build/graph/agents/selector.js +60 -0
  10. package/build/graph/agents/selector.js.map +1 -0
  11. package/build/graph/agents/specialized.d.ts +6 -0
  12. package/build/graph/agents/specialized.d.ts.map +1 -0
  13. package/build/graph/agents/specialized.js +71 -0
  14. package/build/graph/agents/specialized.js.map +1 -0
  15. package/build/graph/graph.d.ts +66 -0
  16. package/build/graph/graph.d.ts.map +1 -0
  17. package/build/graph/graph.js +31 -0
  18. package/build/graph/graph.js.map +1 -0
  19. package/build/graph/mcps/interfaces.d.ts +27 -0
  20. package/build/graph/mcps/interfaces.d.ts.map +1 -0
  21. package/build/graph/mcps/interfaces.js +2 -0
  22. package/build/graph/mcps/interfaces.js.map +1 -0
  23. package/build/graph/mcps/utilities.d.ts +15 -0
  24. package/build/graph/mcps/utilities.d.ts.map +1 -0
  25. package/build/graph/mcps/utilities.js +76 -0
  26. package/build/graph/mcps/utilities.js.map +1 -0
  27. package/build/index.d.ts +32 -0
  28. package/build/index.d.ts.map +1 -0
  29. package/build/index.js +143 -0
  30. package/build/index.js.map +1 -0
  31. package/build/utils/llm.d.ts +4 -0
  32. package/build/utils/llm.d.ts.map +1 -0
  33. package/build/utils/llm.js +30 -0
  34. package/build/utils/llm.js.map +1 -0
  35. package/build/utils/logger.d.ts +6 -0
  36. package/build/utils/logger.d.ts.map +1 -0
  37. package/build/utils/logger.js +14 -0
  38. package/build/utils/logger.js.map +1 -0
  39. package/mcps.json +436 -0
  40. package/package.json +57 -0
@@ -0,0 +1,76 @@
1
+ import { readFileSync } from 'fs';
2
+ import { join, dirname } from 'path';
3
+ import { fileURLToPath } from 'url';
4
+ const __filename = fileURLToPath(import.meta.url);
5
+ const __dirname = dirname(__filename);
6
+ function loadMcpsConfig() {
7
+ try {
8
+ const configPath = join(__dirname, '../../../mcps.json');
9
+ const configContent = readFileSync(configPath, 'utf-8');
10
+ return JSON.parse(configContent);
11
+ }
12
+ catch (error) {
13
+ console.error('Error loading mcps.json:', error);
14
+ console.error('Tried path:', join(__dirname, '../../../mcps.json'));
15
+ return {};
16
+ }
17
+ }
18
+ export function getMcpInfo(name) {
19
+ const config = loadMcpsConfig();
20
+ return config[name];
21
+ }
22
+ export function getAllMcpInfo() {
23
+ return loadMcpsConfig();
24
+ }
25
+ export function getMcpNames() {
26
+ const config = loadMcpsConfig();
27
+ return Object.keys(config);
28
+ }
29
+ export const AvailableAgents = getMcpNames();
30
+ export const getMCPClientConfig = (serverName, env) => {
31
+ const serverInfo = getMcpInfo(serverName);
32
+ if (!serverInfo) {
33
+ throw new Error(`MCP configuration not found for ${serverName}`);
34
+ }
35
+ const config = { ...serverInfo.client };
36
+ if (env && serverInfo.client.env) {
37
+ config.env = config.env || {};
38
+ const missingVars = [];
39
+ for (const envVar in serverInfo.client.env) {
40
+ if (env[envVar]) {
41
+ config.env[envVar] = env[envVar];
42
+ }
43
+ else {
44
+ config.env[envVar] = '';
45
+ missingVars.push(envVar);
46
+ }
47
+ }
48
+ if (missingVars.length > 0) {
49
+ throw new Error(`Missing environment variables for MCP '${serverName}': ${missingVars.join(', ')}\n` +
50
+ `Available variables: ${Object.keys(env).join(', ')}\n` +
51
+ `Required variables: ${Object.keys(serverInfo.client.env).join(', ')}`);
52
+ }
53
+ }
54
+ return config;
55
+ };
56
+ export const getMCPDescription = (serverName) => {
57
+ return getMcpInfo(serverName)?.description || '';
58
+ };
59
+ export const getMCPPromptInfo = (serverName) => {
60
+ const serverInfo = getMcpInfo(serverName);
61
+ if (!serverInfo) {
62
+ return {
63
+ agentName: serverName,
64
+ expertise: '',
65
+ tools: [],
66
+ description: '',
67
+ };
68
+ }
69
+ return {
70
+ agentName: serverName,
71
+ expertise: serverInfo.promptInfo.expertise,
72
+ tools: serverInfo.promptInfo.tools,
73
+ description: serverInfo.description,
74
+ };
75
+ };
76
+ //# sourceMappingURL=utilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utilities.js","sourceRoot":"","sources":["../../../src/graph/mcps/utilities.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ #!/usr/bin/env node
2
+ import { z } from 'zod';
3
+ declare const performStarknetActionsSchema: z.ZodObject<{
4
+ userInput: z.ZodString;
5
+ }, "strip", z.ZodTypeAny, {
6
+ userInput: string;
7
+ }, {
8
+ userInput: string;
9
+ }>;
10
+ type performStarknetActionsInput = z.infer<typeof performStarknetActionsSchema>;
11
+ type envInput = {
12
+ [key: string]: string | undefined;
13
+ };
14
+ export declare const performStarknetActions: (env: envInput, input: performStarknetActionsInput) => Promise<{
15
+ status: string;
16
+ response: import("@langchain/core/messages").MessageContent;
17
+ error?: undefined;
18
+ } | {
19
+ status: string;
20
+ error: string;
21
+ response?: undefined;
22
+ }>;
23
+ interface SnaknetTool<P = any> {
24
+ name: string;
25
+ description: string;
26
+ schema?: z.AnyZodObject;
27
+ execute: (env: envInput, input: P) => Promise<unknown>;
28
+ }
29
+ export declare const registerTools: (snaknetToolRegistry: SnaknetTool[]) => void;
30
+ export declare const RegisterToolInServer: (env: envInput) => Promise<void>;
31
+ export {};
32
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAKA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,QAAA,MAAM,4BAA4B;;;;;;EAEhC,CAAC;AACH,KAAK,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAChF,KAAK,QAAQ,GAAG;IACd,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CACnC,CAAC;AAEF,eAAO,MAAM,sBAAsB,GACjC,KAAK,QAAQ,EACb,OAAO,2BAA2B;;;;;;;;EA0BnC,CAAC;AAEF,UAAU,WAAW,CAAC,CAAC,GAAG,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC;IACxB,OAAO,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACxD;AAED,eAAO,MAAM,aAAa,GAAI,qBAAqB,WAAW,EAAE,SAO/D,CAAC;AAOF,eAAO,MAAM,oBAAoB,GAAU,KAAK,QAAQ,kBAmCvD,CAAC"}
package/build/index.js ADDED
@@ -0,0 +1,143 @@
1
+ #!/usr/bin/env node
2
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
3
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
4
+ import dotenv from 'dotenv';
5
+ dotenv.config({ path: './.env' });
6
+ import { z } from 'zod';
7
+ import packageJson from '../package.json' with { type: 'json' };
8
+ import { graph } from './graph/graph.js';
9
+ import { logger } from './utils/logger.js';
10
+ import { HumanMessage } from '@langchain/core/messages';
11
+ const performStarknetActionsSchema = z.object({
12
+ userInput: z.string().describe('The actions that the user want to do'),
13
+ });
14
+ export const performStarknetActions = async (env, input) => {
15
+ logger.info('Graph execution started', { userInput: input.userInput });
16
+ try {
17
+ const config = { configurable: { thread_id: `user-${Date.now()}` } };
18
+ const result = await graph.invoke({
19
+ messages: [new HumanMessage(input.userInput)],
20
+ mcpEnvironment: env,
21
+ }, config);
22
+ const finalMessage = result.messages[result.messages.length - 1];
23
+ return {
24
+ status: 'success',
25
+ response: finalMessage.content,
26
+ };
27
+ }
28
+ catch (error) {
29
+ logger.error('Graph execution failed', error);
30
+ return {
31
+ status: 'failure',
32
+ error: error instanceof Error ? error.message : 'Unknown error',
33
+ };
34
+ }
35
+ };
36
+ export const registerTools = (snaknetToolRegistry) => {
37
+ snaknetToolRegistry.push({
38
+ name: 'ask_starknet',
39
+ description: 'Call ask-starknet agent to perform starknet actions',
40
+ schema: performStarknetActionsSchema,
41
+ execute: performStarknetActions,
42
+ });
43
+ };
44
+ const server = new McpServer({
45
+ name: 'ask-starknet-mcp',
46
+ version: packageJson.version,
47
+ });
48
+ export const RegisterToolInServer = async (env) => {
49
+ const tools = [];
50
+ await registerTools(tools);
51
+ for (const tool of tools) {
52
+ if (!tool.schema) {
53
+ server.tool(tool.name, tool.description, async () => {
54
+ const result = await tool.execute(env, {});
55
+ return {
56
+ content: [
57
+ {
58
+ type: 'text',
59
+ text: JSON.stringify(result),
60
+ },
61
+ ],
62
+ };
63
+ });
64
+ }
65
+ else {
66
+ server.tool(tool.name, tool.description, tool.schema.shape, async (input, extra) => {
67
+ const result = await tool.execute(env, input);
68
+ return {
69
+ content: [
70
+ {
71
+ type: 'text',
72
+ text: JSON.stringify(result),
73
+ },
74
+ ],
75
+ };
76
+ });
77
+ }
78
+ }
79
+ };
80
+ const LLM_API_KEYS = [
81
+ 'ANTHROPIC_API_KEY',
82
+ 'GEMINI_API_KEY',
83
+ 'OPENAI_API_KEY',
84
+ ];
85
+ const DEFAULT_MODELS = {
86
+ ANTHROPIC_API_KEY: 'claude-sonnet-4-20250514',
87
+ GEMINI_API_KEY: 'gemini-2.5-flash',
88
+ OPENAI_API_KEY: 'gpt-4o-mini',
89
+ };
90
+ function validateRequiredEnvironmentVariables() {
91
+ const env = {};
92
+ const missingVars = [];
93
+ const availableLLMKeys = LLM_API_KEYS.filter((key) => process.env[key]);
94
+ if (availableLLMKeys.length === 0) {
95
+ missingVars.push('At least one LLM API key (ANTHROPIC_API_KEY, GEMINI_API_KEY, or OPENAI_API_KEY)');
96
+ }
97
+ else {
98
+ availableLLMKeys.forEach((key) => {
99
+ env[key] = process.env[key];
100
+ });
101
+ if (process.env.MODEL_NAME) {
102
+ env.MODEL_NAME = process.env.MODEL_NAME;
103
+ }
104
+ else {
105
+ const primaryKey = availableLLMKeys[0];
106
+ env.MODEL_NAME = DEFAULT_MODELS[primaryKey];
107
+ }
108
+ }
109
+ Object.keys(process.env).forEach((key) => {
110
+ if (process.env[key] && !env[key]) {
111
+ env[key] = process.env[key];
112
+ }
113
+ });
114
+ if (missingVars.length > 0) {
115
+ console.error('❌ Missing required environment variables:');
116
+ missingVars.forEach((varName) => {
117
+ console.error(` - ${varName}`);
118
+ });
119
+ console.error('\nPlease set at least one LLM API key before starting the MCP server.');
120
+ console.error('Example:');
121
+ console.error('export ANTHROPIC_API_KEY="sk-..." # or GEMINI_API_KEY or OPENAI_API_KEY');
122
+ console.error('export MODEL_NAME="claude-sonnet-4" # optional, defaults based on API key provider');
123
+ process.exit(1);
124
+ }
125
+ console.error('✅ LLM API key(s) detected');
126
+ availableLLMKeys.forEach((key) => {
127
+ console.error(` - ${key}: ***hidden***`);
128
+ });
129
+ console.error(` - MODEL_NAME: ${env.MODEL_NAME}`);
130
+ return env;
131
+ }
132
+ async function main() {
133
+ const transport = new StdioServerTransport();
134
+ const env = validateRequiredEnvironmentVariables();
135
+ await RegisterToolInServer(env);
136
+ await server.connect(transport);
137
+ console.error('Ask-starknet MCP Server running on stdio');
138
+ }
139
+ main().catch((error) => {
140
+ console.error('Fatal error in main():', error);
141
+ process.exit(1);
142
+ });
143
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { BaseChatModel } from '@langchain/core/language_models/chat_models';
2
+ import { MCPEnvironment } from '../graph/mcps/interfaces.js';
3
+ export declare function createLLM(env: MCPEnvironment): BaseChatModel;
4
+ //# sourceMappingURL=llm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../../src/utils/llm.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAEjF,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAM7D,wBAAgB,SAAS,CAAC,GAAG,EAAE,cAAc,GAAG,aAAa,CA+B5D"}
@@ -0,0 +1,30 @@
1
+ import { ChatAnthropic } from '@langchain/anthropic';
2
+ import { ChatOpenAI } from '@langchain/openai';
3
+ import { ChatGoogleGenerativeAI } from '@langchain/google-genai';
4
+ export function createLLM(env) {
5
+ const modelName = env.MODEL_NAME;
6
+ const temperature = 0;
7
+ if (env.ANTHROPIC_API_KEY) {
8
+ return new ChatAnthropic({
9
+ model: modelName,
10
+ temperature,
11
+ apiKey: env.ANTHROPIC_API_KEY,
12
+ });
13
+ }
14
+ if (env.GEMINI_API_KEY) {
15
+ return new ChatGoogleGenerativeAI({
16
+ model: modelName,
17
+ temperature,
18
+ apiKey: env.GEMINI_API_KEY,
19
+ });
20
+ }
21
+ if (env.OPENAI_API_KEY) {
22
+ return new ChatOpenAI({
23
+ model: modelName,
24
+ temperature,
25
+ apiKey: env.OPENAI_API_KEY,
26
+ });
27
+ }
28
+ throw new Error('No LLM API key found. Please set one of: ANTHROPIC_API_KEY, GEMINI_API_KEY, or OPENAI_API_KEY');
29
+ }
30
+ //# sourceMappingURL=llm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm.js","sourceRoot":"","sources":["../../src/utils/llm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AASjE,MAAM,UAAU,SAAS,CAAC,GAAmB;IAC3C,MAAM,SAAS,GAAG,GAAG,CAAC,UAAoB,CAAC;IAC3C,MAAM,WAAW,GAAG,CAAC,CAAC;IAEtB,IAAI,GAAG,CAAC,iBAAiB,EAAE,CAAC;QAC1B,OAAO,IAAI,aAAa,CAAC;YACvB,KAAK,EAAE,SAAS;YAChB,WAAW;YACX,MAAM,EAAE,GAAG,CAAC,iBAAiB;SAC9B,CAAC,CAAC;IACL,CAAC;IAED,IAAI,GAAG,CAAC,cAAc,EAAE,CAAC;QACvB,OAAO,IAAI,sBAAsB,CAAC;YAChC,KAAK,EAAE,SAAS;YAChB,WAAW;YACX,MAAM,EAAE,GAAG,CAAC,cAAc;SAC3B,CAAC,CAAC;IACL,CAAC;IAED,IAAI,GAAG,CAAC,cAAc,EAAE,CAAC;QACvB,OAAO,IAAI,UAAU,CAAC;YACpB,KAAK,EAAE,SAAS;YAChB,WAAW;YACX,MAAM,EAAE,GAAG,CAAC,cAAc;SAC3B,CAAC,CAAC;IACL,CAAC;IAED,MAAM,IAAI,KAAK,CACb,+FAA+F,CAChG,CAAC;AACJ,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare const logger: {
2
+ info: (message: string, data?: any) => void;
3
+ error: (message: string, error?: any) => void;
4
+ debug: (message: string, data?: any) => void;
5
+ };
6
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,MAAM;oBACD,MAAM,SAAS,GAAG;qBAMjB,MAAM,UAAU,GAAG;qBAGnB,MAAM,SAAS,GAAG;CAQpC,CAAC"}
@@ -0,0 +1,14 @@
1
+ export const logger = {
2
+ info: (message, data) => {
3
+ console.error(`[INFO] ${new Date().toISOString()} - ${message}`, data ? JSON.stringify(data, null, 2) : '');
4
+ },
5
+ error: (message, error) => {
6
+ console.error(`[DEBUG] ${new Date().toISOString()} - ${message}`, error);
7
+ },
8
+ debug: (message, data) => {
9
+ if (process.env.DEBUG) {
10
+ console.error(`[DEBUG] ${new Date().toISOString()} - ${message}`, data ? JSON.stringify(data, null, 2) : '');
11
+ }
12
+ },
13
+ };
14
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,IAAI,EAAE,CAAC,OAAe,EAAE,IAAU,EAAE,EAAE;QACpC,OAAO,CAAC,KAAK,CACX,UAAU,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,MAAM,OAAO,EAAE,EACjD,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAC1C,CAAC;IACJ,CAAC;IACD,KAAK,EAAE,CAAC,OAAe,EAAE,KAAW,EAAE,EAAE;QACtC,OAAO,CAAC,KAAK,CAAC,WAAW,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,MAAM,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;IAC3E,CAAC;IACD,KAAK,EAAE,CAAC,OAAe,EAAE,IAAU,EAAE,EAAE;QACrC,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;YACtB,OAAO,CAAC,KAAK,CACX,WAAW,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,MAAM,OAAO,EAAE,EAClD,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAC1C,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC"}