@e18e/mcp 0.0.4 → 0.0.6
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/README.md +1 -1
- package/dist/docs/docs.json +111 -60
- package/dist/docs/index.d.ts +1 -0
- package/dist/icons/index.d.ts +2 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +0 -4
- package/dist/index.js.map +1 -1
- package/dist/prompts/index.d.ts +1 -0
- package/dist/prompts/task/index.d.ts +2 -0
- package/dist/resources/index.d.ts +1 -0
- package/dist/resources/replacement-docs/index.d.ts +2 -0
- package/dist/run.d.ts +2 -0
- package/dist/run.js +6 -0
- package/dist/run.js.map +1 -0
- package/dist/setup.d.ts +4 -0
- package/dist/tools/code-checker/index.d.ts +2 -0
- package/dist/tools/index.d.ts +2 -0
- package/dist/tools/npm-i-checker/index.d.ts +2 -0
- package/dist/tools/utils.d.ts +1 -0
- package/package.json +20 -13
- package/dist/index.test.js +0 -164
- package/dist/index.test.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function get_docs(): Promise<any>;
|
package/dist/index.d.ts
ADDED
package/dist/index.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
1
|
import { McpServer } from 'tmcp';
|
|
3
2
|
import { ValibotJsonSchemaAdapter } from '@tmcp/adapter-valibot';
|
|
4
|
-
import { StdioTransport } from '@tmcp/transport-stdio';
|
|
5
3
|
import { setup_tools, setup_prompts, setup_resources } from './setup.js';
|
|
6
4
|
import { icons } from './icons/index.js';
|
|
7
5
|
export const server = new McpServer({
|
|
@@ -21,6 +19,4 @@ export const server = new McpServer({
|
|
|
21
19
|
setup_tools(server);
|
|
22
20
|
setup_resources(server);
|
|
23
21
|
setup_prompts(server);
|
|
24
|
-
const stdio_transport = new StdioTransport(server);
|
|
25
|
-
stdio_transport.listen();
|
|
26
22
|
//# 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":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACzE,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,SAAS,CAClC;IACC,IAAI,EAAE,UAAU;IAChB,OAAO,EAAE,OAAO;IAChB,KAAK;IACL,WAAW,EACV,2IAA2I;CAC5I,EACD;IACC,OAAO,EAAE,IAAI,wBAAwB,EAAE;IACvC,YAAY,EAAE;QACb,KAAK,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;QAC5B,SAAS,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;QAChC,OAAO,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;QAC9B,WAAW,EAAE,EAAE;KACf;CACD,CACD,CAAC;AAIF,WAAW,CAAC,MAAM,CAAC,CAAC;AACpB,eAAe,CAAC,MAAM,CAAC,CAAC;AACxB,aAAa,CAAC,MAAM,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { task } from './task/index.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { replacement_docs } from './replacement-docs/index.js';
|
package/dist/run.d.ts
ADDED
package/dist/run.js
ADDED
package/dist/run.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEpC,MAAM,eAAe,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;AACnD,eAAe,CAAC,MAAM,EAAE,CAAC"}
|
package/dist/setup.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function get_suggestions_for_package(pkg: string): string | undefined;
|
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@e18e/mcp",
|
|
3
3
|
"mcpName": "dev.e18e/e18e",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.6",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
7
7
|
},
|
|
8
8
|
"description": "The official e18e MCP server for advising agents on modern and performant best practices",
|
|
9
9
|
"type": "module",
|
|
10
10
|
"bin": {
|
|
11
|
-
"e18e-mcp": "dist/
|
|
11
|
+
"e18e-mcp": "dist/run.js"
|
|
12
12
|
},
|
|
13
13
|
"homepage": "https://github.com/e18e/mcp#readme",
|
|
14
14
|
"bugs": {
|
|
@@ -20,8 +20,15 @@
|
|
|
20
20
|
"path": "packages/stdio"
|
|
21
21
|
},
|
|
22
22
|
"files": [
|
|
23
|
-
"./dist"
|
|
23
|
+
"./dist",
|
|
24
|
+
"!./dist/*.test.{js,d.ts,js.map}"
|
|
24
25
|
],
|
|
26
|
+
"exports": {
|
|
27
|
+
".": {
|
|
28
|
+
"types": "./dist/index.d.ts",
|
|
29
|
+
"default": "./dist/index.js"
|
|
30
|
+
}
|
|
31
|
+
},
|
|
25
32
|
"keywords": [
|
|
26
33
|
"tmcp",
|
|
27
34
|
"mcp",
|
|
@@ -29,26 +36,26 @@
|
|
|
29
36
|
"e18e"
|
|
30
37
|
],
|
|
31
38
|
"dependencies": {
|
|
32
|
-
"@tmcp/adapter-valibot": "^0.1.
|
|
33
|
-
"@tmcp/transport-stdio": "^0.4.
|
|
39
|
+
"@tmcp/adapter-valibot": "^0.1.6",
|
|
40
|
+
"@tmcp/transport-stdio": "^0.4.3",
|
|
34
41
|
"es-module-lexer": "^1.7.0",
|
|
35
42
|
"module-replacements": "^2.10.1",
|
|
36
|
-
"tmcp": "^1.
|
|
37
|
-
"valibot": "^1.2
|
|
38
|
-
"vitest": "^4.0.14"
|
|
43
|
+
"tmcp": "^1.19.4",
|
|
44
|
+
"valibot": "^1.4.2"
|
|
39
45
|
},
|
|
40
46
|
"devDependencies": {
|
|
41
|
-
"@modelcontextprotocol/inspector": "^0.
|
|
42
|
-
"@types/node": "^
|
|
43
|
-
"@typescript/native-preview": "7.0.0-dev.
|
|
44
|
-
"publint": "^0.3.
|
|
47
|
+
"@modelcontextprotocol/inspector": "^0.18.0",
|
|
48
|
+
"@types/node": "^26.1.1",
|
|
49
|
+
"@typescript/native-preview": "7.0.0-dev.20260109.1",
|
|
50
|
+
"publint": "^0.3.16",
|
|
51
|
+
"vitest": "^4.0.16"
|
|
45
52
|
},
|
|
46
53
|
"scripts": {
|
|
47
54
|
"build": "tsgo && pnpm generate:docs && pnpm copy-assets && publint",
|
|
48
55
|
"copy-assets": "node ./scripts/copy-assets.ts",
|
|
49
56
|
"generate:docs:dev": "node ./scripts/fetch-docs.ts dev",
|
|
50
57
|
"generate:docs": "node ./scripts/fetch-docs.ts",
|
|
51
|
-
"inspect": "pnpm build && mcp-inspector --transport stdio node ./dist/
|
|
58
|
+
"inspect": "pnpm build && mcp-inspector --transport stdio node ./dist/run.js",
|
|
52
59
|
"update:version": "node scripts/update-version.ts",
|
|
53
60
|
"test": "vitest"
|
|
54
61
|
}
|
package/dist/index.test.js
DELETED
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
import { InMemoryTransport, Session } from '@tmcp/transport-in-memory';
|
|
2
|
-
import { beforeEach, describe, expect, it } from 'vitest';
|
|
3
|
-
import { server } from './index.js';
|
|
4
|
-
let transport;
|
|
5
|
-
let session;
|
|
6
|
-
beforeEach(async () => {
|
|
7
|
-
transport = new InMemoryTransport(server);
|
|
8
|
-
session = transport.session();
|
|
9
|
-
await session.initialize('2025-11-25', {}, {
|
|
10
|
-
name: 'test-client',
|
|
11
|
-
version: '1.0.0',
|
|
12
|
-
});
|
|
13
|
-
});
|
|
14
|
-
describe('npm-i-checker', () => {
|
|
15
|
-
it('is an available tool', async () => {
|
|
16
|
-
const tools = await session.listTools();
|
|
17
|
-
expect(tools.tools).toContainEqual(expect.objectContaining({
|
|
18
|
-
name: 'npm-i-checker',
|
|
19
|
-
}));
|
|
20
|
-
});
|
|
21
|
-
describe.each(['npm', 'pnpm', 'yarn', 'bun'])('using "%s" package manager', (package_manager) => {
|
|
22
|
-
// these are all the alias of `npm i`...they technically don't work with other package managers but we literally don't even check this
|
|
23
|
-
// the test is just here to make sure that we at least support all the common aliases of `install`
|
|
24
|
-
describe.each([
|
|
25
|
-
'add',
|
|
26
|
-
'a',
|
|
27
|
-
'i',
|
|
28
|
-
'in',
|
|
29
|
-
'ins',
|
|
30
|
-
'inst',
|
|
31
|
-
'insta',
|
|
32
|
-
'instal',
|
|
33
|
-
'isnt',
|
|
34
|
-
'isnta',
|
|
35
|
-
'isntal',
|
|
36
|
-
'isntall',
|
|
37
|
-
])('using alias "%s"', (alias) => {
|
|
38
|
-
it("doesn't suggest anything for packages that don't have replacements", async () => {
|
|
39
|
-
const tool = await session.callTool('npm-i-checker', {
|
|
40
|
-
command: `${package_manager} ${alias} svelte`,
|
|
41
|
-
});
|
|
42
|
-
expect(tool.structuredContent).toEqual({
|
|
43
|
-
suggestions: [],
|
|
44
|
-
});
|
|
45
|
-
});
|
|
46
|
-
it('provides documentations for packages that have package replacements', async () => {
|
|
47
|
-
const tool = await session.callTool('npm-i-checker', {
|
|
48
|
-
command: `${package_manager} ${alias} chalk`,
|
|
49
|
-
});
|
|
50
|
-
expect(tool.structuredContent).toEqual({
|
|
51
|
-
suggestions: [
|
|
52
|
-
expect.stringContaining("Don't use `chalk` instead read the following document:"),
|
|
53
|
-
],
|
|
54
|
-
});
|
|
55
|
-
});
|
|
56
|
-
it("provides documentations for packages that have package replacements even if there's a flag after", async () => {
|
|
57
|
-
const tool = await session.callTool('npm-i-checker', {
|
|
58
|
-
command: `${package_manager} ${alias} chalk --save-dev`,
|
|
59
|
-
});
|
|
60
|
-
expect(tool.structuredContent).toEqual({
|
|
61
|
-
suggestions: [
|
|
62
|
-
expect.stringContaining("Don't use `chalk` instead read the following document:"),
|
|
63
|
-
],
|
|
64
|
-
});
|
|
65
|
-
});
|
|
66
|
-
it("provides documentations for packages that have package replacements even if there's a flag before", async () => {
|
|
67
|
-
const tool = await session.callTool('npm-i-checker', {
|
|
68
|
-
command: `${package_manager} ${alias} -w chalk`,
|
|
69
|
-
});
|
|
70
|
-
expect(tool.structuredContent).toEqual({
|
|
71
|
-
suggestions: [
|
|
72
|
-
expect.stringContaining("Don't use `chalk` instead read the following document:"),
|
|
73
|
-
],
|
|
74
|
-
});
|
|
75
|
-
});
|
|
76
|
-
it('provides documentations for packages that have micro utilities replacements', async () => {
|
|
77
|
-
const tool = await session.callTool('npm-i-checker', {
|
|
78
|
-
command: `${package_manager} ${alias} arr-diff`,
|
|
79
|
-
});
|
|
80
|
-
expect(tool.structuredContent).toEqual({
|
|
81
|
-
suggestions: [
|
|
82
|
-
"Don't use `arr-diff` instead Use a.filter((item) => !b.includes(item))",
|
|
83
|
-
],
|
|
84
|
-
});
|
|
85
|
-
});
|
|
86
|
-
it('provides documentations for multiple packages skipping the non problematic one', async () => {
|
|
87
|
-
const tool = await session.callTool('npm-i-checker', {
|
|
88
|
-
command: `${package_manager} ${alias} arr-diff svelte chalk`,
|
|
89
|
-
});
|
|
90
|
-
expect(tool.structuredContent).toEqual({
|
|
91
|
-
suggestions: [
|
|
92
|
-
"Don't use `arr-diff` instead Use a.filter((item) => !b.includes(item))",
|
|
93
|
-
expect.stringContaining("Don't use `chalk` instead read the following document:"),
|
|
94
|
-
],
|
|
95
|
-
});
|
|
96
|
-
});
|
|
97
|
-
});
|
|
98
|
-
});
|
|
99
|
-
});
|
|
100
|
-
describe('code-checker', () => {
|
|
101
|
-
it('is an available tool', async () => {
|
|
102
|
-
const tools = await session.listTools();
|
|
103
|
-
expect(tools.tools).toContainEqual(expect.objectContaining({
|
|
104
|
-
name: 'code-checker',
|
|
105
|
-
}));
|
|
106
|
-
});
|
|
107
|
-
it("doesn't suggest anything for packages that don't have replacements", async () => {
|
|
108
|
-
const tool = await session.callTool('code-checker', {
|
|
109
|
-
code: `import { onMount } from 'svelte';`,
|
|
110
|
-
});
|
|
111
|
-
expect(tool.structuredContent).toEqual({
|
|
112
|
-
suggestions: [],
|
|
113
|
-
});
|
|
114
|
-
});
|
|
115
|
-
it('provides documentations for packages that have package replacements', async () => {
|
|
116
|
-
const tool = await session.callTool('code-checker', {
|
|
117
|
-
code: `import chalk from 'chalk';
|
|
118
|
-
|
|
119
|
-
console.log(chalk.blue('Hello world!'));`,
|
|
120
|
-
});
|
|
121
|
-
expect(tool.structuredContent).toEqual({
|
|
122
|
-
suggestions: [
|
|
123
|
-
expect.stringContaining("Don't use `chalk` instead read the following document:"),
|
|
124
|
-
],
|
|
125
|
-
});
|
|
126
|
-
});
|
|
127
|
-
it('provides documentations for packages that have micro utilities replacements', async () => {
|
|
128
|
-
const tool = await session.callTool('code-checker', {
|
|
129
|
-
code: `import diff from 'arr-diff';
|
|
130
|
-
|
|
131
|
-
const a = ['a', 'b', 'c', 'd'];
|
|
132
|
-
const b = ['b', 'c'];
|
|
133
|
-
|
|
134
|
-
console.log(diff(a, b));`,
|
|
135
|
-
});
|
|
136
|
-
expect(tool.structuredContent).toEqual({
|
|
137
|
-
suggestions: [
|
|
138
|
-
"Don't use `arr-diff` instead Use a.filter((item) => !b.includes(item))",
|
|
139
|
-
],
|
|
140
|
-
});
|
|
141
|
-
});
|
|
142
|
-
it('provides documentations for multiple packages skipping the non problematic one', async () => {
|
|
143
|
-
const tool = await session.callTool('code-checker', {
|
|
144
|
-
code: `import chalk from 'chalk';
|
|
145
|
-
import { onMount } from 'svelte';
|
|
146
|
-
import diff from 'arr-diff';
|
|
147
|
-
|
|
148
|
-
onMount(()=>{
|
|
149
|
-
const a = ['a', 'b', 'c', 'd'];
|
|
150
|
-
const b = ['b', 'c'];
|
|
151
|
-
|
|
152
|
-
console.log(diff(a, b));
|
|
153
|
-
});
|
|
154
|
-
`,
|
|
155
|
-
});
|
|
156
|
-
expect(tool.structuredContent).toEqual({
|
|
157
|
-
suggestions: [
|
|
158
|
-
expect.stringContaining("Don't use `chalk` instead read the following document:"),
|
|
159
|
-
"Don't use `arr-diff` instead Use a.filter((item) => !b.includes(item))",
|
|
160
|
-
],
|
|
161
|
-
});
|
|
162
|
-
});
|
|
163
|
-
});
|
|
164
|
-
//# sourceMappingURL=index.test.js.map
|
package/dist/index.test.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"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"}
|