docbot-mcp 1.0.1 → 1.0.3

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.
@@ -0,0 +1,57 @@
1
+ # GitHub Copilot Instructions for docbot-mcp
2
+
3
+ ## Purpose
4
+ Provide workspace-specific guidance for Copilot Chat agents to work effectively in this small Node.js MCP server project.
5
+
6
+ ## Project brief
7
+ - Node.js (ES modules, `type: module`) MCP server for CSV/JSON/Markdown conversion.
8
+ - Two transports: HTTP (`index.js`) and stdio (`index-stdio.js`).
9
+ - Minimal scripts (`npm start` for HTTP), no automated tests currently.
10
+ - Dependencies: `@modelcontextprotocol/sdk`, `@rflukerii/docbot`, `express`, `zod`.
11
+
12
+ ## Key files
13
+ - `index.js` : main server (HTTP + Express on port 3000, MCP tool registration)
14
+ - `index-stdio.js` : stdio transport alternative
15
+ - `README.md` : most up-to-date usage, architecture and examples
16
+ - `package.json` : scripts + dependencies
17
+
18
+ ## Build / test commands
19
+ - `npm install`
20
+ - `npm start` (starts production-like server on localhost:3000)
21
+ - `node index-stdio.js` (stdio transport)
22
+
23
+ > Note: no test suite exists, implement new tests in a modern style (Jest/Mocha/Node test runner) if requested.
24
+
25
+ ## Architecture notes
26
+ - Each POST to `/docbot-mcp` creates a new MCP server via `createServer` and `StreamableHTTPServerTransport`.
27
+ - Tools are registered via `server.registerTool()` with Zod schema validation.
28
+ - Conversion logic primarily lives in the `@rflukerii/docbot` package and is wrapped by MCP tool handlers.
29
+
30
+ ## Conventions / style
31
+ - ES modules (`import` / `export`) throughout.
32
+ - Keep payloads as text (`type: 'text'`, `content` array) in MCP responses.
33
+ - Avoid mutating shared state; each request new server context.
34
+ - For new tool additions, follow the registration pattern in `index.js`.
35
+
36
+ ## Common changes
37
+ - Add tool: update `index.js` tool registry + README docs
38
+ - Transport behavior: follow patterns for `StreamableHTTPServerTransport` and stdio setup
39
+
40
+ ## Gotchas
41
+ - Do not use `require()` (Esm only).
42
+ - Express v5 middleware and response flow must match existing behavior.
43
+ - Keep `content` as string arrays; avoid mixing objects in response type unless MCP spec supports.
44
+
45
+ ## Example prompts
46
+ 1. "Add tool `yamlToJson` in `index.js` with schema `yaml: z.string()`, converting YAML text to JSON string output."
47
+ 2. "Refactor server lifecycle in `index.js` so MCP server instance is reused across requests but still isolates tool execution per request."
48
+ 3. "Add basic Jest tests for `csvToJson` and `jsonToCsv` using `node index-stdio.js` or direct function exports."
49
+
50
+ ## Next agent customizations
51
+ - **agent**: `create-agent docbot-mcp/dev` (focus on tool authoring and transport patches).
52
+ - **prompt**: `create-prompt docbot-mcp/add-tool` (guides on how to add tools with converters and Zod schemas).
53
+ - **hook**: `create-hook docbot-mcp/on-run-tests` (automate test command from unobtrusive mode).
54
+
55
+ ---
56
+
57
+ > This file is intended as workspace bootstrap for Copilot Chat. Keep it minimal, precise, and updated when major architecture or dependency changes occur.
@@ -0,0 +1,45 @@
1
+ ---
2
+ name: chat-instructions
3
+ description: Chatbot response rules and guidelines
4
+ ---
5
+
6
+ # Chat Instructions
7
+
8
+ These instructions govern how chatbots respond to user prompts. Chatbots and large-language models must strictly adhere to these rules at all times.
9
+
10
+ **Rule 1: Always limit responses to a maximum of 30 words**
11
+
12
+ **Rule 2: Chat in a conversational manner**
13
+
14
+ A conversational manner means:
15
+
16
+ - Use natural language that mimics human conversation
17
+ - Write direct and concise statements or questions
18
+ - Exchange back-and-forth dialogue addressing one idea or topic at a time
19
+ - Avoid providing multiple suggestions, explanations, or solutions in a single response
20
+ - When the user writes a declarative prompt:
21
+ - Do NOT immediately provide answers, suggestions or explanations
22
+ - Respond with a simple acknowledgement
23
+ - Ask a question to clarify intent--a declarative prompt may be a prelude to an imperative or interrogative prompt
24
+
25
+ **Rule 3: Tutoring the User**
26
+
27
+ When the user asks how to complete a complex procedure such as coding and developing a user-interface, adhere to the following rules:
28
+
29
+ - **Do not immediately provide a full solution:**\
30
+ Begin by framing the problem to help the user reason about the solution themselves.
31
+
32
+ - **Surface initial thought starters:**\
33
+ Share guiding principles or foundational concepts relevant to the task (e.g., componentization, data flow, layout hierarchy, state boundaries).
34
+
35
+ - **Ask probing, clarifying questions:**\
36
+ Use questions to uncover intent, constraints, and assumptions. The goal is to lead the user's thinking, not to guess on their behalf.
37
+
38
+ - **Facilitate decomposition:**\
39
+ Use chain-of-thought (CoT) reasoning to break down complex procedures into smaller, manageable steps and present each step sequentially. (e.g., pages → sections → components → behaviors).
40
+
41
+ - **Use conversational scaffolding:**\
42
+ Phrase guidance in a way that nudges the user toward the correct approach without asserting the solution. Avoid prescriptive language unless explicitly prompted.
43
+
44
+ - **Casually confirm understanding:**\
45
+ Periodically check the user's comprehension with a short quiz e.g. "Does this distinction make sense?" or "Can you explain why we'd lift this state?".
@@ -0,0 +1,97 @@
1
+ # Version Control Instructions
2
+
3
+ Git is the version-control system used for this project.
4
+
5
+ Follow the rules below when a user prompts you to complete a task related to version control.
6
+
7
+ ## Copilot Capabilities
8
+
9
+ You are allowed to carry out ONLY the following two actions:
10
+
11
+ 1. Examine the git working directory to determine whether the modified files belong in the same commit.
12
+ 2. Write a commit message for staged files adhering to the guidelines in "Writing Commit Messages" below.
13
+
14
+ ### Allowed Commands
15
+
16
+ Copilot may always run the following commands without asking for permission:
17
+
18
+ - **git status --short**\
19
+ List files that are in the working directory as well as files that are staged for commit.
20
+
21
+ - **git diff --name-only**\
22
+ List files in the working diretory that have unstaged changes.
23
+
24
+ - **git diff --staged --name-only**\
25
+ List files that are staged for commit.
26
+
27
+ ### Prohibited Commands
28
+
29
+ Copilot is NEVER allowed to modify the index nor run the following commands regardless of user permission:
30
+
31
+ - **git add [file]**\
32
+ NEVER stage a file for commit.
33
+
34
+ - **git commit -m "[message]"**\
35
+ NEVER create a commit.
36
+
37
+ - **git restore [file]**\
38
+ NEVER discard changes in the working directory.
39
+
40
+ - **git reset [file]**\
41
+ NEVER unstage a file.
42
+
43
+ - **git push**\
44
+ NEVER push commits to a remote repository.
45
+
46
+ - **git pull**\
47
+ NEVER pull changes from a remote repository.
48
+
49
+
50
+ - Always examine the diffs of staged files to get context for commit messages
51
+ - List staged files by executing `git diff --cached --name-only`
52
+ - View file diffs, run `git diff --cached`
53
+ - If there are no staged files:
54
+ - Do not write a commit message
55
+ - Inform the user, "There are not staged files"
56
+
57
+ ## Writing Commit Messages
58
+
59
+ Commit messages must follow the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) structure including:
60
+
61
+ 1. Use the imperative mood -- the message should complete the sentence: "If applied, this commit will __"
62
+ 2. Insert a blank line between the subject and the body
63
+ 3. Limit the subject to a maximum of 50 characters
64
+ 4. Wrap the body lines at approximately 72 characters
65
+ 5. Use Conventional Commit prefixes (e.g., `feat:`, `fix:`, `docs:`, `refactor`, `revert`)
66
+
67
+ Carry out the following steps when prompted to write a commit message:
68
+
69
+ 1. Check for staged files: run `git diff --staged --name-only`
70
+ 2. If there are no staged files:
71
+ - Do not write a commit message
72
+ - Inform the user, "There are not staged files"
73
+
74
+ If there are staged files:
75
+
76
+ 1. Run `git diff --staged` to examine the diffs and get context for commit messages
77
+ 2. Based on the file diffs, infer the message's structural elements including:
78
+ - Prefix
79
+ - Optional scope
80
+ - Body
81
+ - Footer
82
+ 3. Output the commit message inside the chat panel for the user to preview prior to commit
83
+
84
+ ### Example Message Structure
85
+
86
+ ```
87
+ feat(auth): add OAuth2 provider for Google logins
88
+
89
+ Implement the Google-specific strategy within the passport middleware.
90
+ This allows users to authenticate using their corporate accounts.
91
+
92
+ Fixes: #102
93
+ ```
94
+
95
+ ## References
96
+
97
+ [Git documentation](https://git-scm.com/docs "Official Git docs")
package/CHANGELOG.md CHANGED
@@ -2,6 +2,16 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
+ ## [1.0.3] - 2026-03-14
6
+ ### Changed
7
+ - Update HTTP MCP endpoint from `/mcp` to `/docbot-mcp` for all incoming requests
8
+ - Bump `server.json` package/service version to 1.0.3
9
+
10
+ ## [1.0.2] - 2026-03-09
11
+ ### Added
12
+ - Add `mcpName` to package.json for MCP registry registration
13
+ - Add `server.json` for MCP registry metadata
14
+
5
15
  ## [1.0.1] - 2026-03-07
6
16
  ### Changed
7
17
  - Migrate from stdio to HTTP transport
package/index-stdio.js CHANGED
@@ -1,63 +1,63 @@
1
- #!/usr/bin/env node
2
-
3
- // External imports
4
- import { csvToJson, jsonToCsv, jsonToMarkdown, csvToMarkdown } from '@rflukerii/docbot'
5
- import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
6
- import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
7
- import { z } from 'zod';
8
-
9
- const server = new McpServer({
10
- name: 'docbot-mcp',
11
- version: '1.0.0'
12
- });
13
-
14
- server.registerTool(
15
- 'csvToJson',
16
- {
17
- title: 'Convert CSV to JSON',
18
- description: 'Converts a CSV string to JSON',
19
- inputSchema: { csv: z.string() }
20
- },
21
- async ({ csv }) => ({
22
- content: [{ type: 'text', text: JSON.stringify(csvToJson(csv)) }]
23
- })
24
- );
25
-
26
- server.registerTool(
27
- 'jsonToCsv',
28
- {
29
- title: 'Convert JSON to CSV',
30
- description: 'Converts a JSON string to CSV',
31
- inputSchema: { json: z.string() }
32
- },
33
- async ({ json }) => ({
34
- content: [{ type: 'text', text: jsonToCsv(JSON.parse(json)) }]
35
- })
36
- );
37
-
38
- server.registerTool(
39
- 'csvToMarkdown',
40
- {
41
- title: 'Convert CSV to Markdown',
42
- description: 'Converts a CSV string to Markdown',
43
- inputSchema: { csv: z.string() }
44
- },
45
- async ({ csv }) => ({
46
- content: [{ type: 'text', text: csvToMarkdown(csv) }]
47
- })
48
- );
49
-
50
- server.registerTool(
51
- 'jsonToMarkdown',
52
- {
53
- title: 'Convert JSON to Markdown',
54
- description: 'Converts a JSON string to Markdown',
55
- inputSchema: { json: z.string() }
56
- },
57
- async ({ json }) => ({
58
- content: [{ type: 'text', text: jsonToMarkdown(JSON.parse(json)) }]
59
- })
60
- );
61
-
62
- const transport = new StdioServerTransport();
63
- await server.connect(transport);
1
+ #!/usr/bin/env node
2
+
3
+ // External imports
4
+ import { csvToJson, jsonToCsv, jsonToMarkdown, csvToMarkdown } from '@rflukerii/docbot'
5
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
6
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
7
+ import { z } from 'zod';
8
+
9
+ const server = new McpServer({
10
+ name: 'docbot-mcp',
11
+ version: '1.0.0'
12
+ });
13
+
14
+ server.registerTool(
15
+ 'csvToJson',
16
+ {
17
+ title: 'Convert CSV to JSON',
18
+ description: 'Converts a CSV string to JSON',
19
+ inputSchema: { csv: z.string() }
20
+ },
21
+ async ({ csv }) => ({
22
+ content: [{ type: 'text', text: JSON.stringify(csvToJson(csv)) }]
23
+ })
24
+ );
25
+
26
+ server.registerTool(
27
+ 'jsonToCsv',
28
+ {
29
+ title: 'Convert JSON to CSV',
30
+ description: 'Converts a JSON string to CSV',
31
+ inputSchema: { json: z.string() }
32
+ },
33
+ async ({ json }) => ({
34
+ content: [{ type: 'text', text: jsonToCsv(JSON.parse(json)) }]
35
+ })
36
+ );
37
+
38
+ server.registerTool(
39
+ 'csvToMarkdown',
40
+ {
41
+ title: 'Convert CSV to Markdown',
42
+ description: 'Converts a CSV string to Markdown',
43
+ inputSchema: { csv: z.string() }
44
+ },
45
+ async ({ csv }) => ({
46
+ content: [{ type: 'text', text: csvToMarkdown(csv) }]
47
+ })
48
+ );
49
+
50
+ server.registerTool(
51
+ 'jsonToMarkdown',
52
+ {
53
+ title: 'Convert JSON to Markdown',
54
+ description: 'Converts a JSON string to Markdown',
55
+ inputSchema: { json: z.string() }
56
+ },
57
+ async ({ json }) => ({
58
+ content: [{ type: 'text', text: jsonToMarkdown(JSON.parse(json)) }]
59
+ })
60
+ );
61
+
62
+ const transport = new StdioServerTransport();
63
+ await server.connect(transport);
package/index.js CHANGED
@@ -1,85 +1,121 @@
1
- #!/usr/bin/env node
2
-
3
- // External imports
4
- import { csvToJson, jsonToCsv, jsonToMarkdown, csvToMarkdown } from '@rflukerii/docbot'
5
- import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
6
- import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
7
- import { z } from 'zod';
8
- import express from 'express';
9
-
10
- const app = express();
11
- app.use(express.json());
12
-
13
- function createServer() {
14
- const server = new McpServer({
15
- name: 'docbot-mcp',
16
- version: '1.0.0'
17
- });
18
-
19
- server.registerTool(
20
- 'csvToJson',
21
- {
22
- title: 'Convert CSV to JSON',
23
- description: 'Converts a CSV string to JSON',
24
- inputSchema: { csv: z.string() }
25
- },
26
- async ({ csv }) => ({
27
- content: [{ type: 'text', text: JSON.stringify(csvToJson(csv)) }]
28
- })
29
- );
30
-
31
- server.registerTool(
32
- 'jsonToCsv',
33
- {
34
- title: 'Convert JSON to CSV',
35
- description: 'Converts a JSON string to CSV',
36
- inputSchema: { json: z.string() }
37
- },
38
- async ({ json }) => ({
39
- content: [{ type: 'text', text: jsonToCsv(JSON.parse(json)) }]
40
- })
41
- );
42
-
43
- server.registerTool(
44
- 'csvToMarkdown',
45
- {
46
- title: 'Convert CSV to Markdown',
47
- description: 'Converts a CSV string to Markdown',
48
- inputSchema: { csv: z.string() }
49
- },
50
- async ({ csv }) => ({
51
- content: [{ type: 'text', text: csvToMarkdown(csv) }]
52
- })
53
- );
54
-
55
- server.registerTool(
56
- 'jsonToMarkdown',
57
- {
58
- title: 'Convert JSON to Markdown',
59
- description: 'Converts a JSON string to Markdown',
60
- inputSchema: { json: z.string() }
61
- },
62
- async ({ json }) => ({
63
- content: [{ type: 'text', text: jsonToMarkdown(JSON.parse(json)) }]
64
- })
65
- );
66
-
67
- return server;
68
- }
69
-
70
- app.get('/health', (req, res) => {
71
- res.status(200).send('OK');
72
- });
73
-
74
- app.post('/docbot-mcp', async (req, res) => {
75
- const server = createServer();
76
- const transport = new StreamableHTTPServerTransport({
77
- sessionIdGenerator: undefined,
78
- });
79
- await server.connect(transport);
80
- await transport.handleRequest(req, res, req.body);
81
- });
82
-
83
- app.listen(process.env.PORT || 3000, () => {
84
- console.log('docbot-mcp running on http://localhost:3000/docbot-mcp');
1
+ #!/usr/bin/env node
2
+
3
+ // External imports
4
+ import { csvToJson, jsonToCsv, jsonToMarkdown, csvToMarkdown } from '@rflukerii/docbot'
5
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
6
+ import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
7
+ import { z } from 'zod';
8
+ import express from 'express';
9
+
10
+ const app = express();
11
+ app.use(express.json());
12
+
13
+ function createServer() {
14
+ const server = new McpServer({
15
+ name: 'docbot-mcp',
16
+ version: '1.0.2'
17
+ });
18
+
19
+ server.registerTool(
20
+ 'csvToJson',
21
+ {
22
+ title: 'Convert CSV to JSON',
23
+ description: 'Converts a CSV string to JSON',
24
+ inputSchema: { csv: z.string() }
25
+ },
26
+ async ({ csv }) => ({
27
+ content: [
28
+ {
29
+ type: 'text',
30
+ text: JSON.stringify(csvToJson(csv)) + '\n\n@rflukerii/docubot'
31
+ },
32
+ {
33
+ type: 'text',
34
+ text: '@rflukerii/docubot'
35
+ }
36
+ ]
37
+ })
38
+ );
39
+
40
+ server.registerTool(
41
+ 'jsonToCsv',
42
+ {
43
+ title: 'Convert JSON to CSV',
44
+ description: 'Converts a JSON string to CSV',
45
+ inputSchema: { json: z.string() }
46
+ },
47
+ async ({ json }) => ({
48
+ content: [
49
+ {
50
+ type: 'text',
51
+ text: jsonToCsv(JSON.parse(json)) + '\n\n@rflukerii/docubot'
52
+ },
53
+ {
54
+ type: 'text',
55
+ text: '@rflukerii/docubot'
56
+ }
57
+ ]
58
+ })
59
+ );
60
+
61
+ server.registerTool(
62
+ 'csvToMarkdown',
63
+ {
64
+ title: 'Convert CSV to Markdown',
65
+ description: 'Converts a CSV string to Markdown',
66
+ inputSchema: { csv: z.string() }
67
+ },
68
+ async ({ csv }) => ({
69
+ content: [
70
+ {
71
+ type: 'text',
72
+ text: csvToMarkdown(csv) + '\n\n@rflukerii/docubot'
73
+ },
74
+ {
75
+ type: 'text',
76
+ text: '@rflukerii/docubot'
77
+ }
78
+ ]
79
+ })
80
+ );
81
+
82
+ server.registerTool(
83
+ 'jsonToMarkdown',
84
+ {
85
+ title: 'Convert JSON to Markdown',
86
+ description: 'Converts a JSON string to Markdown',
87
+ inputSchema: { json: z.string() }
88
+ },
89
+ async ({ json }) => ({
90
+ content: [
91
+ {
92
+ type: 'text',
93
+ text: jsonToMarkdown(JSON.parse(json)) + '\n\n@rflukerii/docubot'
94
+ },
95
+ {
96
+ type: 'text',
97
+ text: '@rflukerii/docubot'
98
+ }
99
+ ]
100
+ })
101
+ );
102
+
103
+ return server;
104
+ }
105
+
106
+ app.get('/health', (req, res) => {
107
+ res.status(200).send('OK');
108
+ });
109
+
110
+ app.post('/docbot-mcp', async (req, res) => {
111
+ const server = createServer();
112
+ const transport = new StreamableHTTPServerTransport({
113
+ sessionIdGenerator: undefined,
114
+ });
115
+ await server.connect(transport);
116
+ await transport.handleRequest(req, res, req.body);
117
+ });
118
+
119
+ app.listen(process.env.PORT || 3000, () => {
120
+ console.log('docbot-mcp running on http://localhost:3000/docbot-mcp');
85
121
  });
package/package.json CHANGED
@@ -1,22 +1,23 @@
1
- {
2
- "name": "docbot-mcp",
3
- "version": "1.0.1",
4
- "description": "Bidirectional CSV <> JSON <> Markdown transformer",
5
- "main": "index.js",
6
- "bin": {
7
- "docbot-mcp": "./index.js"
8
- },
9
- "scripts": {
10
- "test": "echo \"Error: no test specified\" && exit 1",
11
- "start": "node index.js"
12
- },
13
- "author": "",
14
- "license": "MIT",
15
- "dependencies": {
16
- "@modelcontextprotocol/sdk": "^1.27.1",
17
- "@rflukerii/docbot": "^1.0.1",
18
- "express": "^5.2.1",
19
- "zod": "^4.3.6"
20
- },
21
- "type": "module"
22
- }
1
+ {
2
+ "name": "docbot-mcp",
3
+ "version": "1.0.3",
4
+ "mcpName": "io.github.rflukerii-dev/docbot-mcp",
5
+ "description": "Bidirectional CSV <> JSON <> Markdown transformer",
6
+ "main": "index.js",
7
+ "bin": {
8
+ "docbot-mcp": "./index.js"
9
+ },
10
+ "scripts": {
11
+ "test": "echo \"Error: no test specified\" && exit 1",
12
+ "start": "node index.js"
13
+ },
14
+ "author": "",
15
+ "license": "MIT",
16
+ "dependencies": {
17
+ "@modelcontextprotocol/sdk": "^1.27.1",
18
+ "@rflukerii/docbot": "^1.0.1",
19
+ "express": "^5.2.1",
20
+ "zod": "^4.3.6"
21
+ },
22
+ "type": "module"
23
+ }
@@ -0,0 +1,21 @@
1
+ ID,First Name,Last Name,Email,Department,Job Title,Salary,Hire Date,Manager,Status
2
+ 1,John,Smith,john.smith@company.com,Engineering,Senior Developer,125000,2019-03-15,Alice Johnson,Active
3
+ 2,Sarah,Johnson,sarah.johnson@company.com,Marketing,Marketing Manager,95000,2020-06-20,Bob Wilson,Active
4
+ 3,Michael,Davis,michael.davis@company.com,Sales,Sales Executive,105000,2018-11-10,Carol White,Active
5
+ 4,Emily,Brown,emily.brown@company.com,HR,HR Specialist,72000,2021-01-25,David Green,Active
6
+ 5,David,Wilson,david.wilson@company.com,Engineering,Junior Developer,65000,2022-08-05,Alice Johnson,Active
7
+ 6,Jessica,Martinez,jessica.martinez@company.com,Finance,Finance Analyst,78000,2020-02-14,Edward Black,Active
8
+ 7,Robert,Anderson,robert.anderson@company.com,Operations,Operations Manager,98000,2019-09-30,Frank Gray,Active
9
+ 8,Lisa,Taylor,lisa.taylor@company.com,Marketing,Content Creator,68000,2021-04-12,Bob Wilson,Active
10
+ 9,James,Thomas,james.thomas@company.com,Sales,Sales Representative,72000,2021-11-08,Carol White,Active
11
+ 10,Patricia,Jackson,patricia.jackson@company.com,Engineering,DevOps Engineer,115000,2020-05-18,Alice Johnson,Active
12
+ 11,Christopher,White,christopher.white@company.com,Finance,Senior Accountant,92000,2019-07-22,Edward Black,Active
13
+ 12,Nancy,Harris,nancy.harris@company.com,HR,Recruiter,71000,2021-09-15,David Green,Active
14
+ 13,Daniel,Martin,daniel.martin@company.com,Operations,Logistics Coordinator,61000,2022-03-28,Frank Gray,Active
15
+ 14,Karen,Thompson,karen.thompson@company.com,Marketing,Social Media Manager,65000,2022-01-10,Bob Wilson,Active
16
+ 15,Paul,Garcia,paul.garcia@company.com,Sales,Account Executive,88000,2020-10-05,Carol White,Active
17
+ 16,Betty,Lee,betty.lee@company.com,Engineering,QA Engineer,82000,2021-06-14,Alice Johnson,Active
18
+ 17,Mark,Perez,mark.perez@company.com,Finance,Budget Analyst,75000,2021-12-06,Edward Black,Active
19
+ 18,Susan,Edwards,susan.edwards@company.com,HR,Training Manager,84000,2020-08-17,David Green,Active
20
+ 19,Donald,Collins,donald.collins@company.com,Operations,Supply Chain Manager,101000,2019-04-09,Frank Gray,Active
21
+ 20,Margaret,Stewart,margaret.stewart@company.com,Sales,Regional Manager,110000,2018-02-19,Carol White,Active
package/server.json ADDED
@@ -0,0 +1,25 @@
1
+ {
2
+ "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
3
+ "name": "io.github.rflukerii-dev/docbot-mcp",
4
+ "description": "Bidirectional CSV <> JSON <> Markdown transformer",
5
+ "repository": {
6
+ "url": "https://github.com/rflukerii-dev/docbot-mcp",
7
+ "source": "github"
8
+ },
9
+ "version": "1.0.3",
10
+ "packages": [
11
+ {
12
+ "registryType": "npm",
13
+ "identifier": "docbot-mcp",
14
+ "version": "1.0.3",
15
+ "transport": {
16
+ "type": "streamable-http"
17
+ }
18
+ }
19
+ ],
20
+ "remotes": {
21
+ "streamable-http": {
22
+ "url": "https://spdeyfjpfv.us-east-1.awsapprunner.com/docbot-mcp"
23
+ }
24
+ }
25
+ }