McpService
Class: McpService<T>
Defined in: packages/mcp/src/mcpservice.service.ts:150
MCP transport: exposes operations as Model Context Protocol tools and
models as resources, over Streamable HTTP (a Webda route) and stdio (webda mcp).
Webda Modda
Extends
OperationsTransport<T>
Type Parameters
T
T extends McpServiceParameters = McpServiceParameters
Constructors
Constructor
new McpService<
T>(name,params):McpService<T>
Defined in: packages/core/lib/services/service.d.ts:72
Service
Parameters
name
string
The name of the service
params
T
The parameters block define in the configuration file
Returns
McpService<T>
Inherited from
OperationsTransport<T>.constructor
Properties
_compiledCapabilities
protected_compiledCapabilities:Record<string,any>
Defined in: packages/core/lib/services/iservice.d.ts:39
Capabilities detected at compile-time from @WebdaCapability-tagged interfaces.
Populated during Service.resolve by reading the service's entry in
webda.module.json. Each key is a capability name (e.g., "request-filter"),
and the value is an empty object {} by default. Override getCapabilities
to provide capability-specific configuration or to conditionally disable capabilities.
See
getCapabilities
Inherited from
OperationsTransport._compiledCapabilities
[WEBDA_EVENTS]
[WEBDA_EVENTS]:
object
Defined in: packages/core/lib/services/service.d.ts:50
Set the Webda events here
Inherited from
OperationsTransport.[WEBDA_EVENTS]
authenticator
protectedauthenticator:McpAuthenticator
Defined in: packages/mcp/src/mcpservice.service.ts:155
evictTimer?
protectedoptionalevictTimer?:Timeout
Defined in: packages/mcp/src/mcpservice.service.ts:156
fingerprint
protectedfingerprint:string=""
Defined in: packages/mcp/src/mcpservice.service.ts:154
logger
protectedlogger:Logger
Defined in: packages/core/lib/services/service.d.ts:59
Logger with class context
Inherited from
OperationsTransport.logger
metrics?
protectedoptionalmetrics?:object
Defined in: packages/core/lib/services/service.d.ts:63
Get metrics
Inherited from
OperationsTransport.metrics
name
readonlyname:string
Defined in: packages/core/lib/services/iservice.d.ts:19
Inherited from
OperationsTransport.name
parameters
readonlyparameters:T
Defined in: packages/core/lib/services/iservice.d.ts:20
Inherited from
OperationsTransport.parameters
resourceRegistry?
protectedoptionalresourceRegistry?:ResourceRegistry
Defined in: packages/mcp/src/mcpservice.service.ts:152
sessions
protectedsessions:McpSessionManager
Defined in: packages/mcp/src/mcpservice.service.ts:153
stdioServers
protectedstdioServers:Server<{method:string;params?: {[key:string]:unknown;_meta?: {[key:string]:unknown;io.modelcontextprotocol/related-task?: {taskId:string; };progressToken?:string|number; }; }; }, {method:string;params?: {[key:string]:unknown;_meta?: {[key:string]:unknown;io.modelcontextprotocol/related-task?: {taskId:string; };progressToken?:string|number; }; }; }, {[key:string]:unknown;_meta?: {[key:string]:unknown;io.modelcontextprotocol/related-task?: {taskId:string; };progressToken?:string|number; }; }>[] =[]
Defined in: packages/mcp/src/mcpservice.service.ts:157
tools
protectedtools:ToolRegistry
Defined in: packages/mcp/src/mcpservice.service.ts:151
filterConfiguration?
staticoptionalfilterConfiguration?: (params) =>any
Defined in: packages/core/lib/services/iservice.d.ts:28
Create configuration set by the application on load
Parameters
params
any
Returns
any
Inherited from
OperationsTransport.filterConfiguration
Parameters
staticParameters: typeofServiceParameters
Defined in: packages/core/lib/services/service.d.ts:46
Service parameters
Inherited from
OperationsTransport.Parameters
Methods
__clean()
abstract__clean():Promise<void>
Defined in: packages/core/lib/services/service.d.ts:215
Clean the service data, can only be used in test mode
Returns
Promise<void>
Inherited from
OperationsTransport.__clean
addListener()
addListener<
Key>(eventName,listener):this
Defined in: packages/core/lib/events/asynceventemitter.d.ts:80
Type Parameters
Key
Key extends never
Parameters
eventName
Key
the event name
listener
(event) => void | Promise<void>
the event listener
Returns
this
this for chaining
See
EventEmitter.addListener
Inherited from
OperationsTransport.addListener
addRoute()
protectedaddRoute(url,methods,executer,openapi?,override?):void
Defined in: packages/core/lib/services/service.d.ts:177
Add a route dynamicaly
Parameters
url
string
of the route can contains dynamic part like {uuid}
methods
HttpMethodType[]
the HTTP methods
executer
Function
Method to execute for this route
openapi?
OpenAPIWebdaDefinition
the OpenAPI specification
override?
boolean
whether to override existing
Returns
void
Inherited from
OperationsTransport.addRoute
authorizeClientEvent()
authorizeClientEvent(
_event,_context):boolean
Defined in: packages/core/lib/services/service.d.ts:153
Authorize a public event subscription
Parameters
_event
string
the event name
_context
OperationContext
the execution context
Returns
boolean
true if the condition is met
Inherited from
OperationsTransport.authorizeClientEvent
checkForChanges()
checkForChanges():
void
Defined in: packages/mcp/src/mcpservice.service.ts:240
Detect runtime operation registration and notify open sessions
Returns
void
computeParameters()
computeParameters():
void
Defined in: packages/core/lib/services/service.d.ts:77
Used to compute or derivate input parameter to attribute
Returns
void
Deprecated
Inherited from
OperationsTransport.computeParameters
createHttpSession()
protectedcreateHttpSession(ctx,userId,requestOrigin?):Promise<McpSessionEntry>
Defined in: packages/mcp/src/mcpservice.service.ts:378
Create an SDK server + transport pair for a new MCP session
Parameters
ctx
WebContext
the initializing request
userId
string
caller user id
requestOrigin?
URL = ...
origin of the request (see requestOrigin)
Returns
Promise<McpSessionEntry>
the (not yet registered) session entry; it registers on initialize
createServer()
createServer(
getSession):Server
Defined in: packages/mcp/src/mcpservice.service.ts:254
Parameters
getSession
(extra) => Session
caller session resolution
Returns
Server
a new SDK server over this service's registries
emit()
emit<
Key>(event,data):Promise<void>
Defined in: packages/core/lib/services/service.d.ts:204
Emit the event with data and wait for Promise to finish if listener returned a Promise
Type Parameters
Key
Key extends never
Parameters
event
Key
the event name
data
object[Key]
the data to process
Returns
Promise<void>
Inherited from
OperationsTransport.emit
exposeOperation()
exposeOperation(
_operationId,_definition):void
Defined in: packages/mcp/src/mcpservice.service.ts:175
Tools are built in bulk by refreshRegistries
Parameters
_operationId
string
unused
_definition
OperationDefinition
unused
Returns
void
Overrides
OperationsTransport.exposeOperation
getCapabilities()
getCapabilities():
Record<string,any>
Defined in: packages/core/lib/services/iservice.d.ts:61
Return the capabilities of this service.
By default returns capabilities detected at compile-time from
Returns
Record<string, any>
the result
Webda Capability-tagged
interfaces in webda.module.json.
Override to disable capabilities based on configuration:
getCapabilities() {
const caps = super.getCapabilities();
if (!this.parameters.enabled) delete caps["request-filter"];
return caps;
}
Inherited from
OperationsTransport.getCapabilities
getClientEvents()
getClientEvents():
string[]
Defined in: packages/core/lib/services/service.d.ts:144
Return the events that an external system can subscribe to
Returns
string[]
the list of results
Inherited from
OperationsTransport.getClientEvents
getMaxListeners()
getMaxListeners():
number
Defined in: packages/core/lib/events/asynceventemitter.d.ts:84
Returns
number
Inherited from
OperationsTransport.getMaxListeners
getMetric()
getMetric<
T>(type,configuration):T
Defined in: packages/core/lib/services/service.d.ts:138
Add service name label
Type Parameters
T
T = Gauge<string> | Counter<string> | Histogram<string>
Parameters
type
CustomConstructor<T, [MetricConfiguration<T>]>
the type to look up
configuration
MetricConfiguration<T>
the configuration
Returns
T
the result
Inherited from
OperationsTransport.getMetric
getName()
getName():
string
Defined in: packages/core/lib/services/service.d.ts:209
Get service name
Returns
string
the result string
Inherited from
OperationsTransport.getName
getOpenApiReplacements()
getOpenApiReplacements():
any
Defined in: packages/core/lib/services/service.d.ts:182
Return variables for replacement in openapi
Returns
any
the result
Inherited from
OperationsTransport.getOpenApiReplacements
getOperationId()
getOperationId(
id):string
Defined in: packages/core/lib/services/service.d.ts:167
If undefined is returned it cancel the operation registration
Parameters
id
string
the identifier
Returns
string
the result
Inherited from
OperationsTransport.getOperationId
getOperations()
getOperations():
Record<string,OperationDefinition>
Defined in: packages/core/lib/services/operationstransport.d.ts:48
Get all registered operations, filtered by this transport's include/exclude config
Returns
Record<string, OperationDefinition>
filtered map of operation id to definition
Inherited from
OperationsTransport.getOperations
getParameters()
getParameters():
T
Defined in: packages/core/lib/services/service.d.ts:82
Get the service parameters
Returns
T
the result
Inherited from
OperationsTransport.getParameters
getService()
getService<
T>(name):ServicesMap[T]
Defined in: packages/core/lib/services/service.d.ts:131
Get a service by name
Type Parameters
T
T extends keyof ServicesMap
Parameters
name
T
the name to use
Returns
ServicesMap[T]
the result map
Deprecated
Use useService, might reconsider
Inherited from
OperationsTransport.getService
getState()
getState():
ServiceStates
Defined in: packages/core/lib/services/service.d.ts:55
Get the current state
Returns
ServiceStates
the result
Inherited from
OperationsTransport.getState
getUrl()
getUrl(
url,_methods):string
Defined in: packages/core/lib/services/service.d.ts:161
Return the full path url based on parameters
Parameters
url
string
relative url to service
_methods
HttpMethodType[]
in case we need filtering (like Store)
Returns
string
absolute url or undefined if need to skip the Route
Inherited from
OperationsTransport.getUrl
handleHttp()
handleHttp(
ctx):Promise<void>
Defined in: packages/mcp/src/mcpservice.service.ts:313
Handle GET/POST/DELETE on the MCP endpoint
Parameters
ctx
WebContext
the request context
Returns
Promise<void>
init()
init():
Promise<McpService<T>>
Defined in: packages/mcp/src/mcpservice.service.ts:198
Build registries, mount the HTTP route and start session eviction
Returns
Promise<McpService<T>>
this
Overrides
OperationsTransport.init
initMetrics()
initMetrics():
void
Defined in: packages/core/lib/services/service.d.ts:124
Init the metrics
Returns
void
Inherited from
OperationsTransport.initMetrics
initOperations()
initOperations():
void
Defined in: packages/core/lib/services/service.d.ts:186
Init the operations from
Returns
void
Operation
decorators on this service
Inherited from
OperationsTransport.initOperations
initTransport()
protectedinitTransport():void
Defined in: packages/core/lib/services/operationstransport.d.ts:57
Walk the filtered operations and call exposeOperation for each non-hidden one
Returns
void
Inherited from
OperationsTransport.initTransport
isHostAllowed()
protectedisHostAllowed(ctx):boolean
Defined in: packages/mcp/src/mcpservice.service.ts:296
DNS-rebinding guard: the request hostname must be in allowedHosts
Parameters
ctx
WebContext
the request context
Returns
boolean
true when the host is accepted
listeners()
listeners(
eventName):Function[]
Defined in: packages/core/lib/events/asynceventemitter.d.ts:139
Get all listeners for an event
Parameters
eventName
never
the event name
Returns
Function[]
the list of results
Inherited from
OperationsTransport.listeners
loadCapabilities()
protectedloadCapabilities():void
Defined in: packages/core/lib/services/service.d.ts:120
Load capabilities from webda.module.json metadata into _compiledCapabilities.
Called during resolve after dependency injection. Reads the service's
type name from parameters, looks it up in the application's module metadata
(moddas or beans section), and populates _compiledCapabilities with an
empty object for each declared capability name.
Fails silently if the application is not available (e.g., in unit tests where services are instantiated without a full application context).
Returns
void
Example
// If webda.module.json contains:
// { "moddas": { "MyApp/HawkService": { "capabilities": ["request-filter", "cors-filter"] } } }
// Then after resolve(), this.getCapabilities() returns:
// { "request-filter": {}, "cors-filter": {} }
See
getCapabilities
Inherited from
OperationsTransport.loadCapabilities
log()
log(
level, ...args):void
Defined in: packages/core/lib/services/service.d.ts:226
Parameters
level
WorkerLogLevel
to log
args
...any[]
additional arguments
Returns
void
Inherited from
OperationsTransport.log
mcp()
mcp(
user?):Promise<void>
Defined in: packages/mcp/src/mcpservice.service.ts:410
Serve the MCP tools over stdio until stdin closes
Anyone able to start this command acts with user's permissions
(or anonymous permissions when no user is given).
Parameters
user?
string = ""
user id whose permissions apply
Returns
Promise<void>
off()
off<
Key>(eventName,listener):this
Defined in: packages/core/lib/events/asynceventemitter.d.ts:116
Type Parameters
Key
Key extends never
Parameters
eventName
Key
the event name
listener
(event) => void
the event listener
Returns
this
this for chaining
See
EventEmitter.off
Inherited from
OperationsTransport.off
on()
on<
Key>(eventName,listener):this
Defined in: packages/core/lib/events/asynceventemitter.d.ts:102
Type Parameters
Key
Key extends never
Parameters
eventName
Key
the event name
listener
(event) => void
the event listener
Returns
this
this for chaining
See
EventEmitter.once
Inherited from
OperationsTransport.on
once()
once<
Key>(eventName,listener):this
Defined in: packages/core/lib/events/asynceventemitter.d.ts:95
Type Parameters
Key
Key extends never
Parameters
eventName
Key
the event name
listener
(event) => void
the event listener
Returns
this
this for chaining
See
EventEmitter.once
Inherited from
OperationsTransport.once
refreshRegistries()
refreshRegistries():
boolean
Defined in: packages/mcp/src/mcpservice.service.ts:225
Rebuild tool and resource registries when operations changed
Returns
boolean
true when they were rebuilt
removeAllListeners()
removeAllListeners<
Key>(eventName?):this
Defined in: packages/core/lib/events/asynceventemitter.d.ts:122
Type Parameters
Key
Key extends never
Parameters
eventName?
Key
the event name
Returns
this
this for chaining
See
EventEmitter.removeAllListeners
Inherited from
OperationsTransport.removeAllListeners
removeListener()
removeListener<
Key>(eventName,listener):this
Defined in: packages/core/lib/events/asynceventemitter.d.ts:109
Type Parameters
Key
Key extends never
Parameters
eventName
Key
the event name
listener
(event) => void
the event listener
Returns
this
this for chaining
See
EventEmitter.removeListener
Inherited from
OperationsTransport.removeListener
requestOrigin()
protectedrequestOrigin(ctx):URL
Defined in: packages/mcp/src/mcpservice.service.ts:277
Origin (protocol + host[:port]) of a request, from the x-forwarded-host header
when present (HttpServer rejects forwarded headers from untrusted sources) or
the host header. Parsed here rather than via HttpContext.getAbsoluteUrl,
which cannot represent IPv6 literals like [::1]:18080.
Parameters
ctx
WebContext
the request context
Returns
URL
the parsed origin, or undefined when the host is missing or invalid
resolve()
resolve():
this
Defined in: packages/mcp/src/mcpservice.service.ts:180
Returns
this
this once the authenticator is resolved
Overrides
OperationsTransport.resolve
serveStdio()
serveStdio(
transport,user?):Promise<Server<{method:string;params?: {[key:string]:unknown;_meta?: {[key:string]:unknown;io.modelcontextprotocol/related-task?: {taskId:string; };progressToken?:string|number; }; }; }, {method:string;params?: {[key:string]:unknown;_meta?: {[key:string]:unknown;io.modelcontextprotocol/related-task?: {taskId:string; };progressToken?:string|number; }; }; }, {[key:string]:unknown;_meta?: {[key:string]:unknown;io.modelcontextprotocol/related-task?: {taskId:string; };progressToken?:string|number; }; }>>
Defined in: packages/mcp/src/mcpservice.service.ts:430
Connect a new MCP server to a transport, acting as user
Parameters
transport
Transport
stdio (or any) transport
user?
string
user id whose permissions apply; anonymous when empty
Returns
Promise<Server<{ method: string; params?: {[key: string]: unknown; _meta?: {[key: string]: unknown; io.modelcontextprotocol/related-task?: { taskId: string; }; progressToken?: string | number; }; }; }, { method: string; params?: {[key: string]: unknown; _meta?: {[key: string]: unknown; io.modelcontextprotocol/related-task?: { taskId: string; }; progressToken?: string | number; }; }; }, {[key: string]: unknown; _meta?: {[key: string]: unknown; io.modelcontextprotocol/related-task?: { taskId: string; }; progressToken?: string | number; }; }>>
the connected server
setMaxListeners()
setMaxListeners(
n):this
Defined in: packages/core/lib/events/asynceventemitter.d.ts:88
Parameters
n
number
Returns
this
Inherited from
OperationsTransport.setMaxListeners
stop()
stop():
Promise<void>
Defined in: packages/mcp/src/mcpservice.service.ts:448
Stop eviction and close every MCP session
Returns
Promise<void>
Overrides
OperationsTransport.stop
toJSON()
toJSON():
string
Defined in: packages/core/lib/services/service.d.ts:191
Prevent service to be serialized
Returns
string
the result
Inherited from
OperationsTransport.toJSON
toString()
toString():
string
Defined in: packages/core/lib/services/service.d.ts:91
Return service representation
Returns
string
the result
Inherited from
OperationsTransport.toString
createConfiguration()
staticcreateConfiguration(params?):McpServiceParameters
Defined in: packages/mcp/src/mcpservice.service.ts:166
Build typed parameters with defaults. Application replaces this with the
webda.module.json Configuration class (the same McpServiceParameters);
it is defined here so the service also works when registered by hand.
Parameters
params?
any = {}
raw parameters
Returns
typed parameters
Overrides
OperationsTransport.createConfiguration