-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmcp-server.js
More file actions
executable file
·61 lines (52 loc) · 1.44 KB
/
mcp-server.js
File metadata and controls
executable file
·61 lines (52 loc) · 1.44 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#!/usr/bin/env node
import { Server } from '@modelcontextprotocol/sdk/server';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
import {
CallToolRequestSchema,
ListToolsRequestSchema,
} from '@modelcontextprotocol/sdk/types.js';
import { createRequire } from 'node:module';
import { initializeDataOnStartup, startRpcHealthCheck } from './dataService.js';
import { getToolDefinitions, handleToolCall } from './mcp-tools.js';
const require = createRequire(import.meta.url);
const { version } = require('./package.json');
// Load data on startup
await initializeDataOnStartup({
onBackgroundRefreshSuccess: () => {
startRpcHealthCheck();
}
});
startRpcHealthCheck();
// Create MCP server instance
const server = new Server(
{
name: 'chains-api',
version,
},
{
capabilities: {
tools: {},
},
}
);
// Define available tools
server.setRequestHandler(ListToolsRequestSchema, async () => ({
tools: getToolDefinitions(),
}));
// Handle tool calls
server.setRequestHandler(CallToolRequestSchema, async (request) => {
const { name, arguments: args } = request.params;
return handleToolCall(name, args);
});
// Start the server
async function main() {
const transport = new StdioServerTransport();
await server.connect(transport);
console.error('Chains API MCP server running on stdio');
}
try {
await main();
} catch (error) {
console.error('Server error:', error);
process.exit(1);
}