@rynko/mcp-server 1.0.4 → 1.0.5
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/dist/index.js +42 -29
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -28,21 +28,25 @@ const index_js_1 = require("@modelcontextprotocol/sdk/server/index.js");
|
|
|
28
28
|
const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
|
|
29
29
|
const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
|
|
30
30
|
const client_js_1 = require("./client.js");
|
|
31
|
+
// Log to stderr so it appears in Claude Desktop logs
|
|
32
|
+
function log(message) {
|
|
33
|
+
console.error(`[rynko-mcp] ${message}`);
|
|
34
|
+
}
|
|
31
35
|
// Get configuration from environment
|
|
32
36
|
const RYNKO_USER_TOKEN = process.env.RYNKO_USER_TOKEN;
|
|
33
37
|
const RYNKO_API_URL = process.env.RYNKO_API_URL;
|
|
38
|
+
log(`Starting Rynko MCP Server...`);
|
|
39
|
+
log(`Token present: ${!!RYNKO_USER_TOKEN}`);
|
|
40
|
+
log(`API URL: ${RYNKO_API_URL || 'https://api.rynko.dev/api (default)'}`);
|
|
34
41
|
// Validate token
|
|
35
42
|
if (!RYNKO_USER_TOKEN) {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
console.error(' Settings → Personal Access Tokens → Create Token');
|
|
40
|
-
console.error('');
|
|
41
|
-
console.error('Then set it in your environment or Claude Desktop config.');
|
|
43
|
+
log('ERROR: RYNKO_USER_TOKEN environment variable is required');
|
|
44
|
+
log('Get a Personal Access Token from your Rynko dashboard:');
|
|
45
|
+
log(' Settings → Personal Access Tokens → Create Token');
|
|
42
46
|
process.exit(1);
|
|
43
47
|
}
|
|
44
48
|
if (!RYNKO_USER_TOKEN.startsWith('pat_')) {
|
|
45
|
-
|
|
49
|
+
log('ERROR: Invalid token format. Token must start with "pat_"');
|
|
46
50
|
process.exit(1);
|
|
47
51
|
}
|
|
48
52
|
// Initialize API client
|
|
@@ -50,18 +54,21 @@ const client = new client_js_1.RynkoClient(RYNKO_USER_TOKEN, RYNKO_API_URL);
|
|
|
50
54
|
// Create MCP server
|
|
51
55
|
const server = new index_js_1.Server({
|
|
52
56
|
name: 'rynko-mcp',
|
|
53
|
-
version: '1.0.
|
|
57
|
+
version: '1.0.5',
|
|
54
58
|
}, {
|
|
55
59
|
capabilities: {
|
|
56
60
|
tools: {},
|
|
57
61
|
},
|
|
58
62
|
});
|
|
63
|
+
log('Server instance created');
|
|
59
64
|
/**
|
|
60
65
|
* Handle list tools request
|
|
61
66
|
*/
|
|
62
67
|
server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => {
|
|
68
|
+
log('Handling ListTools request');
|
|
63
69
|
try {
|
|
64
70
|
const { tools } = await client.listTools();
|
|
71
|
+
log(`Returning ${tools.length} tools`);
|
|
65
72
|
return {
|
|
66
73
|
tools: tools.map((tool) => ({
|
|
67
74
|
name: tool.name,
|
|
@@ -72,6 +79,7 @@ server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => {
|
|
|
72
79
|
}
|
|
73
80
|
catch (error) {
|
|
74
81
|
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
82
|
+
log(`ERROR in ListTools: ${message}`);
|
|
75
83
|
throw new types_js_1.McpError(types_js_1.ErrorCode.InternalError, `Failed to list tools: ${message}`);
|
|
76
84
|
}
|
|
77
85
|
});
|
|
@@ -80,8 +88,10 @@ server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => {
|
|
|
80
88
|
*/
|
|
81
89
|
server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
|
|
82
90
|
const { name, arguments: args } = request.params;
|
|
91
|
+
log(`Handling CallTool request: ${name}`);
|
|
83
92
|
try {
|
|
84
93
|
const result = await client.callTool(name, args || {});
|
|
94
|
+
log(`Tool ${name} completed successfully`);
|
|
85
95
|
// Convert response to MCP format
|
|
86
96
|
return {
|
|
87
97
|
content: result.content.map((item) => {
|
|
@@ -109,6 +119,7 @@ server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
|
|
|
109
119
|
}
|
|
110
120
|
catch (error) {
|
|
111
121
|
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
122
|
+
log(`ERROR in CallTool ${name}: ${message}`);
|
|
112
123
|
return {
|
|
113
124
|
content: [
|
|
114
125
|
{
|
|
@@ -124,35 +135,37 @@ server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
|
|
|
124
135
|
* Main entry point
|
|
125
136
|
*/
|
|
126
137
|
async function main() {
|
|
127
|
-
|
|
138
|
+
log('Starting main()...');
|
|
128
139
|
try {
|
|
129
|
-
|
|
140
|
+
// Start the server with stdio transport immediately
|
|
141
|
+
// Don't verify API connection upfront - let it fail gracefully when tools are called
|
|
142
|
+
const transport = new stdio_js_1.StdioServerTransport();
|
|
143
|
+
log('Transport created, connecting...');
|
|
144
|
+
await server.connect(transport);
|
|
145
|
+
log('Server connected to transport successfully');
|
|
146
|
+
// Handle graceful shutdown
|
|
147
|
+
process.on('SIGINT', async () => {
|
|
148
|
+
log('Received SIGINT, shutting down...');
|
|
149
|
+
await server.close();
|
|
150
|
+
process.exit(0);
|
|
151
|
+
});
|
|
152
|
+
process.on('SIGTERM', async () => {
|
|
153
|
+
log('Received SIGTERM, shutting down...');
|
|
154
|
+
await server.close();
|
|
155
|
+
process.exit(0);
|
|
156
|
+
});
|
|
130
157
|
}
|
|
131
158
|
catch (error) {
|
|
132
159
|
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
console.error(' 2. You have network connectivity');
|
|
138
|
-
console.error(' 3. The Rynko API is accessible');
|
|
160
|
+
log(`FATAL ERROR in main(): ${message}`);
|
|
161
|
+
if (error instanceof Error && error.stack) {
|
|
162
|
+
log(error.stack);
|
|
163
|
+
}
|
|
139
164
|
process.exit(1);
|
|
140
165
|
}
|
|
141
|
-
// Start the server with stdio transport
|
|
142
|
-
const transport = new stdio_js_1.StdioServerTransport();
|
|
143
|
-
await server.connect(transport);
|
|
144
|
-
// Handle graceful shutdown
|
|
145
|
-
process.on('SIGINT', async () => {
|
|
146
|
-
await server.close();
|
|
147
|
-
process.exit(0);
|
|
148
|
-
});
|
|
149
|
-
process.on('SIGTERM', async () => {
|
|
150
|
-
await server.close();
|
|
151
|
-
process.exit(0);
|
|
152
|
-
});
|
|
153
166
|
}
|
|
154
167
|
main().catch((error) => {
|
|
155
|
-
|
|
168
|
+
log(`FATAL: Unhandled error: ${error}`);
|
|
156
169
|
process.exit(1);
|
|
157
170
|
});
|
|
158
171
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAEA;;;;;;;;;;;;;;;;;;;;;;GAsBG;;AAEH,wEAAmE;AACnE,wEAAiF;AACjF,iEAK4C;AAC5C,2CAA0C;AAE1C,qCAAqC;AACrC,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;AACtD,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;AAEhD,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED