issue: Reference MCP Server (elasticsearch) not compatible with mcpo #236
dmytryk-here
started this conversation in
General
Replies: 1 comment
-
|
Ran into a similar issue testing Codex. Codex (OpenAI CLI) needs an RMCP (streamable HTTP) MCP endpoint, not OpenAPI. It sends the MCP initialize JSON-RPC to the base URL; MCPO returns 404, so handshake fails. |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Check Existing Issues
I have searched the existing issues and discussions.
I am using the latest version of mcpo.
mcpo Version
v0.0.17
hi all,
I'm trying to run elasticsearch mcp (https://github.com/elastic/mcp-server-elasticsearch) in mcpo, using streaming http. for some reason mcpo openapi.json, doesn't return proper tools description. connecting to the same elasticsearch mcp, using mcp inspector works as expected. here are the outputs:
curl -L http://localhost:3010/elasticsearch/openapi.json {"openapi":"3.1.0","info":{"title":"elasticsearch","description":"elasticsearch MCP Server\n\n- [back to tool list](/docs)","version":"1.0"},"servers":[{"url":"/elasticsearch"}],"paths":{}}while mcp inspector returns a proper tool list:
search Perform an Elasticsearch search with the provided query DSL. esql Perform an Elasticsearch ES|QL query. list_indices List all available Elasticsearch indices get_shards Get shard information for all or specific indices. get_mappings Get field mappings for a specific Elasticsearch indexhere is the log of the elasticsearch mcp container, when using mcp inspector:
elasticsearch-1 | 2025-08-21T08:56:36.568277Z INFO rmcp::transport::streamable_http_server::tower: Response(JsonRpcResponse { jsonrpc: JsonRpcVersion2_0, id: Number(6), result: ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "search", description: Some("Perform an Elasticsearch search with the provided query DSL."), input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"fields": Object {"description": String("Name of the fields that need to be returned (optional)"), "items": Object {"type": String("string")}, "nullable": Bool(true), "type": String("array")}, "index": Object {"description": String("Name of the Elasticsearch index to search"), "type": String("string")}, "query_body": Object {"additionalProperties": Bool(true), "description": String("Complete Elasticsearch query DSL object that can include query, size, from, sort, etc."), "type": String("object")}}, "required": Array [String("index"), String("query_body")], "title": String("SearchParams"), "type": String("object")}, annotations: Some(ToolAnnotations { title: Some("Elasticsearch search DSL query"), read_only_hint: Some(true), destructive_hint: None, idempotent_hint: None, open_world_hint: None }) }, Tool { name: "esql", description: Some("Perform an Elasticsearch ES|QL query."), input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"query": Object {"description": String("Complete Elasticsearch ES|QL query"), "type": String("string")}}, "required": Array [String("query")], "title": String("EsqlQueryParams"), "type": String("object")}, annotations: Some(ToolAnnotations { title: Some("Elasticsearch ES|QL query"), read_only_hint: Some(true), destructive_hint: None, idempotent_hint: None, open_world_hint: None }) }, Tool { name: "list_indices", description: Some("List all available Elasticsearch indices"), input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"index_pattern": Object {"description": String("Index pattern of Elasticsearch indices to list"), "type": String("string")}}, "required": Array [String("index_pattern")], "title": String("ListIndicesParams"), "type": String("object")}, annotations: Some(ToolAnnotations { title: Some("List ES indices"), read_only_hint: Some(true), destructive_hint: None, idempotent_hint: None, open_world_hint: None }) }, Tool { name: "get_shards", description: Some("Get shard information for all or specific indices."), input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"index": Object {"description": String("Optional index name to get shard information for"), "nullable": Bool(true), "type": String("string")}}, "title": String("GetShardsParams"), "type": String("object")}, annotations: Some(ToolAnnotations { title: Some("Get ES shard information"), read_only_hint: Some(true), destructive_hint: None, idempotent_hint: None, open_world_hint: None }) }, Tool { name: "get_mappings", description: Some("Get field mappings for a specific Elasticsearch index"), input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"index": Object {"description": String("Name of the Elasticsearch index to get mappings for"), "type": String("string")}}, "required": Array [String("index")], "title": String("GetMappingsParams"), "type": String("object")}, annotations: Some(ToolAnnotations { title: Some("Get ES index mappings"), read_only_hint: Some(true), destructive_hint: None, idempotent_hint: None, open_world_hint: None }) }] }) })What can be the reason for this?
Beta Was this translation helpful? Give feedback.
All reactions