Skip to main content
Glama
index.ts3.83 kB
#!/usr/bin/env node // LittleSis MCP Server // Provides access to LittleSis API for tracking corporate power and accountability import { Server } from '@modelcontextprotocol/sdk/server/index.js'; import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'; import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js'; import { z } from 'zod'; // Import tools import { // Entity tools getEntityTool, getEntitesTool, searchEntitesTool, getEntityExtensionsTool, getEntityRelationshipsTool, getEntityConnectionsTool, getEntityListsTool, // Relationship tools getRelationshipTool, // Handlers handleGetEntity, handleGetEntities, handleSearchEntities, handleGetEntityExtensions, handleGetEntityRelationships, handleGetEntityConnections, handleGetEntityLists, handleGetRelationship } from './tools/index.js'; // Optional: Define configuration schema export const configSchema = z.object({ debug: z.boolean().default(false).describe("Enable debug logging") }); // Default export for Smithery compatibility function createServer({ config }: { config: z.infer<typeof configSchema> }) { // Create server instance const server = new Server( { name: 'littlesis-mcp', version: '1.0.0', }, { capabilities: { tools: {}, }, } ); // Define all available tools const tools = [ // Entity tools getEntityTool, getEntitesTool, searchEntitesTool, getEntityExtensionsTool, getEntityRelationshipsTool, getEntityConnectionsTool, getEntityListsTool, // Relationship tools getRelationshipTool, ]; // Tool handlers mapping const toolHandlers = { get_entity: handleGetEntity, get_entities: handleGetEntities, search_entities: handleSearchEntities, get_entity_extensions: handleGetEntityExtensions, get_entity_relationships: handleGetEntityRelationships, get_entity_connections: handleGetEntityConnections, get_entity_lists: handleGetEntityLists, get_relationship: handleGetRelationship, }; // List tools handler server.setRequestHandler(ListToolsRequestSchema, async () => { return { tools, }; }); // Call tool handler server.setRequestHandler(CallToolRequestSchema, async (request) => { const { name, arguments: args } = request.params; const handler = toolHandlers[name as keyof typeof toolHandlers]; if (!handler) { throw new Error(`Unknown tool: ${name}`); } return await handler(args); }); return server; } export default createServer; // Check if this module is being run directly (for stdio compatibility) // This handles direct execution, npx, and bin script execution const isMainModule = process.argv[1]?.endsWith('index.js') || process.argv[1]?.endsWith('dist/index.js') || process.argv[1]?.endsWith('littlesis-mcp') || process.argv[1]?.includes('/.bin/littlesis-mcp'); if (isMainModule) { // Start server with stdio transport when run directly async function main() { const server = createServer({ config: { debug: false } }); const transport = new StdioServerTransport(); await server.connect(transport); // Server is now running console.error('LittleSis MCP Server running on stdio'); } // Handle uncaught errors process.on('unhandledRejection', (reason, promise) => { console.error('Unhandled Rejection at:', promise, 'reason:', reason); process.exit(1); }); process.on('uncaughtException', (error) => { console.error('Uncaught Exception:', error); process.exit(1); }); // Start the server main().catch((error) => { console.error('Failed to start server:', error); process.exit(1); }); }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/code-rabi/littlesis-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server