@contextlint/mcp-server 0.4.6 → 0.5.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.
package/dist/index.js CHANGED
@@ -1,29 +1,28 @@
1
1
  #!/usr/bin/env node
2
- import { readFileSync } from "node:fs";
3
- import { relative, resolve } from "node:path";
2
+ import { resolve } from "node:path";
4
3
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
5
4
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
6
- import { parseDocument, runRules, resolveRule } from "@contextlint/core";
7
- import { glob } from "glob";
5
+ import { parseDocument, runRules, resolveRule, lintFiles, findConfig, loadConfig, formatContentResults, formatFileResults, } from "@contextlint/core";
8
6
  import * as z from "zod/v4";
9
- import { formatContentResults, formatFileResults, } from "./format.js";
10
7
  const server = new McpServer({
11
8
  name: "contextlint",
12
9
  version: "0.0.0",
13
10
  });
14
- // Tool 1: lint — lint markdown content directly
15
- server.tool("lint", "Lint markdown content with specified rules", {
16
- content: z.string().describe("Markdown text to lint"),
17
- rules: z
18
- .array(z.object({
19
- rule: z.string().describe("Rule name (e.g. tbl001)"),
20
- options: z
21
- .record(z.string(), z.unknown())
22
- .optional()
23
- .describe("Rule options"),
24
- }))
25
- .describe("Rules to apply"),
26
- }, async ({ content, rules: ruleEntries }) => {
11
+ server.registerTool("lint", {
12
+ description: "Lint markdown content with specified rules",
13
+ inputSchema: {
14
+ content: z.string().describe("Markdown text to lint"),
15
+ rules: z
16
+ .array(z.object({
17
+ rule: z.string().describe("Rule name (e.g. tbl001)"),
18
+ options: z
19
+ .record(z.string(), z.unknown())
20
+ .optional()
21
+ .describe("Rule options"),
22
+ }))
23
+ .describe("Rules to apply"),
24
+ },
25
+ }, ({ content, rules: ruleEntries }) => {
27
26
  try {
28
27
  const rules = ruleEntries.map((entry) => resolveRule(entry.rule, entry.options));
29
28
  const document = parseDocument(content);
@@ -39,95 +38,49 @@ server.tool("lint", "Lint markdown content with specified rules", {
39
38
  };
40
39
  }
41
40
  });
42
- // Tool 2: lint-files — lint files matching glob patterns
43
- server.tool("lint-files", "Lint markdown files matching glob patterns using a config file or preset", {
44
- patterns: z
45
- .array(z.string())
46
- .optional()
47
- .describe('Glob patterns (default: ["**/*.md"])'),
48
- configPath: z
49
- .string()
50
- .optional()
51
- .describe('Config file path (default: "contextlint.config.json")'),
52
- cwd: z
53
- .string()
54
- .optional()
55
- .describe('Working directory (default: ".")'),
56
- }, async ({ patterns, configPath, cwd }) => {
41
+ server.registerTool("lint-files", {
42
+ description: "Lint markdown files matching glob patterns using a config file or preset",
43
+ inputSchema: {
44
+ patterns: z
45
+ .array(z.string())
46
+ .optional()
47
+ .describe('Glob patterns (default: ["**/*.md"])'),
48
+ configPath: z
49
+ .string()
50
+ .optional()
51
+ .describe('Config file path (default: "contextlint.config.json")'),
52
+ cwd: z
53
+ .string()
54
+ .optional()
55
+ .describe('Working directory (default: ".")'),
56
+ },
57
+ }, ({ patterns, configPath, cwd }) => {
57
58
  const resolvedCwd = resolve(cwd ?? ".");
58
- const resolvedPatterns = patterns ?? ["**/*.md"];
59
59
  try {
60
- const resolvedConfigPath = configPath ?? "contextlint.config.json";
61
- const fullConfigPath = resolve(resolvedCwd, resolvedConfigPath);
62
- let raw;
63
- try {
64
- raw = readFileSync(fullConfigPath, "utf-8");
65
- }
66
- catch {
67
- return {
68
- content: [
69
- {
70
- type: "text",
71
- text: `Error: Cannot read config file: ${fullConfigPath}`,
72
- },
73
- ],
74
- isError: true,
75
- };
60
+ let resolvedConfigPath;
61
+ if (configPath) {
62
+ resolvedConfigPath = resolve(resolvedCwd, configPath);
76
63
  }
77
- let config;
78
- try {
79
- config = JSON.parse(raw);
80
- }
81
- catch {
82
- return {
83
- content: [
84
- {
85
- type: "text",
86
- text: `Error: Invalid JSON in config file: ${fullConfigPath}`,
87
- },
88
- ],
89
- isError: true,
90
- };
91
- }
92
- if (!config.rules || !Array.isArray(config.rules)) {
93
- return {
94
- content: [
95
- {
96
- type: "text",
97
- text: `Error: Config must have a "rules" array: ${fullConfigPath}`,
98
- },
99
- ],
100
- isError: true,
101
- };
102
- }
103
- const rules = config.rules.map((entry) => resolveRule(entry.rule, entry.options));
104
- const docRules = rules.filter((r) => (r.scope ?? "document") === "document");
105
- const projectRules = rules.filter((r) => r.scope === "project");
106
- // Find and lint files
107
- const files = await glob(resolvedPatterns, {
108
- cwd: resolvedCwd,
109
- absolute: true,
110
- });
111
- files.sort();
112
- const projectFiles = files.map((f) => relative(resolvedCwd, f));
113
- const results = [];
114
- // Run project-scoped rules once
115
- if (projectRules.length > 0) {
116
- const emptyDoc = parseDocument("");
117
- const messages = runRules(projectRules, emptyDoc, "<project>", {
118
- projectFiles,
119
- });
120
- if (messages.length > 0) {
121
- results.push({ filePath: "<project>", messages });
64
+ else {
65
+ const found = findConfig(resolvedCwd);
66
+ if (!found) {
67
+ return {
68
+ content: [
69
+ {
70
+ type: "text",
71
+ text: "Error: No contextlint.config.json found. Provide a configPath or create a config file.",
72
+ },
73
+ ],
74
+ isError: true,
75
+ };
122
76
  }
77
+ resolvedConfigPath = found;
123
78
  }
124
- // Run document-scoped rules per file
125
- for (const filePath of files) {
126
- const fileContent = readFileSync(filePath, "utf-8");
127
- const document = parseDocument(fileContent);
128
- const messages = runRules(docRules, document, filePath);
129
- results.push({ filePath, messages });
130
- }
79
+ const config = loadConfig(resolvedConfigPath);
80
+ const resolvedPatterns = patterns && patterns.length > 0
81
+ ? patterns
82
+ : config.include ?? ["**/*.md"];
83
+ const results = lintFiles(resolvedPatterns, config, resolvedCwd);
131
84
  const text = formatFileResults(results, resolvedCwd);
132
85
  return { content: [{ type: "text", text }] };
133
86
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,10 +1,14 @@
1
1
  {
2
2
  "name": "@contextlint/mcp-server",
3
- "version": "0.4.6",
3
+ "version": "0.5.0",
4
4
  "description": "MCP server for contextlint",
5
5
  "type": "module",
6
- "main": "dist/index.js",
7
- "types": "dist/index.d.ts",
6
+ "exports": {
7
+ ".": {
8
+ "types": "./dist/index.d.ts",
9
+ "import": "./dist/index.js"
10
+ }
11
+ },
8
12
  "bin": {
9
13
  "contextlint-mcp": "dist/index.js"
10
14
  },
@@ -16,10 +20,9 @@
16
20
  "typecheck": "tsc --noEmit"
17
21
  },
18
22
  "dependencies": {
19
- "@contextlint/core": "0.0.0",
23
+ "@contextlint/core": "0.5.0",
20
24
  "@modelcontextprotocol/sdk": "^1.27.0",
21
- "glob": "^13.0.6",
22
- "zod": "^4.0.0"
25
+ "zod": "^4.3.6"
23
26
  },
24
27
  "publishConfig": {
25
28
  "access": "public"
package/dist/format.d.ts DELETED
@@ -1,8 +0,0 @@
1
- import type { LintMessage } from "@contextlint/core";
2
- export interface FileLintResult {
3
- filePath: string;
4
- messages: LintMessage[];
5
- }
6
- export declare function formatContentResults(messages: LintMessage[]): string;
7
- export declare function formatFileResults(results: FileLintResult[], cwd: string): string;
8
- //# sourceMappingURL=format.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,WAAW,EAAE,CAAC;CACzB;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,MAAM,CAkBpE;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,cAAc,EAAE,EACzB,GAAG,EAAE,MAAM,GACV,MAAM,CAkCR"}
package/dist/format.js DELETED
@@ -1,38 +0,0 @@
1
- import { relative } from "node:path";
2
- export function formatContentResults(messages) {
3
- if (messages.length === 0) {
4
- return "No issues found.";
5
- }
6
- const lines = [];
7
- for (const msg of messages) {
8
- lines.push(` line ${msg.line} ${msg.severity} ${msg.message} ${msg.ruleId}`);
9
- }
10
- lines.push("");
11
- const errorWord = messages.length === 1 ? "error" : "errors";
12
- lines.push(`${messages.length} ${errorWord}`);
13
- return lines.join("\n");
14
- }
15
- export function formatFileResults(results, cwd) {
16
- const filesWithErrors = results.filter((r) => r.messages.length > 0);
17
- if (filesWithErrors.length === 0) {
18
- return "No issues found.";
19
- }
20
- const lines = [];
21
- let totalErrors = 0;
22
- for (const result of filesWithErrors) {
23
- const label = result.filePath === "<project>"
24
- ? "(project)"
25
- : relative(cwd, result.filePath);
26
- lines.push(label);
27
- for (const msg of result.messages) {
28
- lines.push(` line ${msg.line} ${msg.severity} ${msg.message} ${msg.ruleId}`);
29
- totalErrors++;
30
- }
31
- lines.push("");
32
- }
33
- const fileWord = filesWithErrors.length === 1 ? "file" : "files";
34
- const errorWord = totalErrors === 1 ? "error" : "errors";
35
- lines.push(`${totalErrors} ${errorWord} in ${filesWithErrors.length} ${fileWord}`);
36
- return lines.join("\n");
37
- }
38
- //# sourceMappingURL=format.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"format.js","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAQrC,MAAM,UAAU,oBAAoB,CAAC,QAAuB;IAC1D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CACR,UAAU,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,QAAQ,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,MAAM,EAAE,CACtE,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC7D,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC,CAAC;IAE9C,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,OAAyB,EACzB,GAAW;IAEX,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAErE,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,KAAK,MAAM,MAAM,IAAI,eAAe,EAAE,CAAC;QACrC,MAAM,KAAK,GACT,MAAM,CAAC,QAAQ,KAAK,WAAW;YAC7B,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAElB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YAClC,KAAK,CAAC,IAAI,CACR,UAAU,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,QAAQ,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,MAAM,EAAE,CACtE,CAAC;YACF,WAAW,EAAE,CAAC;QAChB,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IACjE,MAAM,SAAS,GAAG,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;IACzD,KAAK,CAAC,IAAI,CACR,GAAG,WAAW,IAAI,SAAS,OAAO,eAAe,CAAC,MAAM,IAAI,QAAQ,EAAE,CACvE,CAAC;IAEF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}