mcp-declarative-server

johnhenry/mcp-declarative-server

3.2

If you are the rightful owner of mcp-declarative-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

MCP Declarative Server is a utility module for creating Model Context Protocol (MCP) servers declaratively.

MCP Declarative Server

A utility module for creating Model Context Protocol (MCP) servers declaratively.

Installation

npm install mcp-client-router

Usage

import { MCPDeclarativeServer } from "mcp-client-router/declarative-server";

// Create a server declaratively
const server = new MCPDeclarativeServer({
  name: "my-server",
  version: "1.0.0",

  // Define tools as arrays of arguments
  tools: [
    [
      "greeting",
      { message: "string" },
      async ({ message }) => ({
        content: [{ type: "text", text: `Hello, ${message}!` }],
      }),
    ],
    [
      "farewell",
      { name: "string" },
      async ({ name }) => ({
        content: [{ type: "text", text: `Goodbye, ${name}!` }],
      }),
    ],
  ],

  // Define prompts
  prompts: [
    [
      "welcome",
      { name: "string", formality: { type: "string", default: "CASUAL" } },
      async ({ name, formality }) => {
        const text =
          formality === "FORMAL"
            ? `Dear ${name}, welcome to our service.`
            : `Hi ${name}! Welcome aboard!`;

        return {
          messages: [{ role: "assistant", content: { text } }],
        };
      },
      "A welcome prompt template",
    ],
  ],

  // Define resources
  resources: [
    [
      "docs/readme",
      async () => ({
        contents: [
          {
            uri: "docs/readme",
            text: "This is the documentation readme file.",
          },
        ],
      }),
    ],
  ],
});

// Connect to a transport
await server.connect(transport);

API Reference

MCPDeclarativeServer

new MCPDeclarativeServer(options);
Options
  • name (string): The name of the server
  • version (string): The version of the server
  • tools (array): An array of tool definitions
  • prompts (array): An array of prompt definitions
  • resources (array): An array of resource definitions
Tool Definition Format
[
  name, // string: name of the tool
  paramSchema, // object: parameter schema
  handler, // function: async function to handle the tool call
  description, // string (optional): description of the tool
];
Prompt Definition Format
[
  name, // string: name of the prompt
  paramSchema, // object: parameter schema
  handler, // function: async function to handle the prompt
  description, // string (optional): description of the prompt
];
Resource Definition Format
[
  uri, // string: URI of the resource
  handler, // function: async function to handle the resource request
];

License

ISC