Not able to fetch result for jira_search request #349
Replies: 1 comment 1 reply
-
Hi @pushkar1923, Thanks for sharing your detailed setup process! Looking at your error logs, I think I see the issue with your JSON-RPC request format. The error suggests that the MCP server is expecting a different request structure than what you're sending. When calling tools like Try modifying your payload to this structure: {
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "jira_search",
"arguments": { "jql": "project = <Project_name>" }
},
"id": 1
} The key differences are:
This should align with how the MCP protocol expects tool calls to be formatted. I haven't tested this specific configuration myself, but based on the error messages, this approach seems worth trying. Let us know if this works for you! |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
I have followed the README file here (https://github.com/sooperset/mcp-atlassian) to start a mcp server by pulling the image and starting a docker container which is running on port 8000.
[Command to start docker container ->
docker run --rm -p 8000:8000 \ -e JIRA_URL=https://<my-company-name>.atlassian.net \ -e JIRA_USERNAME=<my-email-id>@<my-company-name>.com \ -e JIRA_API_TOKEN=*** \ ghcr.io/sooperset/mcp-atlassian:latest \ --transport sse --port 8000 -vv
]
My server has started. I pinged on - http://localhost:8000/sse to get the session_id (dummy_id below).
Result -
event: endpoint data: /messages/?session_id=12345
I used this session id to make a call from postman to fetch result for tool jira_search
curl --location 'http://localhost:8000/messages/?session_id=12345' \ --header 'Content-Type: application/json' \ --data '{ "jsonrpc": "2.0", "method": "jira_search", "params": { "jql": "project = <Project_name>" }, "id": 1 }'
I am getting the following error for this POST call -
`DEBUG - mcp.server.sse - Handling POST message
DEBUG - mcp.server.sse - Parsed session ID: 0341ef3b-fde3-4977-ac5f-bfb2815a934b
DEBUG - mcp.server.sse - Received JSON: {'jsonrpc': '2.0', 'method': 'jira_search', 'params': {'jql': 'project = <Project_name>'}, 'id': 1}
DEBUG - mcp.server.sse - Validated client message: root=JSONRPCRequest(method='jira_search', params={'jql': 'project = <Project_name>'}, jsonrpc='2.0', id=1)
DEBUG - mcp.server.sse - Sending message to writer: root=JSONRPCRequest(method='jira_search', params={'jql': 'project = <Project_name>'}, jsonrpc='2.0', id=1)
INFO: 172.17.0.1:65520 - "POST /messages/?session_id=0341ef3bfde34977ac5fbfb2815a934b HTTP/1.1" 202 Accepted
ERROR: Exception in ASGI application
| File "/app/.venv/lib/python3.10/site-packages/mcp/server/sse.py", line 131, in connect_sse
| yield (read_stream, write_stream)
| File "/app/.venv/lib/python3.10/site-packages/mcp_atlassian/server.py", line 2488, in handle_sse
| await app.run(
| File "/app/.venv/lib/python3.10/site-packages/mcp/server/lowlevel/server.py", line 484, in run
| async with AsyncExitStack() as stack:
| File "/usr/local/lib/python3.10/contextlib.py", line 714, in aexit
| raise exc_details[1]
| File "/usr/local/lib/python3.10/contextlib.py", line 217, in aexit
| await self.gen.athrow(typ, value, traceback)
| File "/app/.venv/lib/python3.10/site-packages/mcp_atlassian/server.py", line 188, in server_lifespan
| yield AppContext(confluence=confluence, jira=jira)
| File "/usr/local/lib/python3.10/contextlib.py", line 697, in aexit
| cb_suppress = await cb(*exc_details)
| File "/app/.venv/lib/python3.10/site-packages/mcp/shared/session.py", line 197, in aexit
| return await self._task_group.aexit(exc_type, exc_val, exc_tb)
| File "/app/.venv/lib/python3.10/site-packages/anyio/_backends/_asyncio.py", line 767, in aexit
| raise BaseExceptionGroup(
| exceptiongroup.ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
+-+---------------- 1 ----------------
| Traceback (most recent call last):
| File "/app/.venv/lib/python3.10/site-packages/mcp/shared/session.py", line 292, in _receive_loop
| validated_request = self._receive_request_type.model_validate(
| File "/app/.venv/lib/python3.10/site-packages/pydantic/main.py", line 627, in model_validate
| return cls.pydantic_validator.validate_python(
| pydantic_core._pydantic_core.ValidationError: 24 validation errors for ClientRequest
| PingRequest.method
| Input should be 'ping' [type=literal_error, input_value='jira_search', input_type=str]
| For further information visit https://errors.pydantic.dev/2.10/v/literal_error
| InitializeRequest.method
| Input should be 'initialize' [type=literal_error, input_value='jira_search', input_type=str]
| For further information visit https://errors.pydantic.dev/2.10/v/literal_error
| InitializeRequest.params.protocolVersion
| Field required [type=missing, input_value={'jql': 'project = ThoughtSpot'}, input_type=dict]
| For further information visit https://errors.pydantic.dev/2.10/v/missing
| InitializeRequest.params.capabilities
| Field required [type=missing, input_value={'jql': 'project = ThoughtSpot'}, input_type=dict]
| For further information visit https://errors.pydantic.dev/2.10/v/missing
| InitializeRequest.params.clientInfo
| Field required [type=missing, input_value={'jql': 'project = ThoughtSpot'}, input_type=dict]
| For further information visit https://errors.pydantic.dev/2.10/v/missing
| CompleteRequest.method
| Input should be 'completion/complete' [type=literal_error, input_value='jira_search', input_type=str]
| For further information visit https://errors.pydantic.dev/2.10/v/literal_error
| CompleteRequest.params.ref
| Field required [type=missing, input_value={'jql': 'project = ThoughtSpot'}, input_type=dict]
| For further information visit https://errors.pydantic.dev/2.10/v/missing
| CompleteRequest.params.argument
| Field required [type=missing, input_value={'jql': 'project = ThoughtSpot'}, input_type=dict]
| For further information visit https://errors.pydantic.dev/2.10/v/missing
| SetLevelRequest.method
| Input should be 'logging/setLevel' [type=literal_error, input_value='jira_search', input_type=str]
| For further information visit https://errors.pydantic.dev/2.10/v/literal_error
| SetLevelRequest.params.level
| Field required [type=missing, input_value={'jql': 'project = ThoughtSpot'}, input_type=dict]
| For further information visit https://errors.pydantic.dev/2.10/v/missing
| GetPromptRequest.method
| Input should be 'prompts/get' [type=literal_error, input_value='jira_search', input_type=str]
| For further information visit https://errors.pydantic.dev/2.10/v/literal_error
| GetPromptRequest.params.name
| Field required [type=missing, input_value={'jql': 'project = ThoughtSpot'}, input_type=dict]
| For further information visit https://errors.pydantic.dev/2.10/v/missing
| ListPromptsRequest.method
| Input should be 'prompts/list' [type=literal_error, input_value='jira_search', input_type=str]
| For further information visit https://errors.pydantic.dev/2.10/v/literal_error
| ListResourcesRequest.method
| Input should be 'resources/list' [type=literal_error, input_value='jira_search', input_type=str]
| For further information visit https://errors.pydantic.dev/2.10/v/literal_error
| ListResourceTemplatesRequest.method
| Input should be 'resources/templates/list' [type=literal_error, input_value='jira_search', input_type=str]
| For further information visit https://errors.pydantic.dev/2.10/v/literal_error
| ReadResourceRequest.method
| Input should be 'resources/read' [type=literal_error, input_value='jira_search', input_type=str]
| For further information visit https://errors.pydantic.dev/2.10/v/literal_error
| ReadResourceRequest.params.uri
| Field required [type=missing, input_value={'jql': 'project = ThoughtSpot'}, input_type=dict]
| For further information visit https://errors.pydantic.dev/2.10/v/missing
| SubscribeRequest.method
| Input should be 'resources/subscribe' [type=literal_error, input_value='jira_search', input_type=str]
| For further information visit https://errors.pydantic.dev/2.10/v/literal_error
| SubscribeRequest.params.uri
| Field required [type=missing, input_value={'jql': 'project = ThoughtSpot'}, input_type=dict]
| For further information visit https://errors.pydantic.dev/2.10/v/missing
| UnsubscribeRequest.method
| Input should be 'resources/unsubscribe' [type=literal_error, input_value='jira_search', input_type=str]
| For further information visit https://errors.pydantic.dev/2.10/v/literal_error
| UnsubscribeRequest.params.uri
| Field required [type=missing, input_value={'jql': 'project = ThoughtSpot'}, input_type=dict]
| For further information visit https://errors.pydantic.dev/2.10/v/missing
| CallToolRequest.method
| Input should be 'tools/call' [type=literal_error, input_value='jira_search', input_type=str]
| For further information visit https://errors.pydantic.dev/2.10/v/literal_error
| CallToolRequest.params.name
| Field required [type=missing, input_value={'jql': 'project = ThoughtSpot'}, input_type=dict]
| For further information visit https://errors.pydantic.dev/2.10/v/missing
| ListToolsRequest.method
| Input should be 'tools/list' [type=literal_error, input_value='jira_search', input_type=str]
| For further information visit https://errors.pydantic.dev/2.10/v/literal_error
+------------------------------------
During handling of the above exception, another exception occurred:
| File "/app/.venv/lib/python3.10/site-packages/uvicorn/protocols/http/h11_impl.py", line 403, in run_asgi
| result = await app( # type: ignore[func-returns-value]
| File "/app/.venv/lib/python3.10/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in call
| return await self.app(scope, receive, send)
| File "/app/.venv/lib/python3.10/site-packages/starlette/applications.py", line 112, in call
| await self.middleware_stack(scope, receive, send)
| File "/app/.venv/lib/python3.10/site-packages/starlette/middleware/errors.py", line 187, in call
| raise exc
| File "/app/.venv/lib/python3.10/site-packages/starlette/middleware/errors.py", line 165, in call
| await self.app(scope, receive, _send)
| File "/app/.venv/lib/python3.10/site-packages/starlette/middleware/exceptions.py", line 62, in call
| await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
| File "/app/.venv/lib/python3.10/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
| raise exc
| File "/app/.venv/lib/python3.10/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
| await app(scope, receive, sender)
| File "/app/.venv/lib/python3.10/site-packages/starlette/routing.py", line 715, in call
| await self.middleware_stack(scope, receive, send)
| File "/app/.venv/lib/python3.10/site-packages/starlette/routing.py", line 735, in app
| await route.handle(scope, receive, send)
| File "/app/.venv/lib/python3.10/site-packages/starlette/routing.py", line 288, in handle
| await self.app(scope, receive, send)
| File "/app/.venv/lib/python3.10/site-packages/starlette/routing.py", line 76, in app
| await wrap_app_handling_exceptions(app, request)(scope, receive, send)
| File "/app/.venv/lib/python3.10/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
| raise exc
| File "/app/.venv/lib/python3.10/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
| await app(scope, receive, sender)
| File "/app/.venv/lib/python3.10/site-packages/starlette/routing.py", line 73, in app
| response = await f(request)
| File "/app/.venv/lib/python3.10/site-packages/mcp_atlassian/server.py", line 2485, in handle_sse
| async with sse.connect_sse(
| File "/usr/local/lib/python3.10/contextlib.py", line 217, in aexit
| await self.gen.athrow(typ, value, traceback)
| File "/app/.venv/lib/python3.10/site-packages/mcp/server/sse.py", line 123, in connect_sse
| async with anyio.create_task_group() as tg:
| File "/app/.venv/lib/python3.10/site-packages/anyio/_backends/_asyncio.py", line 767, in aexit
| raise BaseExceptionGroup(
| exceptiongroup.ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
+-+---------------- 1 ----------------
| Exception Group Traceback (most recent call last):
| File "/app/.venv/lib/python3.10/site-packages/mcp/server/sse.py", line 131, in connect_sse
| yield (read_stream, write_stream)
| File "/app/.venv/lib/python3.10/site-packages/mcp_atlassian/server.py", line 2488, in handle_sse
| await app.run(
| File "/app/.venv/lib/python3.10/site-packages/mcp/server/lowlevel/server.py", line 484, in run
| async with AsyncExitStack() as stack:
| File "/usr/local/lib/python3.10/contextlib.py", line 714, in aexit
| raise exc_details[1]
| File "/usr/local/lib/python3.10/contextlib.py", line 217, in aexit
| await self.gen.athrow(typ, value, traceback)
| File "/app/.venv/lib/python3.10/site-packages/mcp_atlassian/server.py", line 188, in server_lifespan
| yield AppContext(confluence=confluence, jira=jira)
| File "/usr/local/lib/python3.10/contextlib.py", line 697, in aexit
| cb_suppress = await cb(*exc_details)
| File "/app/.venv/lib/python3.10/site-packages/mcp/shared/session.py", line 197, in aexit
| return await self._task_group.aexit(exc_type, exc_val, exc_tb)
| File "/app/.venv/lib/python3.10/site-packages/anyio/_backends/_asyncio.py", line 767, in aexit
| raise BaseExceptionGroup(
| exceptiongroup.ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
+-+---------------- 1 ----------------
| Traceback (most recent call last):
| File "/app/.venv/lib/python3.10/site-packages/mcp/shared/session.py", line 292, in _receive_loop
| validated_request = self._receive_request_type.model_validate(
| File "/app/.venv/lib/python3.10/site-packages/pydantic/main.py", line 627, in model_validate
| return cls.pydantic_validator.validate_python(
| pydantic_core._pydantic_core.ValidationError: 24 validation errors for ClientRequest
| PingRequest.method
| Input should be 'ping' [type=literal_error, input_value='jira_search', input_type=str]
| For further information visit https://errors.pydantic.dev/2.10/v/literal_error
| InitializeRequest.method
| Input should be 'initialize' [type=literal_error, input_value='jira_search', input_type=str]
| For further information visit https://errors.pydantic.dev/2.10/v/literal_error
| InitializeRequest.params.protocolVersion
| Field required [type=missing, input_value={'jql': 'project = ThoughtSpot'}, input_type=dict]
| For further information visit https://errors.pydantic.dev/2.10/v/missing
| InitializeRequest.params.capabilities
| Field required [type=missing, input_value={'jql': 'project = ThoughtSpot'}, input_type=dict]
| For further information visit https://errors.pydantic.dev/2.10/v/missing
| InitializeRequest.params.clientInfo
| Field required [type=missing, input_value={'jql': 'project = ThoughtSpot'}, input_type=dict]
| For further information visit https://errors.pydantic.dev/2.10/v/missing
| CompleteRequest.method
| Input should be 'completion/complete' [type=literal_error, input_value='jira_search', input_type=str]
| For further information visit https://errors.pydantic.dev/2.10/v/literal_error
| CompleteRequest.params.ref
| Field required [type=missing, input_value={'jql': 'project = ThoughtSpot'}, input_type=dict]
| For further information visit https://errors.pydantic.dev/2.10/v/missing
| CompleteRequest.params.argument
| Field required [type=missing, input_value={'jql': 'project = ThoughtSpot'}, input_type=dict]
| For further information visit https://errors.pydantic.dev/2.10/v/missing
| SetLevelRequest.method
| Input should be 'logging/setLevel' [type=literal_error, input_value='jira_search', input_type=str]
| For further information visit https://errors.pydantic.dev/2.10/v/literal_error
| SetLevelRequest.params.level
| Field required [type=missing, input_value={'jql': 'project = ThoughtSpot'}, input_type=dict]
| For further information visit https://errors.pydantic.dev/2.10/v/missing
| GetPromptRequest.method
| Input should be 'prompts/get' [type=literal_error, input_value='jira_search', input_type=str]
| For further information visit https://errors.pydantic.dev/2.10/v/literal_error
| GetPromptRequest.params.name
| Field required [type=missing, input_value={'jql': 'project = ThoughtSpot'}, input_type=dict]
| For further information visit https://errors.pydantic.dev/2.10/v/missing
| ListPromptsRequest.method
| Input should be 'prompts/list' [type=literal_error, input_value='jira_search', input_type=str]
| For further information visit https://errors.pydantic.dev/2.10/v/literal_error
| ListResourcesRequest.method
| Input should be 'resources/list' [type=literal_error, input_value='jira_search', input_type=str]
| For further information visit https://errors.pydantic.dev/2.10/v/literal_error
| ListResourceTemplatesRequest.method
| Input should be 'resources/templates/list' [type=literal_error, input_value='jira_search', input_type=str]
| For further information visit https://errors.pydantic.dev/2.10/v/literal_error
| ReadResourceRequest.method
| Input should be 'resources/read' [type=literal_error, input_value='jira_search', input_type=str]
| For further information visit https://errors.pydantic.dev/2.10/v/literal_error
| ReadResourceRequest.params.uri
| Field required [type=missing, input_value={'jql': 'project = ThoughtSpot'}, input_type=dict]
| For further information visit https://errors.pydantic.dev/2.10/v/missing
| SubscribeRequest.method
| Input should be 'resources/subscribe' [type=literal_error, input_value='jira_search', input_type=str]
| For further information visit https://errors.pydantic.dev/2.10/v/literal_error
| SubscribeRequest.params.uri
| Field required [type=missing, input_value={'jql': 'project = ThoughtSpot'}, input_type=dict]
| For further information visit https://errors.pydantic.dev/2.10/v/missing
| UnsubscribeRequest.method
| Input should be 'resources/unsubscribe' [type=literal_error, input_value='jira_search', input_type=str]
| For further information visit https://errors.pydantic.dev/2.10/v/literal_error
| UnsubscribeRequest.params.uri
| Field required [type=missing, input_value={'jql': 'project = ThoughtSpot'}, input_type=dict]
| For further information visit https://errors.pydantic.dev/2.10/v/missing
| CallToolRequest.method
| Input should be 'tools/call' [type=literal_error, input_value='jira_search', input_type=str]
| For further information visit https://errors.pydantic.dev/2.10/v/literal_error
| CallToolRequest.params.name
| Field required [type=missing, input_value={'jql': 'project = ThoughtSpot'}, input_type=dict]
| For further information visit https://errors.pydantic.dev/2.10/v/missing
| ListToolsRequest.method
| Input should be 'tools/list' [type=literal_error, input_value='jira_search', input_type=str]
| For further information visit https://errors.pydantic.dev/2.10/v/literal_error
+------------------------------------
`
Can someone help me in resolving this issue I am facing.
Feel free to correct me in any of the above steps.
Beta Was this translation helpful? Give feedback.
All reactions