Skip to main content
POST
/
projects
/
{projectId}
/
servers
/
{serverId}
/
resources
/
read
Read a resource
curl --request POST \
  --url https://app.mcpjam.com/api/v1/projects/{projectId}/servers/{serverId}/resources/read \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "uri": "file:///readme.md"
}
'
import requests

url = "https://app.mcpjam.com/api/v1/projects/{projectId}/servers/{serverId}/resources/read"

payload = { "uri": "file:///readme.md" }
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
const options = {
  method: 'POST',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: JSON.stringify({uri: 'file:///readme.md'})
};

fetch('https://app.mcpjam.com/api/v1/projects/{projectId}/servers/{serverId}/resources/read', options)
  .then(res => res.json())
  .then(res => console.log(res))
  .catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
  CURLOPT_URL => "https://app.mcpjam.com/api/v1/projects/{projectId}/servers/{serverId}/resources/read",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => json_encode([
    'uri' => 'file:///readme.md'
  ]),
  CURLOPT_HTTPHEADER => [
    "Authorization: Bearer <token>",
    "Content-Type: application/json"
  ],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://app.mcpjam.com/api/v1/projects/{projectId}/servers/{serverId}/resources/read"

	payload := strings.NewReader("{\n  \"uri\": \"file:///readme.md\"\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Authorization", "Bearer <token>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.post("https://app.mcpjam.com/api/v1/projects/{projectId}/servers/{serverId}/resources/read")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"uri\": \"file:///readme.md\"\n}")
  .asString();
require 'uri'
require 'net/http'

url = URI("https://app.mcpjam.com/api/v1/projects/{projectId}/servers/{serverId}/resources/read")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"uri\": \"file:///readme.md\"\n}"

response = http.request(request)
puts response.read_body
{ "contents": [ { "uri": "<string>", "mimeType": "<string>", "text": "<string>", "blob": "<string>" } ] }

Authorizations

Authorization
string
header
required

MCPJam API key (sk_…). Create one at Settings → API keys. Guest sessions cannot use the API, and API keys cannot manage other API keys.

Path Parameters

projectId
string
required

ID of the hosted project that contains the server.

serverId
string
required

ID of the server inside the project.

Body

application/json
uri
string
required

The resource URI, exactly as returned by the resources list.

Example:

"file:///readme.md"

Response

The resource contents.

MCP read-resource result.

contents
object[]
required