Skip to main content
Glama

MCP Server Boilerplate

by chrisleekr
eslint.config.mjs4.94 kB
import js from '@eslint/js'; import tseslint from '@typescript-eslint/eslint-plugin'; import tsparser from '@typescript-eslint/parser'; import prettierConfig from 'eslint-config-prettier'; import simpleImportSort from 'eslint-plugin-simple-import-sort'; export default [ { ignores: [ 'dist/**', 'build/**', 'node_modules/**', 'coverage/**', '*.config.js', '*.config.mjs', '*.config.cjs', '.rspack/**', 'jest.config.ts', ], }, js.configs.recommended, { files: ['**/*.ts', '**/*.tsx'], languageOptions: { parser: tsparser, parserOptions: { ecmaVersion: 2022, sourceType: 'module', project: './tsconfig.json', }, globals: { console: 'readonly', process: 'readonly', Buffer: 'readonly', __dirname: 'readonly', __filename: 'readonly', global: 'readonly', require: 'readonly', module: 'readonly', exports: 'readonly', }, }, plugins: { '@typescript-eslint': tseslint, 'simple-import-sort': simpleImportSort, }, rules: { ...tseslint.configs.recommended.rules, ...tseslint.configs['recommended-requiring-type-checking'].rules, // https://eslint.org/docs/latest/rules/sort-imports // Autofix is not working well with this rule. // 'sort-imports': [ // 'error', // { // ignoreCase: false, // ignoreDeclarationSort: false, // ignoreMemberSort: false, // memberSyntaxSortOrder: ['none', 'all', 'multiple', 'single'], // allowSeparatedGroups: false, // }, // ], // https://github.com/lydell/eslint-plugin-simple-import-sort 'simple-import-sort/imports': 'error', 'simple-import-sort/exports': 'error', // TypeScript specific rules '@typescript-eslint/no-unused-vars': [ 'error', { argsIgnorePattern: '^_', varsIgnorePattern: '^_', destructuredArrayIgnorePattern: '^_', }, ], '@typescript-eslint/explicit-function-return-type': 'warn', '@typescript-eslint/no-explicit-any': 'warn', '@typescript-eslint/strict-boolean-expressions': 'error', '@typescript-eslint/prefer-nullish-coalescing': 'error', '@typescript-eslint/prefer-optional-chain': 'error', '@typescript-eslint/no-unnecessary-condition': 'warn', '@typescript-eslint/no-floating-promises': 'error', '@typescript-eslint/await-thenable': 'error', '@typescript-eslint/no-misused-promises': 'error', '@typescript-eslint/require-await': 'error', '@typescript-eslint/return-await': 'error', '@typescript-eslint/no-non-null-assertion': 'warn', '@typescript-eslint/no-var-requires': 'error', // Complexity reduction rules complexity: ['warn', { max: 15 }], 'max-depth': ['error', 4], 'max-lines-per-function': [ 'warn', { max: 120, skipBlankLines: true, skipComments: true, }, ], 'max-params': ['warn', 5], 'max-statements': ['warn', 50], 'max-nested-callbacks': ['error', 3], // Code quality rules 'prefer-const': 'error', 'no-var': 'error', 'object-shorthand': 'error', 'prefer-arrow-callback': 'error', 'prefer-template': 'error', 'no-duplicate-imports': 'error', 'no-debugger': 'error', 'no-unused-expressions': 'error', // Best practices eqeqeq: ['error', 'always'], curly: ['error', 'all'], 'no-eval': 'error', 'no-implied-eval': 'error', 'prefer-promise-reject-errors': 'error', }, }, { files: ['**/*.js', '**/*.mjs', '**/*.cjs'], languageOptions: { ecmaVersion: 2022, sourceType: 'module', }, rules: { 'no-console': 'off', 'prefer-const': 'error', 'no-var': 'error', 'no-debugger': 'error', }, }, // Prettier config must come last to override conflicting rules prettierConfig, { files: ['**/*.test.ts', '**/jest.config.ts', '**/test/**/*.ts'], languageOptions: { globals: { describe: 'readonly', it: 'readonly', expect: 'readonly', test: 'readonly', beforeEach: 'readonly', afterEach: 'readonly', beforeAll: 'readonly', afterAll: 'readonly', jest: 'readonly', }, }, rules: { '@typescript-eslint/no-require-imports': 'off', '@typescript-eslint/no-var-requires': 'off', '@typescript-eslint/no-unsafe-call': 'off', '@typescript-eslint/no-unsafe-member-access': 'off', '@typescript-eslint/no-unsafe-assignment': 'off', '@typescript-eslint/no-unsafe-argument': 'off', '@typescript-eslint/no-unsafe-return': 'off', '@typescript-eslint/unbound-method': 'off', }, }, ];

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/chrisleekr/mcp-server-boilerplate'

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