The 39-year-old, who made three appearances at the recent World Cup, passed a medical with the npower Championship side on Friday morning.
James, who left Portsmouth following their relegation from the Premier League, also has the option of remaining at Ashton Gate for a further year.
James, who will be paraded at Ashton Gate on Saturday prior to City's pre-season friendly against Blackpool, said: "I've had offers to stay in the Premier League but it is more important that I play football - which I love - for the right club and be a family man.
"I had a long conversation with the chairman Steve Lansdown yesterday (Thursday) and I liked what he said about the club and his ambition. I know all about the plans for a new stadium and desire to win promotion to the Premier League.
"The club is ambitious and that's what I am. The south west has not had a club in the Premier League and that needs to change."
Lansdown was delighted to pull off such a major coup for the club and added: "I'm delighted David James has agreed to sign.
"My ambition is for this football club to play at the highest level - the Premier League - and in the best surroundings, hence the work on the training ground and new stadium.
"We need good quality players to make that happen and that's why I'm thrilled that David has agreed to come on board."
Source: PA
Source: PA