fa-mcp-sdk 0.12.12 → 0.12.17
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/cli-template/FA-MCP-SDK-DOC/01-getting-started.md +1 -0
- package/cli-template/FA-MCP-SDK-DOC/02-2-prompts-and-resources.md +29 -0
- package/cli-template/FA-MCP-SDK-DOC/11-public-contract.md +4 -1
- package/cli-template/package.json +1 -1
- package/dist/core/_types_/types.d.ts +7 -0
- package/dist/core/_types_/types.d.ts.map +1 -1
- package/dist/core/mcp/prompts.d.ts.map +1 -1
- package/dist/core/mcp/prompts.js +16 -1
- package/dist/core/mcp/prompts.js.map +1 -1
- package/dist/core/web/home-api.d.ts.map +1 -1
- package/dist/core/web/home-api.js +26 -3
- package/dist/core/web/home-api.js.map +1 -1
- package/dist/core/web/static/home/script.js +109 -10
- package/dist/core/web/static/styles.css +11 -0
- package/package.json +1 -1
- package/src/template/prompts/tool-prompts.ts +33 -0
- package/src/template/start.ts +2 -0
- package/src/template/tools/tools.ts +2 -3
|
@@ -30,6 +30,7 @@ interface McpServerData {
|
|
|
30
30
|
toolHandler: <T = unknown>(params: IToolHandlerParams) => Promise<TToolHandlerResponse<T>>;
|
|
31
31
|
agentBrief: string; // Brief description
|
|
32
32
|
agentPrompt: string; // System prompt
|
|
33
|
+
toolPrompt?: TPromptContentFunction; // tool_prompt content (args.tool); default → ''
|
|
33
34
|
customPrompts?: IPromptData[]; // Additional prompts
|
|
34
35
|
usedHttpHeaders?: IUsedHttpHeader[] | null; // HTTP headers for auth
|
|
35
36
|
customResources?: IResourceData[] | null; // Custom resources
|
|
@@ -23,6 +23,35 @@ export const AGENT_PROMPT = `You are a database management assistant.
|
|
|
23
23
|
- Return results in JSON format`;
|
|
24
24
|
```
|
|
25
25
|
|
|
26
|
+
#### Tool Prompt (`toolPrompt` on `McpServerData`)
|
|
27
|
+
|
|
28
|
+
The standard `tool_prompt` prompt returns instructions scoped to a single MCP tool. It declares a
|
|
29
|
+
**required** `tool` argument (the tool name) and delegates the whole content logic to the child
|
|
30
|
+
project through the optional `toolPrompt` field on `McpServerData`. The function receives the tool
|
|
31
|
+
name in `args.tool` and returns the prompt for that tool. When `toolPrompt` is not supplied, a
|
|
32
|
+
built-in stub returns an empty string — the `tool_prompt` prompt is still advertised, it just
|
|
33
|
+
yields nothing.
|
|
34
|
+
|
|
35
|
+
```typescript
|
|
36
|
+
import { McpServerData, TPromptContentFunction } from 'fa-mcp-sdk';
|
|
37
|
+
|
|
38
|
+
const TOOL_PROMPTS: Record<string, string> = {
|
|
39
|
+
run_query: 'Always wrap multi-statement SQL in a transaction. Return rows as JSON.',
|
|
40
|
+
describe_table: 'List columns with types and nullability. Omit internal system columns.',
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
const toolPrompt: TPromptContentFunction = (_req, args) => {
|
|
44
|
+
const tool = args?.tool;
|
|
45
|
+
if (!tool) return '';
|
|
46
|
+
return TOOL_PROMPTS[tool] ?? '';
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
const serverData: McpServerData = { ..., toolPrompt };
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
The values arrive via `request.params.arguments` on `prompts/get`, exactly like the parameterised
|
|
53
|
+
custom prompts below; `tool` is marked `required: true` in `prompts/list`.
|
|
54
|
+
|
|
26
55
|
### Custom Prompts
|
|
27
56
|
|
|
28
57
|
Add in `src/prompts/custom-prompts.ts`:
|
|
@@ -150,7 +150,10 @@ default) the capability is not advertised and all four `tasks/*` methods return
|
|
|
150
150
|
`name`, `description`, `arguments[]` (each `IPromptArgument`), `content` (string or function),
|
|
151
151
|
`requireAuth`, `requiredScopes`, `deprecated`. Optional UI metadata (§10.5, MAY): `title` (human-facing
|
|
152
152
|
label, falls back to `name`) and `icons` (`IIcon[]` — `{ src; mimeType?; sizes? }`). Both pass through
|
|
153
|
-
`prompts/list` unchanged; built-in `agent_brief` / `agent_prompt` carry a `title`.
|
|
153
|
+
`prompts/list` unchanged; built-in `agent_brief` / `agent_prompt` carry a `title`. The built-in
|
|
154
|
+
`tool_prompt` prompt is also guaranteed: it has a required `tool` argument (the MCP tool name) and
|
|
155
|
+
returns the tool-specific prompt supplied by the project through `McpServerData.toolPrompt`; without
|
|
156
|
+
that field a stub returns an empty string.
|
|
154
157
|
|
|
155
158
|
### Resource (`IResourceData` / `IResourceInfo`)
|
|
156
159
|
|
|
@@ -283,6 +283,13 @@ export interface McpServerData {
|
|
|
283
283
|
toolHandler: <T = unknown>(params: IToolHandlerParams) => Promise<TToolHandlerResponse<T>>;
|
|
284
284
|
agentBrief: string;
|
|
285
285
|
agentPrompt: string;
|
|
286
|
+
/**
|
|
287
|
+
* Optional tool-specific prompt served by the `tool_prompt` prompt. Receives the required
|
|
288
|
+
* `tool` argument (the MCP tool name) in `args.tool` and returns instructions scoped to that
|
|
289
|
+
* tool. The whole logic lives in the child project. When omitted, a built-in stub returns an
|
|
290
|
+
* empty string.
|
|
291
|
+
*/
|
|
292
|
+
toolPrompt?: TPromptContentFunction;
|
|
286
293
|
customPrompts?: IPromptData[] | ((args: ITransportContext) => Promise<IPromptData[]>);
|
|
287
294
|
usedHttpHeaders?: IUsedHttpHeader[] | null;
|
|
288
295
|
customResources?: IResourceData[] | ((args: ITransportContext) => Promise<IResourceData[]>) | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/_types_/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/_types_/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/core/mcp/prompts.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAA+B,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/core/mcp/prompts.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAA+B,MAAM,qBAAqB,CAAC;AAkExG,wBAAsB,cAAc,CAAC,IAAI,EAAE,iBAAiB;;;;;;;;;;;GAc3D;AAED,eAAO,MAAM,SAAS,GAAU,SAAS,iBAAiB,EAAE,MAAM,iBAAiB,KAAG,OAAO,CAAC,GAAG,CAyChG,CAAC"}
|
package/dist/core/mcp/prompts.js
CHANGED
|
@@ -7,7 +7,7 @@ async function getPrompts(args) {
|
|
|
7
7
|
console.error('Error: Project data not initialized. Make sure initMcpServer() has been called.');
|
|
8
8
|
return [];
|
|
9
9
|
}
|
|
10
|
-
const { agentBrief, agentPrompt, customPrompts } = projectData;
|
|
10
|
+
const { agentBrief, agentPrompt, toolPrompt, customPrompts } = projectData;
|
|
11
11
|
// Validate that required prompts are available
|
|
12
12
|
if (!agentBrief || !agentPrompt) {
|
|
13
13
|
console.error('Error: Required prompts (agentBrief, agentPrompt) are missing from project data');
|
|
@@ -40,6 +40,21 @@ async function getPrompts(args) {
|
|
|
40
40
|
content: agentPrompt,
|
|
41
41
|
requireAuth: false,
|
|
42
42
|
},
|
|
43
|
+
{
|
|
44
|
+
name: 'tool_prompt',
|
|
45
|
+
title: 'Tool prompt',
|
|
46
|
+
description: 'Tool-specific prompt. Requires the "tool" argument (the MCP tool name).',
|
|
47
|
+
arguments: [
|
|
48
|
+
{
|
|
49
|
+
name: 'tool',
|
|
50
|
+
description: 'Name of the MCP tool to get the prompt for.',
|
|
51
|
+
required: true,
|
|
52
|
+
},
|
|
53
|
+
],
|
|
54
|
+
// Logic lives in the child project (projectData.toolPrompt); default stub returns empty string.
|
|
55
|
+
content: toolPrompt ?? (() => ''),
|
|
56
|
+
requireAuth: false,
|
|
57
|
+
},
|
|
43
58
|
...resolvedCustomPrompts,
|
|
44
59
|
];
|
|
45
60
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/core/mcp/prompts.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,KAAK,UAAU,UAAU,CAAC,IAAuB;IAC/C,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,CAAC,KAAK,CAAC,iFAAiF,CAAC,CAAC;QACjG,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/core/mcp/prompts.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"home-api.d.ts","sourceRoot":"","sources":["../../../src/core/web/home-api.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AA6B5C,wBAAsB,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"home-api.d.ts","sourceRoot":"","sources":["../../../src/core/web/home-api.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AA6B5C,wBAAsB,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CA4IhF"}
|
|
@@ -39,7 +39,29 @@ export async function handleHomeInfo(_req, res) {
|
|
|
39
39
|
const { httpComponents } = global.__MCP_PROJECT_DATA__;
|
|
40
40
|
const toolsOrFn = global.__MCP_PROJECT_DATA__.tools;
|
|
41
41
|
let tools = typeof toolsOrFn === 'function' ? await toolsOrFn(httpArgs) : toolsOrFn;
|
|
42
|
-
const { getConsulUIAddress = (_s) => '' } = getProjectData();
|
|
42
|
+
const { getConsulUIAddress = (_s) => '', toolPrompt } = getProjectData();
|
|
43
|
+
// Honestly probe every tool for a non-empty tool-specific prompt. The `tool_prompt` prompt is
|
|
44
|
+
// advertised over MCP unconditionally, but on the home page it should appear only when at least
|
|
45
|
+
// one tool actually returns a non-empty prompt. We collect the names of such tools so the viewer
|
|
46
|
+
// can offer a dropdown, and drop `tool_prompt` from the home prompt list when none qualify.
|
|
47
|
+
const toolPromptTools = [];
|
|
48
|
+
let homePrompts = prompts;
|
|
49
|
+
if (typeof toolPrompt === 'function') {
|
|
50
|
+
for (const tool of tools) {
|
|
51
|
+
try {
|
|
52
|
+
const text = await toolPrompt({ method: 'prompts/get', params: { name: 'tool_prompt', arguments: { tool: tool.name } } }, { tool: tool.name });
|
|
53
|
+
if (typeof text === 'string' && text.trim()) {
|
|
54
|
+
toolPromptTools.push(tool.name);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
// A tool whose prompt resolver throws is treated as having no prompt.
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
if (toolPromptTools.length === 0) {
|
|
63
|
+
homePrompts = prompts.filter((p) => p.name !== 'tool_prompt');
|
|
64
|
+
}
|
|
43
65
|
// Build footer HTML
|
|
44
66
|
const footerParts = [];
|
|
45
67
|
if (repo) {
|
|
@@ -111,10 +133,11 @@ export async function handleHomeInfo(_req, res) {
|
|
|
111
133
|
logoSvg,
|
|
112
134
|
toolsCount: tools.length,
|
|
113
135
|
resourcesCount: resources.length,
|
|
114
|
-
promptsCount:
|
|
136
|
+
promptsCount: homePrompts.length,
|
|
115
137
|
tools,
|
|
116
138
|
resources,
|
|
117
|
-
prompts,
|
|
139
|
+
prompts: homePrompts,
|
|
140
|
+
toolPromptTools,
|
|
118
141
|
db,
|
|
119
142
|
openAPI: !!httpComponents?.apiRouter,
|
|
120
143
|
consul,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"home-api.js","sourceRoot":"","sources":["../../../src/core/web/home-api.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;AAE7B,MAAM,SAAS,GAAG,GAAW,EAAE;IAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC;IAClD,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,aAAa,GAAG,EAAE,CAAC;IAEnC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACd,OAAO,GAAG,KAAK,KAAK,OAAO,KAAK,OAAO,GAAG,CAAC;IAC7C,CAAC;SAAM,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,GAAG,OAAO,KAAK,OAAO,GAAG,CAAC;IACnC,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,OAAO,GAAG,CAAC;IACvB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAa,EAAE,GAAa;IAC/D,IAAI,CAAC;QACH,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC;QACpC,MAAM,YAAY,GAAG,SAAS,CAAC,WAAW;aACvC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;aACnB,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;aACvB,IAAI,EAAE,CAAC;QACV,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,EAAE,SAAS,EAAE,MAAe,EAAE,CAAC;QAChD,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACvD,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC;QACnD,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,CAAC,oBAAoB,CAAC;QACvD,MAAM,SAAS,GAAG,MAAM,CAAC,oBAAoB,CAAC,KAAK,CAAC;QACpD,IAAI,KAAK,GAAW,OAAO,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5F,MAAM,EAAE,kBAAkB,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,cAAc,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"home-api.js","sourceRoot":"","sources":["../../../src/core/web/home-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,9 @@
|
|
|
2
2
|
let toolsData = [];
|
|
3
3
|
let resourcesData = [];
|
|
4
4
|
let promptsData = [];
|
|
5
|
+
// Names of tools that expose a non-empty `tool_prompt`, computed honestly on the server by probing
|
|
6
|
+
// every tool. Drives the dropdown shown for the `tool_prompt` row in the prompts modal.
|
|
7
|
+
let toolPromptTools = [];
|
|
5
8
|
|
|
6
9
|
// Parse an /mcp response. The Streamable HTTP transport may answer either as plain JSON or as a
|
|
7
10
|
// Server-Sent Events stream ("event: message\ndata: {...}"), depending on negotiation. Handle both so
|
|
@@ -187,6 +190,7 @@ async function loadPageData() {
|
|
|
187
190
|
toolsData = data.tools || [];
|
|
188
191
|
resourcesData = data.resources || [];
|
|
189
192
|
promptsData = data.prompts || [];
|
|
193
|
+
toolPromptTools = data.toolPromptTools || [];
|
|
190
194
|
|
|
191
195
|
// Render page info
|
|
192
196
|
renderPageInfo(data);
|
|
@@ -300,14 +304,19 @@ function generatePromptsTableRows(prompts) {
|
|
|
300
304
|
return '<tr><td colspan="2" class="loading-cell">No prompts available</td></tr>';
|
|
301
305
|
}
|
|
302
306
|
return prompts
|
|
303
|
-
.map(
|
|
304
|
-
|
|
305
|
-
|
|
307
|
+
.map((prompt, index) => {
|
|
308
|
+
// The `tool_prompt` row gets a tool picker instead of a static "prompt" link: choosing a tool
|
|
309
|
+
// fetches that tool's prompt. The list of tools is restricted to those with a non-empty prompt.
|
|
310
|
+
const actions =
|
|
311
|
+
prompt.name === 'tool_prompt'
|
|
312
|
+
? `<span class="tool-prompt-actions"><a class="detail-link" id="prompts-toggle-details-${index}" onclick="togglePromptDetails('prompts', ${index}, 'details')">details</a> / <select class="tool-prompt-select" id="tool-prompt-select-${index}" onchange="loadToolPrompt(${index}, this.value)"><option value="">— select tool —</option>${toolPromptTools.map((name) => `<option value="${escapeAttr(name)}">${escapeHtml(name)}</option>`).join('')}</select></span>`
|
|
313
|
+
: `<a class="detail-link" id="prompts-toggle-details-${index}" onclick="togglePromptDetails('prompts', ${index}, 'details')">details</a>
|
|
314
|
+
/
|
|
315
|
+
<a class="detail-link" id="prompts-toggle-prompt-${index}" onclick="togglePromptDetails('prompts', ${index}, 'prompt')">prompt</a>`;
|
|
316
|
+
return `<tr>
|
|
306
317
|
<td><code>${prompt.name}</code></td>
|
|
307
318
|
<td>
|
|
308
|
-
|
|
309
|
-
/
|
|
310
|
-
<a class="detail-link" id="prompts-toggle-prompt-${index}" onclick="togglePromptDetails('prompts', ${index}, 'prompt')">prompt</a>
|
|
319
|
+
${actions}
|
|
311
320
|
</td>
|
|
312
321
|
</tr>
|
|
313
322
|
<tr id="prompts-detail-${index}" class="detail-row" style="display: none;">
|
|
@@ -318,8 +327,8 @@ function generatePromptsTableRows(prompts) {
|
|
|
318
327
|
<div class="prompt-content" style="display: none;"></div>
|
|
319
328
|
</div>
|
|
320
329
|
</td>
|
|
321
|
-
</tr
|
|
322
|
-
)
|
|
330
|
+
</tr>`;
|
|
331
|
+
})
|
|
323
332
|
.join('');
|
|
324
333
|
}
|
|
325
334
|
|
|
@@ -391,7 +400,10 @@ async function togglePromptDetails(sectionName, index, displayType) {
|
|
|
391
400
|
// Show the detail row with loading state
|
|
392
401
|
detailRow.style.display = 'table-row';
|
|
393
402
|
currentToggleLink.textContent = 'hide';
|
|
394
|
-
|
|
403
|
+
// The `tool_prompt` row has no separate "prompt" link (it uses a dropdown), so guard against null.
|
|
404
|
+
if (otherToggleLink) {
|
|
405
|
+
otherToggleLink.textContent = displayType === 'details' ? 'prompt' : 'details';
|
|
406
|
+
}
|
|
395
407
|
loadingSpinner.style.display = 'block';
|
|
396
408
|
jsonContent.style.display = 'none';
|
|
397
409
|
promptContent.style.display = 'none';
|
|
@@ -465,7 +477,89 @@ async function togglePromptDetails(sectionName, index, displayType) {
|
|
|
465
477
|
// Hide the detail row
|
|
466
478
|
detailRow.style.display = 'none';
|
|
467
479
|
toggleLinkDetails.textContent = 'details';
|
|
468
|
-
toggleLinkPrompt
|
|
480
|
+
if (toggleLinkPrompt) {
|
|
481
|
+
toggleLinkPrompt.textContent = 'prompt';
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
// Fetch and display the prompt of a specific tool via the `tool_prompt` MCP prompt. Triggered by the
|
|
487
|
+
// tool dropdown in the prompts modal; passes the selected tool name in the `tool` argument.
|
|
488
|
+
// eslint-disable-next-line unused-imports/no-unused-vars
|
|
489
|
+
async function loadToolPrompt(index, toolName) {
|
|
490
|
+
const detailRow = document.getElementById('prompts-detail-' + index);
|
|
491
|
+
const loadingSpinner = detailRow.querySelector('.loading-spinner');
|
|
492
|
+
const jsonContent = detailRow.querySelector('.json-content');
|
|
493
|
+
const promptContent = detailRow.querySelector('.prompt-content');
|
|
494
|
+
const toggleLinkDetails = document.getElementById('prompts-toggle-details-' + index);
|
|
495
|
+
|
|
496
|
+
// Empty selection collapses the detail row and restores the "details" link label.
|
|
497
|
+
if (!toolName) {
|
|
498
|
+
detailRow.style.display = 'none';
|
|
499
|
+
if (toggleLinkDetails) {
|
|
500
|
+
toggleLinkDetails.textContent = 'details';
|
|
501
|
+
}
|
|
502
|
+
return;
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
detailRow.style.display = 'table-row';
|
|
506
|
+
if (toggleLinkDetails) {
|
|
507
|
+
toggleLinkDetails.textContent = 'details';
|
|
508
|
+
}
|
|
509
|
+
loadingSpinner.style.display = 'block';
|
|
510
|
+
jsonContent.style.display = 'none';
|
|
511
|
+
promptContent.style.display = 'none';
|
|
512
|
+
|
|
513
|
+
try {
|
|
514
|
+
const response = await fetch('/mcp', {
|
|
515
|
+
method: 'POST',
|
|
516
|
+
headers: { 'Content-Type': 'application/json', Accept: 'application/json, text/event-stream' },
|
|
517
|
+
body: JSON.stringify({
|
|
518
|
+
jsonrpc: '2.0',
|
|
519
|
+
id: Date.now(),
|
|
520
|
+
method: 'prompts/get',
|
|
521
|
+
params: { name: 'tool_prompt', arguments: { tool: toolName } },
|
|
522
|
+
}),
|
|
523
|
+
});
|
|
524
|
+
|
|
525
|
+
if (!response.ok) {
|
|
526
|
+
let errorData = '';
|
|
527
|
+
try {
|
|
528
|
+
errorData = await response.text();
|
|
529
|
+
} catch {
|
|
530
|
+
//
|
|
531
|
+
}
|
|
532
|
+
errorData = [response.statusText || '', errorData].join('. ');
|
|
533
|
+
throw new Error('HTTP ' + response.status + (errorData ? ': ' + errorData : ''));
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
const result = await parseMcpJsonResponse(response);
|
|
537
|
+
const messages = result.result?.messages || [];
|
|
538
|
+
let promptText = '';
|
|
539
|
+
|
|
540
|
+
messages.forEach((msg, i) => {
|
|
541
|
+
if (i > 0) {
|
|
542
|
+
promptText += '\n\n---\n\n';
|
|
543
|
+
}
|
|
544
|
+
promptText += 'Role: ' + msg.role + '\n\n';
|
|
545
|
+
if (typeof msg.content === 'string') {
|
|
546
|
+
promptText += msg.content;
|
|
547
|
+
} else if (msg.content?.text) {
|
|
548
|
+
promptText += msg.content.text;
|
|
549
|
+
} else {
|
|
550
|
+
promptText += JSON.stringify(msg.content, null, 2);
|
|
551
|
+
}
|
|
552
|
+
});
|
|
553
|
+
|
|
554
|
+
loadingSpinner.style.display = 'none';
|
|
555
|
+
promptContent.style.display = 'block';
|
|
556
|
+
promptContent.innerHTML = '<pre class="json-content">' + escapeHtml(promptText) + '</pre>';
|
|
557
|
+
addCopyButton(promptContent.querySelector('.json-content'));
|
|
558
|
+
} catch (error) {
|
|
559
|
+
loadingSpinner.style.display = 'none';
|
|
560
|
+
promptContent.style.display = 'block';
|
|
561
|
+
promptContent.innerHTML =
|
|
562
|
+
'<div class="error-message">Failed to load tool prompt: ' + escapeHtml(error.message) + '</div>';
|
|
469
563
|
}
|
|
470
564
|
}
|
|
471
565
|
|
|
@@ -625,6 +719,11 @@ function escapeHtml(text) {
|
|
|
625
719
|
return div.innerHTML;
|
|
626
720
|
}
|
|
627
721
|
|
|
722
|
+
// Escape a string for safe use inside a double-quoted HTML attribute (e.g. <option value="...">).
|
|
723
|
+
function escapeAttr(text) {
|
|
724
|
+
return escapeHtml(text).replace(/"/g, '"');
|
|
725
|
+
}
|
|
726
|
+
|
|
628
727
|
// Copy to clipboard functionality
|
|
629
728
|
function addCopyButton(contentElement) {
|
|
630
729
|
if (!contentElement || contentElement.hasAttribute('data-copy-added')) {
|
|
@@ -273,6 +273,17 @@ select {
|
|
|
273
273
|
padding: 3px 6px;
|
|
274
274
|
}
|
|
275
275
|
|
|
276
|
+
.tool-prompt-actions {
|
|
277
|
+
display: inline-flex;
|
|
278
|
+
align-items: center;
|
|
279
|
+
gap: 6px;
|
|
280
|
+
white-space: nowrap;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
.tool-prompt-select {
|
|
284
|
+
vertical-align: middle;
|
|
285
|
+
}
|
|
286
|
+
|
|
276
287
|
input:focus, select:focus, textarea:focus {
|
|
277
288
|
outline: none;
|
|
278
289
|
border-color: #0065ff;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fa-mcp-sdk",
|
|
3
3
|
"productName": "FA MCP SDK",
|
|
4
|
-
"version": "0.12.
|
|
4
|
+
"version": "0.12.17",
|
|
5
5
|
"description": "Core infrastructure and templates for building Model Context Protocol (MCP) servers with TypeScript",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "dist/core/index.js",
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { TPromptContentFunction } from '../../core/index.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Tool-specific prompts served by the built-in `tool_prompt` prompt.
|
|
5
|
+
*
|
|
6
|
+
* The `tool_prompt` prompt is always advertised over MCP, but it returns a non-empty string only
|
|
7
|
+
* for the tools listed here. Clients pass the tool name in the required `tool` argument; the home
|
|
8
|
+
* page catalog viewer additionally shows a dropdown of the tools that have a non-empty prompt.
|
|
9
|
+
*
|
|
10
|
+
* Add an entry keyed by the MCP tool name to attach usage instructions to that tool.
|
|
11
|
+
*/
|
|
12
|
+
const TOOL_PROMPTS: Record<string, string> = {
|
|
13
|
+
example_tool: `You are using the "example_tool" tool, which processes a text input and returns the result.
|
|
14
|
+
|
|
15
|
+
- Pass the text to process in the required "query" field.
|
|
16
|
+
- Keep the input concise; send one logical request at a time.
|
|
17
|
+
- Use the returned text as the processed output — do not re-process it again unless the user asks.`,
|
|
18
|
+
|
|
19
|
+
example_search: `You are using the "example_search" tool, which performs a search with pagination and filtering.
|
|
20
|
+
|
|
21
|
+
- Put the search text in the required "query" field.
|
|
22
|
+
- Use "limit" (1-100, default 20) to cap the number of results; request only as many as you need.
|
|
23
|
+
- Use "threshold" (0-1) to drop low-similarity matches when precision matters more than recall.
|
|
24
|
+
- Read results from the "results" array; "total" reports how many matches exist overall.`,
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
export const toolPrompt: TPromptContentFunction = (_request, args) => {
|
|
28
|
+
const tool = args?.tool;
|
|
29
|
+
if (!tool) {
|
|
30
|
+
return '';
|
|
31
|
+
}
|
|
32
|
+
return TOOL_PROMPTS[tool] ?? '';
|
|
33
|
+
};
|
package/src/template/start.ts
CHANGED
|
@@ -6,6 +6,7 @@ import { customResources } from './custom-resources.js';
|
|
|
6
6
|
import { AGENT_BRIEF } from './prompts/agent-brief.js';
|
|
7
7
|
import { AGENT_PROMPT } from './prompts/agent-prompt.js';
|
|
8
8
|
import { customPrompts } from './prompts/custom-prompts.js';
|
|
9
|
+
import { toolPrompt } from './prompts/tool-prompts.js';
|
|
9
10
|
import { handleToolCall } from './tools/handle-tool-call.js';
|
|
10
11
|
import { tools } from './tools/tools.js';
|
|
11
12
|
|
|
@@ -27,6 +28,7 @@ const startProject = async (): Promise<void> => {
|
|
|
27
28
|
// Prompts
|
|
28
29
|
agentBrief: AGENT_BRIEF,
|
|
29
30
|
agentPrompt: AGENT_PROMPT,
|
|
31
|
+
toolPrompt,
|
|
30
32
|
customPrompts,
|
|
31
33
|
usedHttpHeaders: [
|
|
32
34
|
{ name: 'Authorization', description: 'JWT Token issued on request' },
|
|
@@ -101,9 +101,8 @@ export const tools: Tool[] = [
|
|
|
101
101
|
// work can exceed the 30s tool timeout or you want a cancellable, pollable operation.
|
|
102
102
|
name: 'example_long_task',
|
|
103
103
|
title: 'Example: long-running task',
|
|
104
|
-
description:
|
|
105
|
-
|
|
106
|
-
'Demonstrates task-augmented execution (§8.7) — call it with a `task` param to run it as a task.',
|
|
104
|
+
description: `Example long-running tool that emits progress and supports cancellation.
|
|
105
|
+
Demonstrates task-augmented execution — call it with a 'task' param to run it as a task.`,
|
|
107
106
|
inputSchema: {
|
|
108
107
|
$schema: JSON_SCHEMA_2020_12,
|
|
109
108
|
type: 'object',
|